Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Concaténer des cellules sous conditions

Elodie195

XLDnaute Occasionnel
Bonjour,

Je sollicite votre aide pour une macro EXCEL.

J'ai un fichier excel avec à l'intérieur un tableau de 9 colonnes.

Les colonnes qui nous intéresse sont les colonnes 1, 4 et 9.

En effet, je souhaiterais que lorsque le numéro de dossier de la colonne 4 est présent 2 ou 3 fois, cela concatène les données des colonnes 1 et 9 (séparé par une virgule).

J'ai fait un onglet "A obtenir" dans le fichier exemple, ce sera plus parlant.

Merci de votre aide.

Bonne journée.
 

Pièces jointes

  • TEST_FUSION.xlsm
    10.2 KB · Affichages: 47

mutzik

XLDnaute Barbatruc
bonjour,

pas sur que ce soit une bonne idée

par ex, sur la dernière ligne de 'à obtenir', on a en test1 P12 13 et 14
en test 2 on a MGD alors que le P13 et le P14 sont des MSD

c'est quoi le but, exactement ?
 

Elodie195

XLDnaute Occasionnel
Bonjour,

La colonne 2 avec les MSD/MGD/PPG peut être ignorée. Cette valeur n'a pas d'importance. On peut même l'effacer avant la concaténation, il n'y a aucune incidence.

Le but c'est juste d'avoir les colonnes A et I fusionnées en fonction d'un même nom de dossier en colonne D

Bonne journée.
 

laetitia90

XLDnaute Barbatruc
bonjour Elodie,Bertrand
copy en j2 a adapter
VB:
Sub es()
Dim t(), i As Long, m As Object, c As Byte, z
  Set m = CreateObject("Scripting.Dictionary")
  t = Range("a2:i" & Cells(Rows.Count, 1).End(3).Row)
   For i = 1 To UBound(t)
   z = t(i, 4)
   If m.Exists(z) Then
   t(m(z), 1) = t(m(z), 1) + t(i, 1)
   t(m(z), 9) = t(m(z), 9) + t(i, 9)
   Else
   x = x + 1
   For c = 1 To 9: t(x, c) = t(i, c): Next c:   m(z) = x
   End If
   Next i
  [j2].Resize(x, 9) = t
End Sub
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…