Concatenation

Résolu
Bonjour,

j'ai un probleme mon code ne fais pas tout a fais ce que je veux.

voila mon code

Sub tes()

Dim i As Long

Dim j As Long

Limite = Range("A65536").End(xlDown).Row

Mide = Worksheets("Feuil2").Cells(Rows.Count, 1).End(xlDown).Row

For i = 1 To Limite

If Left(Cells(i, 1).Value, 2) = "aa" Then

For j = 1 To Mide

Sheets("Feuil1").Cells(i, 1).Value = Sheets("Feuil1").Cells(i, 1).Value & Sheets("Feuil2").Cells(j, 1).Value

Next j

End If

Next i

End Sub

quelqu'un pourrais t'il m'aider a l'arranger car je veux que il prenne un seul et unique numero de matricule qu'il concateneras avec le premier nom trouver remplissant la condition du code c'est a dire:

If Left(Cells(i, 1).Value, 2) = "aa" Then

et ainsi de suite.

je joins a mon message un fichier avec le bouton qui permet d'éxecuter la macro.

http://cjoint.com/?BICpoQuJmnU

merci d'avance.

4 réponses

  1. Ah ouai le tiens aussi marche Paff, c'est cool mais je suis entrain de le comprendre.
    1. Merci G_33 c'est parfaitement ce que je voulais fair mais n'y arivait pas il marche merci au autre pour leur tentative.
      CDt
      1. Avez vous essayé le code que je vous ai proposé, parce que je ne vois pas de différences de résultat entre mon code et celui de G_33 !
      2. Bonjour
        L'important est que ayez compris là où vous aviez fait des erreurs et comprendre le code que je vous ai fourni.
        En restant à votre disposition
        Cordialement
    2. Bonjour
      donc si j'ai bien compris je te propose de remplacer ton code par celui ci
      Sub tes()
      Dim maligne_Nom As Integer
      Dim maligne_Id As Integer
      Dim i As Long
      Dim j As Long
          
          Limite = Range("A65536").End(xlUp).Row
          Mide = Worksheets("Feuil2").Cells(Rows.Count, 1).End(xlUp).Row
          
          ' variable pour la première boucle
          maligne_Nom = 1
          ' variable pour la deuxième boucle
          maligne_Id = 1
      For i = maligne_Nom To Limite
          If Left(Cells(i, 1).Value, 2) = "aa" Then
               ' on incrémente de début de la première boucle
               maligne_Nom = i + 1
               
                  For j = maligne_Id To Mide
                     Sheets("Feuil1").Cells(i, 1).Value = Sheets("Feuil1").Cells(i, 1).Value & Sheets("Feuil2").Cells(j, 1).Value
                      ' on incrémente de début de la deuxième boucle
                      maligne_Id = j + 1
                      ' on sort de la deuxième boucle
                      Exit For
                  Next j
                  
           End If
      Next i
      End Sub

      Quand on écrit du code il faut bien faire attention à l'indentation très important pour s'y retrouver.

      Je pense que ce code est correct et t'apportera la solution

      Cordialement
      1. Bonjour,

        Pas sûr d'avoir tout compris

        ci dessous le code qui permet d'associer à chaque cellule "aa" un seul numéro de la feuil2
        pour le premier "aa" on prend le N° 1, pour le second le N°2 ...

        Dim i As Long
        Dim j As Long
        Dim Limite As Long
        'Limite = Range("A65536").End(xlDown).Row
        Limite = Range("A" & Rows.Count).End(xlUp).Row
        
        j = 1
        For i = 1 To Limite
            If Left(Cells(i, 1).Value, 2) = "aa" Then
                Sheets("Feuil1").Cells(i, 1).Value = Sheets("Feuil1").Cells(i, 1).Value & Sheets("Feuil2").Cells(j, 1).Value
                j = j + 1
            End If
        Next i

        Bonne suite
        1. Bonsoir
          j'ai lu votre fichier et votre demande
          et je ne comprends toujours pas le résultat attendu !!!!!
          une ligne avec 3 a qui devient aarrS999999
          une ligne avec 4 a qui devient rien !!!!!!
          et un tout petit peu plus logique une avec aaop qui devient aaopS999997

          si on suit votre résonnement avec
          If Left(Cells(i, 1).Value, 2) = "aa" Then
          re formulez votre demande et votre attente

          Cordialement