Fusion 2 tableaux et doublons
Bonjour,
J'ai beaucoup de lacunes sur excel et on m'a demandé de travailler sur 2 tableaux excel ou je dois détecter les doublons, les mettre en évidences, c'est le 1er point.
2 : ils manquent des données que je dois rajouter sur chacun des tableaux.
3 : Faire un troisiéme tableau qui soit la synthése des 2, sans doublons et avec toutes les infos qui manquaient.
Le 1er tableau a 4 colonnes et se présente comme suit :
Matr Nom Prénom Description principale Service
107894 ABDALAH Nadia NFI-Agence Gestion Clientèle 3-Marseille
Le 2éme tableau a 5 colonnes et se présente comme suit :
Nom Prénom Age Emploi Direction Comex
ABDALAH Nadia 34 Attaché commercial Expert Direction des Opérations
Comment fusionner ces 2 tableaux, comment enlever mes doublons, et comment implémenter chacun des tableaux avec les données qui manquent.
J'espére que quelqu'un comprendra ma demande et pourra m'aider.
Merci par avance
Atwins
Bonsoir Atwins, bonsoir le forum,
Pas clair :
atwins a écrit :Le 1er tableau a 4 colonnes et se présente comme suit :
Matr Nom Prénom Description principale Service
107894 ABDALAH Nadia NFI-Agence Gestion Clientèle 3-Marseille
Est-ce bien pour le tableau 1 :
Matr / Nom / Prénom / Description principale Service
107894 / ABDALAH / Nadia / NFI-Agence Gestion Clientèle 3-Marseille
atwins a écrit :Le 2éme tableau a 5 colonnes et se présente comme suit :
Nom Prénom Age Emploi Direction Comex
ABDALAH Nadia 34 Attaché commercial Expert Direction des Opérations
Est-ce bien pour le tableau 2 :
Nom / Prénom / Age / Emploi / Direction Comex
ABDALAH / Nadia / 34 / Attaché commercial / Expert Direction des Opérations
Que signifie doublons pour toi :
• plusieurs lignes strictement identiques ?
• plusieurs fois le même matricule ? Comment choisir les donnés à éliminer ?
• plusieurs fois les mêmes NOM / PRÉNOM / ÂGE (tableau 2) ? Comment choisir les donnés à éliminer ?
Le tableau récapitulatif serait donc :
Matr / NOM / Prénom / Âge / Emploi / Description principale Service / Direction Comex ?
Si tu faisait l'effort d'explications plus claires et de joindre un fichier exemple, reprenant la structure de ton fichier original, avec des donnés non confidentielles, je ferai l'effort de chercher une solution...
Bonjour ThauThéme,
Je te remercie d'avoir pris le temps de me répondre, je vais essayer de mieux t'expliquer.
En fait j'avais 2 tableaux à compléter en fonction l'un de l'autre (rajouter des infos qui ne figuraient pas dans l'un ou dans l'autre).
J'ai fusionné les 2 tableaux, en fait j'ai fait un copié collé du premier tableaux sous le second et ensuite j'ai fait un tri par ordre alphabétique.
Maintenant je souhaite enlever les doublons.
Mais tu as bien compris le tableau final doit être :
Matr / NOM / Prénom / Âge / Emploi / Description principale Service / Direction Comex
Je te joins une partie de mes trois tableaux, tu verra si tu peux m'aider ou pas.
Je te remercie par avance.
Bonne journée.
Atwins
Bonjour Atwins, bonjour le forum,
En pièce jointe, ton fichier modifié avec un bouton Fusion dans l'onglet de synthèse pour lancer la macro...
Le code du bouton :
Private Sub CommandButton1_Click()
ActiveCell.Select 'enlève le focus au bouton
Module1.Macro1 'lance la procédure [Macro1] du module [Module1]
End SubLe code de la macro :
Sub Macro1()
Dim T1 As Worksheet 'déclare la variable T1 (onglet Tab1)
Dim T2 As Worksheet 'déclare la variable T2 (onglet Tab2)
Dim TS As Worksheet 'déclare la variable TS (onglet Synthése T1+T2)
Dim TC1 As Variant 'déclare la variable TC1 (Tableau de Cellules 1)
Dim TC2 As Variant 'déclare la variable TC2 (Tableau de Cellules 2)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Dim K As Integer 'déclare la variable K (incrément)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set T1 = Sheets("Tab1") 'définit l'onglet T1 (à adapter)
Set T2 = Sheets("Tab2") 'définit l'onglet T2 (à adapter)
Set TS = Sheets("Synthése T1+T2") 'définit l'onglet TS (à adapter)
'si la cellule A2 de l'onglet TS n'est pas vide, efface les anciennes données
If TS.Range("A2").Value <> "" Then TS.Range("A1").CurrentRegion.Offset(1, 0).ClearContents
TC1 = T1.Range("A1").CurrentRegion 'définit le tableau de cellules TC1
TC2 = T2.Range("A1").CurrentRegion 'définit le tableau de cellules TC2
K = 1 'initialise la variable K
For I = 2 To UBound(TC1, 1) 'boucle 1 : sur toutes les lignes du tableau TC1 (en partant de la seconde)
For J = 2 To UBound(TC2, 1) 'boucle 2 : sur toutes les lignes du tableau TC2 (en partant de la seconde)
If TC1(I, 2) = TC2(J, 1) And TC1(I, 3) = TC2(J, 2) Then 'si le nom et prénom concordent
ReDim Preserve TL(1 To 7, 1 To K) 'redimentsionne le tableau TL (7 lignes, K colonnes)
TL(1, K) = TC1(I, 1) 'récupère dans la ligne 1 le matricule du tableau TC1
TL(2, K) = TC1(I, 2) 'récupère dans la ligne 2 le nom du tableau TC1
TL(3, K) = TC1(I, 3) 'récupère dans la ligne 3 le prénom du tableau TC1
TL(4, K) = TC2(J, 3) 'récupère dans la ligne 4 l'âge du tableau TC2
TL(5, K) = TC2(J, 4) 'récupère dans la ligne 5 l'emploi du tableau TC2
TL(6, K) = TC2(J, 5) 'récupère dans la ligne 6 la direction du tableau TC2
TL(7, K) = TC1(I, 4) 'récupère dans la ligne 6 la description principale du service du tableau TC1
K = K + 1 'incrément K
Exit For 'sort de la boucle2
End If 'fin de la condition
Next J 'prochaine ligne de la boucle 2
Next I 'prochaine ligne de la boucle 1
'renvoie dans la cellule A2 redimensionnée le tableau TL transposé (inversion ligne/colonne)
TS.Range("A2").Resize(UBound(TL, 2), UBound(TL, 1)).Value = Application.Transpose(TL)
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End SubLe fichier :