Fusion de lignes conditionnelle - macro

GuillaumeM

XLDnaute Nouveau
Bonjour,
Je me permets d'ouvrir une nouvelle discussion, même si ma demande me semble faire suite à ceci:
https://www.excel-downloads.com/threads/fusion-de-lignes.190557/

Il s'agit de données d'état civil compilées pour une recherche historique. Je souhaiterais fusionner plusieurs lignes d'un tableau excel, afin d'obtenir une seule ligne pour un même individu (même identifiant et même nom).

Dans certains cas, assez rares, les données d'état civil divergent selon les sources. Dans ces cas et seulement dans ces cas, je souhaite
-soit conserver les lignes correspondantes (je ferai mon choix manuellement);
-soit conserver arbitrairement l'information contenue dans la première ligne.

Lorsque, pour un même individu, il y a plusieurs lignes avec des données identiques, je souhaite regrouper l'information dans une même ligne;

Lorsque, pour un même individu, il y a des trous dans une ligne, je souhaite les remplacer par l'information contenue dans les autres lignes (même colonne).

Je joins à ce message un exemple.

Je précise que je suis débutant avec excel et ne sais pas manipuler les macro. J'ai ainsi tenté - sans succès - d'utiliser la macro proposée dans la discussion référencée ci-dessus. Je ne sais pas comment l'adapter à mon tableau, i.e. la modifier pour mes besoins.

Merci pour votre aide éventuelle,

cordialement,

Guillaume
 

Pièces jointes

  • exemple fusion.xlsx
    9.6 KB · Affichages: 22

GuillaumeM

XLDnaute Nouveau
Re : Fusion de lignes conditionnelle - macro

Bonjour Pierrejean,
Un grand merci pour ta réponse rapide et efficace. Ta macro me semble très bien faire le job!
Une question: si je souhaite adapter la macro à des données structurées différemment (avec des colonnes différentes, renseignant par ex. des lieux d'activité, mais toujours avec le nom et l'identifiant de chaque individu), faut-il modifier cette macro? Si c'est le cas, comme je le suppose, quels sont les paramètres à changer dans le code ci-dessous?
Merci par avance et bien à toi,
Guillaume


Sub test()
Set dico = CreateObject("Scripting.dictionary")
tablo = Range("A2:L" & Range("A" & Rows.Count).End(xlUp).Row)
For n = LBound(tablo, 1) To UBound(tablo, 1)
x = tablo(n, 1) & "|" & tablo(n, 2)
dico(x) = x
Next
a = dico.keys
ReDim tabres(1 To 12, 0)
For m = LBound(a) To UBound(a)
tabres(1, UBound(tabres, 2)) = Split(a(m), "|")(0)
tabres(2, UBound(tabres, 2)) = Split(a(m), "|")(1)
For n = LBound(tablo, 1) To UBound(tablo, 1)
If tablo(n, 1) & "|" & tablo(n, 2) = a(m) Then
For p = 3 To 12
If tabres(p, UBound(tabres, 2)) = "" Then tabres(p, UBound(tabres, 2)) = tablo(n, p)
Next
End If
Next
ReDim Preserve tabres(1 To 12, UBound(tabres, 2) + 1)
Next
Range("N2:X" & Rows.Count).ClearContents
Range("N2").Resize(UBound(tabres, 2), 12) = Application.Transpose(tabres)
End Sub
 

pierrejean

XLDnaute Barbatruc
Re : Fusion de lignes conditionnelle - macro

Pour modifier la macro il est essentiel de la comprendre

Dans le fichier joint , je l'ai commentée

En cas de difficulté n’hésite pas à présenter ton nouveau problème
 

Pièces jointes

  • exemple fusion.xlsm
    25.1 KB · Affichages: 21
  • exemple fusion.xlsm
    25.1 KB · Affichages: 29
  • exemple fusion.xlsm
    25.1 KB · Affichages: 26

Discussions similaires

Réponses
9
Affichages
253

Statistiques des forums

Discussions
312 682
Messages
2 090 866
Membres
104 680
dernier inscrit
AvPi26