Concatenation

Résolu
sokpassy85
Messages postés
64
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
25 novembre 2014
- Modifié par jordane45 le 19/03/2014 à 16:37
sokpassy85
Messages postés
64
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
25 novembre 2014
- 19 mars 2014 à 17:39
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

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

19 mars 2014 à 16:38
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,

--
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

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

19 mars 2014 à 16:44
Bonjour Jordane45,

Merci, j'y penseai.
0
jordane45
Messages postés
35765
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
30 juin 2022
358
Modifié par jordane45 le 19/03/2014 à 17:08
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
0
sokpassy85
Messages postés
64
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
25 novembre 2014

19 mars 2014 à 17:14
Merci Jordane45.

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

Très cordialement,

A une prochaine fois.

--
0
jordane45
Messages postés
35765
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
30 juin 2022
358
19 mars 2014 à 17:32
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.
0
sokpassy85
Messages postés
64
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
25 novembre 2014

19 mars 2014 à 17:39
Merci,

C'est fait.
0