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. 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
  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. 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. Ah ouai le tiens aussi marche Paff, c'est cool mais je suis entrain de le comprendre.