Concatenation [Résolu]

Signaler
Messages postés
64
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
25 novembre 2014
-
Messages postés
64
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
25 novembre 2014
-
Bonjour,
Je cherche de l'aide car n'arrivant pas à trouver la solution pour arriver à mes fins.

J'ai un tabelau d'une colonne qui contient des repères et un repère peut être répété plusieurs fois.
Exemple:
AB1
AB1
DM1
DM1
FU2
FU2
...
Je veux une macro qui concatene comme suit dans une autre cellule
AB1| AB1, AB1 (AB1, AB1 dans la même cellule mais on doit aller la ligne)
AB1
DM1|DM1/DM1
DM1
FU2|FU2/FU2
FU2

J'ai fait ce bout de programme mais ça ne marche pas. Merci de votre aide.
Sub Concatener()
Application.ScreenUpdating = False
Sheets("Feuil2").Select
Range("D:D").Select
Selection.Delete
Dim concatene As Variant
Dim i As Integer
Dim n As Integer
For n = 2 To Range("C65536").End(xlUp).Row
    concatene = Range("D" & n).Value
        For i = 2 To Range("C65536").End(xlUp).Row
            If Cells(i + 1, 2).Value = Cells(i, 2).Value Then
                While Cells(i, 2).Value = Cells(i, 2).Value
                    concatene = concatene & "/" & Range("B" & i).Value
                    Range("D" & n).Value = concatene
                     Cells(i, 2).Select
                     If Cells(i + 1, 2) <> Cells(i, 1) Then
                     Exit For
                     End If
    Wend
    End If
Next i
Next n
End Sub



--

7 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
Bonjour,
Je commence par déplacer cette discussion vers la section où elle aurait dû être ouverte : à savoir VBA
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
ton exemple laisse un doute :
Tantôt tu utilises une virgule et tantôt un "/"
Quelle en est la raison ?
Messages postés
32948
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 juin 2021
351
Bonjour,
J'ai ajouté les balises de code..
Merci d'y penser dans tes prochains messages.
Messages postés
64
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
25 novembre 2014

Bonjour ucfoutu,

Merci de votre réaction.

Je suis désolé, c'est une erreure. Je veux mettre des virgules à la places "/" et à la ligne si c'est possible.

Dans le code que j'aie fourni, j'ai mis des "/" mais dans l'avenir je souhaite les remplacer par des virgules.

Merci d'avance de votre aide.

Cordialement,

--
Messages postés
64
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
25 novembre 2014

Bonjour Jordane45,

Merci, j'y penseai.
Messages postés
32948
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 juin 2021
351
Sub concatener()
Dim concatene As String
Dim valCell As String
Dim valSuiv As String
Dim valPrec As String
Dim l As Integer
Dim n As Integer
valPrec = ""
'------------------------------------------------
' Boucle sur l'ensemble de ta plage de cellules
'------------------------------------------------
For l = 2 To Range("B65536").End(xlUp).Row
    valCell = Cells(l, "B").Value
    valSuiv = Cells(l + 1, "B").Value
    concatene = valCell
    
    '********************
    Debug.Print "valCell " & valCell
    Debug.Print "valSuiv " & valSuiv
    Debug.Print "valPrec " & valPrec
    
    '------------------------------------------------
    ' Si valeur cellule actuelle <> de la valeur précédente
    '------------------------------------------------
    If valCell <> valPrec Then
        n = l
        '------------------------------------------------
        ' Boucle sur les cellules de même valeur
        '------------------------------------------------
        While valCell = Cells(n + 1, "B").Value
           valSuiv = Cells(n + 1, "B").Value
           If valSuiv = valCell Then
               concatene = concatene & "," & Chr(10) & valSuiv
           Else
             Exit For
           End If
           n = n + 1
        Wend
        Cells(l, "D").Value = concatene
    End If
valPrec = valCell
Next
End Sub



Ce qui donne :




Edit : Petite correction...

Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
Messages postés
64
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
25 novembre 2014

Merci Jordane45.

Vous m'avez qauvé. C'est très gentil de votre part.

Très cordialement,

A une prochaine fois.

--
Messages postés
32948
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 juin 2021
351
Avec plaisir.
Par contre, merci de clôturer le sujet en allant cliquer sur le lien qui se trouve sous le titre de votre question : MARQUER COMME RESOLU.
Messages postés
64
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
25 novembre 2014

Merci,

C'est fait.