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

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

  • Classeur1.xlsx
    103.6 KB · Affichages: 95
  • Classeur1.xlsx
    103.6 KB · Affichages: 128
  • Classeur1.xlsx
    103.6 KB · Affichages: 124
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
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
 

Polobe36

XLDnaute Occasionnel
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.
 

Robert

XLDnaute Barbatruc
Repose en paix
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

  • Polobe_v01.xlsm
    111.7 KB · Affichages: 74

Polobe36

XLDnaute Occasionnel
[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.
 

Discussions similaires

Réponses
12
Affichages
247
Réponses
9
Affichages
146

Statistiques des forums

Discussions
312 308
Messages
2 087 105
Membres
103 469
dernier inscrit
Thibz