[Résolu] Concatener cellules d'une même colonne si...

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Polobe36

XLDnaute Occasionnel
Bonjour à tous, le Forum,

j'aurai besoin de concatener plusieurs cellules même colonne si la référence est identique, si la référence n'existe pas la cellule reste vide (pas super clair...). je vous joins un exemple avec le résultat souhaité.

Onglet "BDD_PWO" est une liste de gamme opératoire (numérotation unique, il ne peut pas y avoir 2x le même numéro)
Onglet "MOP" est une table dans laquelle je rentre les différents commentaires de précision de la gamme (une ligne excel pour une ligne de commentaire dans l'application)

Je souhaiterais dans la colonne U de l'onglet "BDD_PWO" concatener toutes les valeurs de la colonne E de l'onglet "MOP".
-Le lien étant le numéro de la gamme.
-L'ordre de concatenation à suivre est l'ordre croissant des numéros de lignes.

Pourquoi? pour permettre une mise en forme (saut de ligne) lors de la conversion du fichier .csv en .xml

Merci d'avance de votre aide, toujours précieuse.
Bonne journée
 

Pièces jointes

Dernière édition:
Re : Concatener cellules d'une même colonne si...

Bonjour Polobe, bonjour le forum,

Peut-être comme ça :
Code:
Sub Macro1()
Dim oo As Object 'déclare la variable oo (Onglet Origine)
Dim dlo As Long 'déclare la variable dlo (Dernière Ligne onglet Origine)
Dim plo As Range 'déclare la variable plo (PLage onglet Origine)
Dim ore As Object 'déclare la variable ore (Onglet de REcherche)
Dim dlre As Long 'déclare la variable dlre (Dernière Ligne onglet REcherche)
Dim plre As Range 'déclare la variable plre (PLage onglet REcherche)
Dim co As Range 'déclare la variable co (Cellules onglet Origine)
Dim cre As Range 'déclare la variable cre (Cellules onglet REcherche)
Dim tc As String 'déclare la variable tc (Texte Concatené)

Set oo = Sheets("BDD_PWO") 'définit l'onglet d'origine oo
dlo = oo.Cells(Application.Rows.Count, 2).End(xlUp).Row 'définit la dernière ligne éditée dlo de la colonne 2 (=B)
Set plo = oo.Range("B2:B" & dlo) 'définit la plage d'origine plo
Set ore = Sheets("MOP") 'définit l'onglet de recherche ore
dlre = ore.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée dlre de la colonne 1 (=A)
Set plre = ore.Range("A2:A" & dlre) 'définit la plage de recherche
For Each co In plo 'boucles 1 : sur toutes les cellules d'origine co de la palge plo
    ore.Range("A1").AutoFilter Field:=1, Criteria1:=co.Value 'filtre la colonne 1 (=A) de l'onglet de recherche ore para rapport à la valeur de la cellule co
    If ore.Cells.SpecialCells(xlCellTypeVisible).Rows.Count > 1 Then 'condition : si le nombre le lignes visibles est supérieur à 1
        For Each cre In plre.SpecialCells(xlCellTypeVisible).Offset(0, 4) 'boucle 2 : sur toutes les cellule visibles cre de la plage plre décalée de 4 colonnes à droite (=colonne E)
            tc = tc & cre.Value 'd'éfinit le texte concatené tc
        Next cre 'prochaine cellule de la boucle 2
        co.Offset(0, 19).Value = tc 'renvoie en colonne U de l'onglet d'origine la valeur de tc
        tc = "" 'vide tc
    End If 'fin de la condition
    ore.Range("A1").AutoFilter 'supprime le filtre automatique
Next co 'prochaine cellule de la boucle 1
End Sub
 
Re : Concatener cellules d'une même colonne si...

Bonjour Robert,le Forum,

Merci pour votre aide, çà fonctionne mais... juste pour une ligne de "BDD_PWO": ici pour l'exemple, pour la référence de gamme GA_MA_00148.
J'ai placé le code VBA dans ThisWorkbook, j'espère que j'ai fait comme il le fallait.
 
Re : Concatener cellules d'une même colonne si...

Bonjour Polobe, bonjour le forum,

En effet il y avait un problème. Le code doit être placé dans un module standard comme dans ton fichier modifié en pièce jointe avec le code corrigé.
 

Pièces jointes

[Résolu] Re : Concatener cellules d'une même colonne si...

Re,

Merci beaucoup Robert, çà fonctionne parfaitement! çà va me faire gagner beaucoup de temps, et surtout réduire un max les erreurs éventuelles lors de l'import, merci encore!

Bonne journée.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
254
Réponses
4
Affichages
81
Réponses
7
Affichages
250
Retour