ajouter des mots à une liste sous vb excel
Répondre à la discussion
Affichage des résultats 1 à 16 sur 16

ajouter des mots à une liste sous vb excel



  1. #1
    invited4acd8f2

    ajouter des mots à une liste sous vb excel


    ------

    Bonjour,

    Alors j'ai un problème, je m'explique, en fait j'ai créer un useform avec une zone de texte et un bouton de commande. En fait, j'aimerai que chaque mot que j'entre s'ajoute les uns en dessous des autres sur excel( en A1 ... A2....)
    Pour l'instant :
    Code:
    Private Sub CommandButton1_Click()
       Dim cpt as integer
       cpt = 1
       If Range("A1").Value = "" Then
        Range("A1").Value = Texte.Value
       Else
        Range("A1").Offset(cpt, 0).Value = Texte.Value
       End if
    End Sub
    Ceci ca ne marche pas, je pense que l'offset est nécessaire pour décaler la cellule. Je pense qu'il faut un For....

    Merci

    -----

  2. #2
    invite1445654e

    Re : ajouter des mots à une liste sous vb excel

    Citation Envoyé par johnjrambo Voir le message
    Bonjour,

    Alors j'ai un problème, je m'explique, en fait j'ai créer un useform avec une zone de texte et un bouton de commande. En fait, j'aimerai que chaque mot que j'entre s'ajoute les uns en dessous des autres sur excel( en A1 ... A2....)
    Pour l'instant :
    Code:
    Private Sub CommandButton1_Click()
       Dim cpt as integer
       cpt = 1
       If Range("A1").Value = "" Then
        Range("A1").Value = Texte.Value
       Else
        Range("A1").Offset(cpt, 0).Value = Texte.Value
       End if
    End Sub
    Ceci ca ne marche pas, je pense que l'offset est nécessaire pour décaler la cellule. Je pense qu'il faut un For....

    Merci
    pourquoi tu construit pas a chaque fois la valeur de la chaine que tu mets via Range
    en gros tu as Range("A"+cpt) un truc de ce genre ...
    et puis aussi je vois pas d'incrementation de ton cpt il est toujours a un ....

  3. #3
    invited4acd8f2

    Re : ajouter des mots à une liste sous vb excel

    Déjà merci de ta réponse,

    Alors oui en effet j'ai oublié le cpt = cpt + 1 à la fin.
    La j'arrive à ca:
    Code:
    Private Sub CommandButton1_Click()
       Dim cpt As Integer
       cpt = 1
       If Range("A" & cpt).Value = "" Then
        Range("A" & cpt).Value = Texte.Value
       Else
        Range("A" & cpt).Offset(1, 0).Value = Texte.Value
       End If
       cpt = cpt + 1
    End Sub
    En fait, ca ne marche que pour les deux premiers, le troisième mot que je tape prend la place du second. J'ai essayé de supprime l'offset mais même problème, je pense qu'il repart de A1 à chaque fois

  4. #4
    invite1445654e

    Re : ajouter des mots à une liste sous vb excel

    Citation Envoyé par johnjrambo Voir le message
    Déjà merci de ta réponse,

    Alors oui en effet j'ai oublié le cpt = cpt + 1 à la fin.
    La j'arrive à ca:
    Code:
    Private Sub CommandButton1_Click()
       Dim cpt As Integer
       cpt = 1
       If Range("A" & cpt).Value = "" Then
        Range("A" & cpt).Value = Texte.Value
       Else
        Range("A" & cpt).Offset(1, 0).Value = Texte.Value
       End If
       cpt = cpt + 1
    End Sub
    En fait, ca ne marche que pour les deux premiers, le troisième mot que je tape prend la place du second. J'ai essayé de supprime l'offset mais même problème, je pense qu'il repart de A1 à chaque fois
    regarde ton code quand tu appuies sur ton bouton qu'est ce qu'il y a sur la premiere ligne tu mets cpt à 1
    j'aurais fait comme code
    Code:
    Private Sub CommandButton1_Click()
       Dim cpt As Integer
      
       If Range("A" & cpt).Value = "" Then
         cpt = 1
        Range("A" & cpt).Value = Texte.Value
       Else
         cpt = cpt + 1
        Range("A" & cpt).Offset(1, 0).Value = Texte.Value
       End If
      
    End Sub

  5. A voir en vidéo sur Futura
  6. #5
    invite1445654e

    Re : ajouter des mots à une liste sous vb excel

    mais j'ai du mal avec ta logique
    tu veux qu'a chaque clique de bouton
    au fur et a mesure tu as a1 a2 a3 de renseigné
    pourquoi tu declares pas ta variable en variable globale et que tu initialises à 0
    et tu aurais qu'a faire
    cpt=cpt+1
    Range("A" & cpt).Value = Texte.Value
    mais si tu veux que ton compteur soit une variable locale
    tu peux tester si ta variable est initialisée ou pas pour tester la premiere fois

  7. #6
    invited4acd8f2

    Re : ajouter des mots à une liste sous vb excel

    Non en fait, j'ai créer un useform avec une zone de texte un et un bouton, donc en fait j'ai fait un bouton, quand je clic dessus, ca ouvre la boite de dialogue(le useform), et je voudrais que le texte que je rentre(dans la zone texte) se place successivement les uns en dessous des autres.
    exemple je tape: chien , chien s'écrit en A2, je tape chat, chat s'écrit en A3 vu que A2 est rempli ...
    la boite de dialogue sert à ajouter le texte .. je sais pas si c'est très clair.

  8. #7
    invite8666d089

    Re : ajouter des mots à une liste sous vb excel

    Le code suivant devrait fonctionner :

    Code:
    Private Sub CommandButton1_Click()
      Dim Compteur As Integer
      Dim Contenu As String
      
      Do
        Compteur = Compteur + 1
        Contenu = Range("A" & Trim(Str(Compteur)))
      Loop Until Contenu = ""
      Range("A" & Trim(Str(Compteur))) = TextBox1.Text
    End Sub

  9. #8
    invited4acd8f2

    Re : ajouter des mots à une liste sous vb excel

    Merci, mais il n'y a aucun moyen pour le faire avec Range, Offset, (un for) ainsi qu'un compteur ? A la base je voulais le faire comme ca

  10. #9
    invite8666d089

    Re : ajouter des mots à une liste sous vb excel

    C'est étrange, parce que chez moi ça marche. Et même très bien avec Range. A condition, bien sûr que la TextBox ait le même nom.

  11. #10
    invited4acd8f2

    Re : ajouter des mots à une liste sous vb excel

    Oui pas de souci ton programme marche, mais je parlais de le faire qu'avec Range.value , le offset ( pour décaler la cellule), car remonte un peu dans le code je pense qu'on était pas loin.

  12. #11
    invited4acd8f2

    Re : ajouter des mots à une liste sous vb excel

    Code:
    Private Sub CommandButton1_Click()
       Dim cpt As Integer
       cpt = 1
       If Range("A" & cpt).Value = "" Then
        Range("A" & cpt).Value = Texte.Value
       Else
        Range("A" & cpt).Offset(1, 0).Value = Texte.Value
       End If
       cpt = cpt + 1
    End Sub
    Ca marchait pour les 2 premieres cellules, mais ensuite a partir du 3e ca remplacait la 2e cellule, je pense qu'il manque juste un for ... mais pas moyen

  13. #12
    bzh_nicolas

    Re : ajouter des mots à une liste sous vb excel

    Un for n'est pas du tout adapté dans ce cas. La boucle for demande un nombre connu d'itération qui peut-être soit une valeur "écrite" :
    Code:
    For i=0 to 12
    par exemple.
    Ou une valeur donnée par une variable
    Code:
    For i=0 to nombre_d_iteration
    Sinon tu es obligé de sortir de ta boucle avec une instruction "Exit For" ce qui n'est pas très propre...
    Ici si tu veux coder proprement avec un for il faut d'abord compter le nombre d'itération (avec une boucle do...while, pas très intéressant au niveau des temps d'exécution.

    Après si tu veux vraiment utilisé offset tu peux faire (attention pompage de code ) :
    Code:
    Private Sub CommandButton1_Click()
      Dim Compteur As Integer
      Dim Contenu As String
      
      Compteur = -1
      Do
        Compteur = Compteur + 1
        Contenu = Range("A1").Offset(Compteur, 0).value
      Loop Until Contenu = ""
      Range("A1").Offset(Compteur, 0).Value = TextBox1.Text
    End Sub
    Maintenant si tu veux programmer comme un cochon :
    Code:
    Private Sub CommandButton1_Click()
      Dim Compteur As Long
            
      For Compteur = 0 To 65536 'pour pouvoir couvrir toutes les cellules d'une feuille excel
        If (Range("A1").Offset(Compteur, 0).Value = "") Then
          Range("A1").Offset(Compteur, 0).Value = TextBox1.Text
          Exit For 'ce genre d'instruction est à éviter autant que possible...
        End If
      Next
    End Sub
    La première solution fait des appels inutiles à offset (et donc dois surement rendre l'exécution plus lente), la seconde fait des appels inutiles à offset et n'est pas propre.
    Maintenant à toi de voir...

  14. #13
    invited4acd8f2

    Re : ajouter des mots à une liste sous vb excel

    Merci beaucoup, je ne connaissais pas le DO - Loop until et ca a l'air tres pratique

  15. #14
    invited4acd8f2

    Re : ajouter des mots à une liste sous vb excel

    Par contre dans ton 2ème code, j'ai un peu plus de mal à comprendre le principe:
    Code:
    Private Sub CommandButton1_Click()
      Dim Compteur As Long
            
      For Compteur = 0 To 65536 'pour pouvoir couvrir toutes les cellules d'une feuille excel
        If (Range("A1").Offset(Compteur, 0).Value = "") Then
          Range("A1").Offset(Compteur, 0).Value = TextBox1.Text
          Exit For 'ce genre d'instruction est à éviter autant que possible...
        End If
      Next
    End Sub
    C'est le Exit for qui sert de boucle ? ca sert a annuler le For ?

  16. #15
    bzh_nicolas

    Re : ajouter des mots à une liste sous vb excel

    Citation Envoyé par johnjrambo Voir le message
    Par contre dans ton 2ème code, j'ai un peu plus de mal à comprendre le principe:

    C'est le Exit for qui sert de boucle ? ca sert a annuler le For ?
    Pour le premier exemple, je n'ai fait que reprendre le code de Dormeur74 en accédant à la cellule par la méthode offset au lieu de faire un accès direct.

    Dans le second code, Exit For sert à forcer la sortie de la boucle For sans attendre que ton indice de boucle est parcouru toutes les valeurs (ici de 0 à 65536).
    J'aurais pu me passer de cette instruction, mais alors à chaque clic sur le bouton, la macro aurait parcouru toutes les cellules de la 1ère colonne (tu peux commenter la ligne Exit For, pour voir ce que ça donne à l'exécution). Là elle s'arrête dès qu'elle a trouvé la cellule où il faut écrire.
    Ce genre de code est à éviter car il rend le code plus difficilement lisible et peu amener à des difficultés de débogage. Ces inconvénients augmentent au fur et à mesure que la complexité du code augmente (là c'est un cas simple donc ça va).
    Dernière modification par bzh_nicolas ; 04/06/2011 à 08h03.

  17. #16
    invite8666d089

    Re : ajouter des mots à une liste sous vb excel

    C'est le Exit for qui sert de boucle ? ca sert a annuler le For ?
    Oui, le Exit For sert à sortir d'une boucle For...Next lorsqu'on ne connaît pas le nombre d'itérations, comme te l'a dit bzh_nicolas. Personnellement, je n'aime pas du tout les sorties en force de ce type. Je préfère de loin While...Wend et Do...Loop Until. A résultat égal, le code est beaucoup plus intelligible.

    Maintenant, si tu veux faire très rapide pour n'avoir pas à scanner la totalité de la colonne A pour trouver une cellule vide, tu as toujours la solution qui consiste à mémoriser le numéro de la dernière ligne utilisée dans la cellule de ton choix ou dans un fichier texte externe.

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/08/2010, 09h55
  2. Comment cacher une liste d'email dans Excel ?
    Par invite0dfd05ca dans le forum Internet - Réseau - Sécurité générale
    Réponses: 5
    Dernier message: 26/09/2008, 15h54
  3. Creer une liste sur mathématica à partir d'un fichier excel
    Par invite30fe8374 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 30/05/2008, 17h04
  4. Comment intégrer des données sous Excel dans un StringGrid sous C++ Builder ?
    Par invite386d297b dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 29/05/2007, 11h56