Comparer deux listes

  • Initiateur de la discussion Initiateur de la discussion Jx7
  • Date de début Date de début

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 !

J

Jx7

Guest
Bonjour!

Je suis en train d'essayer d'aider plusieurs universités qui gèrent des listes d'étudiants et malheureusement ils ne conaissent VRAIMENT PAS Excel donc je m'suis dit "fais ta B.A." 😛

Bref... voilà le topo (j'pense pas que ce sera trop dur pour vous):

ils ont régulièrement des listes d'étudiants qui leur arrivent et ils doivent intégrer ces nouvelles listes à une liste à eux. Heureusement pour nous, les listes ton toutes le même format.

En gros c'est une colonne nom, une colonne prénom, adresse, etc...

rien de bien compliqué.

le problème c'est qu'ils ont souvent des doublons.

Ma question est donc: Comment créer une macro qui ouvrirait le fichier souhaité et qui intègrerait les étudiants qui ne sont pas déjà présents dans la liste existante?
J'ai déjà fait la partie qui liste les fichiers présents dans le répertoire ; y'a plus qu'à choisir lequel intégrer à la liste existante.

dit + simplement: j'ai une liste A et je reçois régulièrement d'autres listes (B, C, D, etc...)

comment intégrer une liste (la C par exemple) à ma liste A en évitant les doublons?

Merci par avance 🙂
 
Re : Comparer deux listes

Jx7 à dit:
j'pense pas que ce sera trop dur pour vous

Je dirais même plus : facile et très rapide :
Réponse : "utilise la fonction recherche du forum".

Il y a déjà plusieurs solutions. Je suis sûr qu'une d'elle trouvera grâce à tes yeux.

Bonne recherche.

PS. : si la solution qui te plait n'est pas sous forme de macro, ce n'est pas grave, utilise l'enregistreur de macro 😉
 
Re : Comparer deux listes

Bonjour Jx7 et Excel-lent et le forum

Si tu connais un peu ce site, tu dois arrver à proposer un fichier sans onnées confidentielles pour avoir une plus grande chance qu'un Xldien t'aide.

En plus si tu as déjà fait une partie, cela évitera de le refaire.
 
Re : Comparer deux listes

Bonjour et merci pour vos réponses.

J'ai cherché et cherché sur le forum mais en vain... J'ai trouvé des morceaux de réponses mais j'ai pas trouvé un cas qui "colle" au mien, désolé...

Voilà mon fichier ainsi que 2 fichiers pour exemple de traitement:

etu_doublons_v3.zip
(j'vous raconte pas la galère pour uploader un fichier depuis mon lieu de travail...)

J'ai d'ailleurs un autre petit problème:
Lorsque j'utilise la fonction SpecialCells(xlLastCell) il ne me sélectionne pas la dernière cellule vide... Comment faire?
Car lorsque j'ai copié ma liste A c'est OK mais quand je veux copier ma liste B à la suite de la liste A qui vient d'être collée, je n'arrive pas à me placer sur la premiere cellule vide de la colonne A...

Merci à vous 🙂
 
Re : Comparer deux listes

Bonjour,

Dans ton cas, j'essaierai de faire une concaténation avec le nom, le prénom et le CP (quoiqu'on pourrait encore avoir des doublons mais exceptionnel).

Puis j'exporterai les listes de la colonne concaténée dans une feuille les uns en dessous des autres en mettant l'origine du fichier dans la première colonne.
Enfin je ferai un TCD pour avoir les doublons.

Il ya surement plus simple mais bon je ne suis pas un pro des doublons!
 
Re : Comparer deux listes

Bonjour tout le monde,
Jx7, remplace ta macro de traitement par celle-ci:
Code:
Private Sub CommandButton__traiter_fichiers_Click()
' ================================================================================================ '
' TRAITE LES FICHIERS DE LA LISTBOX                                                                '
' ================================================================================================ '

mon_Fichier = ActiveWorkbook.Name

For i = 1 To ListBox__nom_fichiers.ListCount
With ThisWorkbook
    Set Destination = .Sheets("doublons").Range("a65536").End(xlUp).Offset(1, 0)
End With
 Workbooks.Open Filename:=mon_Path + mon_Tableau(i)
 With Sheets(Mid(mon_Tableau(i), 1, Len(mon_Tableau(i)) - 4))
  .Range(.Range("A2"), .Range("A2").End(xlDown).Offset(0, 9)).Copy Destination
 End With
 
Next

End Sub

Il ne reste plus qu'à traiter la liste de la feuille doublons.

A+
 
Re : Comparer deux listes

MJ13: En fait la colonne du numéro d'étudient devrait suffire (la première colonne) donc je n'ai pas besoin de concaténer. J'ai donc pris la solution de skoobi (en + j'avais qu'à faire un copier-coller, lol)

Dans tous les cas : Merci ENORMEMENT à VOUS DEUX 🙂

Je pense que je vais me débrouiller pour le reste ;-)

En fait, Excel sans Excel-Downloads c'est comme un inverseur de phase à quadripolation de fréquences variables sans manuel d'utilisation... 😛

++
 
Re : Comparer deux listes

Bon...

La suite n'a pas été bien loin puisqu'au moment de classer en ordre croissant mes étudiants par numéro, j'ai un message d'erreur:

Code:
"Erreur d'exécution '438':

Propriété ou méthode non gérée par cet objet.

Suite au code de skoobi j'ai ajouté:

Code:
Sheets("doublons").Activate
Columns("A:J").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
 OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
 DataOption1:=xlSortNormal

et c'est sur la ligne Selection.Sort..... que j'ai l'erreur...

Ca me le fait souvent et ça énerve vous pouvez pas savoir... On enregistre une action qui nous génère donc une macro pondue par Excel lui-meme!!! et en la réexécutant àa bug... -_- allez comprendre...

edit: J'ai essayé toutes les solutions qui m'avaient été donnée ICI (sauf celle de Tinnou qui a créé une fonction spécialement pour ça) mais sans résultat...

incroyable qu'un truc aussi simple déconne...
 
Dernière modification par un modérateur:
Re : Comparer deux listes

Bonjour Jx7, le forum,

Essaies avec seulement :
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

Sans garantie.

A te lire.
Jean-Pierre

Merci pour ton aide 🙂

malheureusement cette fois il bloque sur
Code:
Columns("A:J").Select

avec un joli
Code:
Erreur d'exécution '1004':

La méthode Select de la classe Range a échoué.

snif snif.

C'est frustrant d'être bloqué à un niveau si.... basique -_-
 
Re : Comparer deux listes

Bonsoir, Jx7, skoobi, jeanpierre, MJ13, le forum

ci joint un classeur qui récupère toutes les données des classeurs annexes, les copie dans une feuille nommée "transit", fait une extraction par filtre élaboré avec données sans doublons, tri et fermeture des fichiers "annexes"...

Le code :

Dans l'évènement de la feuille :


Private Sub CommandButton__traiter_fichiers_Click()
' ================================================================================================ '
' TRAITE LES FICHIERS DE LA LISTBOX '
' ================================================================================================ '
Call traitement

End Sub


Dans un module "standard"

Public mon_Path As String
Public mon_Fichier As String
Public mon_Integer As Integer
Public mon_Variant As Variant
Public mon_Tableau(0 To 10)
Dim Derlig As Integer

Sub traitement()
Application.ScreenUpdating = False
mon_Fichier = ActiveWorkbook.Name

Sheets("doublons").Copy After:=Sheets(2)
ActiveSheet.Name = "transit"
For i = 1 To Sheets("accueil").ListBox__nom_fichiers.ListCount
With ThisWorkbook
Set Destination = .Sheets("transit").Range("a65536").End(xlUp).Offset(1, 0)
End With
Workbooks.Open Filename:=mon_Path + mon_Tableau(i)
With Sheets(Mid(mon_Tableau(i), 1, Len(mon_Tableau(i)) - 4))
.Range(.Range("A2"), .Range("A2").End(xlDown).Offset(0, 9)).Copy Destination
End With
ActiveWorkbook.Close False
Next
Derlig = Range("A65000").End(xlUp).Row
With Sheets("doublons")
.Select
Sheets("transit").Range("A1:J" & Derlig).AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=.Range("A1:J1"), Unique:=True
.Range("A1:J" & Range("A65000").End(xlUp).Row).Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess
End With
Application.DisplayAlerts = False
Sheets("transit").Delete
Application.DisplayAlerts = True
End Sub

Regarde le fichier joint.
Attention à la structure de l'onglet "doublons", les en-têtes doivent être renseignés.
Bon courage
 

Pièces jointes

Re : Comparer deux listes

Bonjour à tous et merci pour votre aide,

Re,
pour quelles raisons veux-tu trier cette liste de doublons?
Pour pouvoir mieux faire la suppression?

oui dans un premier temps. mais là je t'avoue que je suis de + en + énervé par ces messages d'erreurs incompréhensibles... un truc si basique qui fonctionne pas ça à le don de bien m'enerver donc maintenant ma priorité c'est : comprendre...

merci bhbh 🙂 je teste ça illico 🙂

par contre que veux tu dire par :
Attention à la structure de l'onglet "doublons", les en-têtes doivent être renseignés.

???
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

M
Réponses
1
Affichages
565
Matprobexcel
M
M
Réponses
6
Affichages
1 K
I
Réponses
1
Affichages
851
I
L
Réponses
4
Affichages
2 K
Luke91
L
G
  • Question Question
Réponses
6
Affichages
899
G
Réponses
5
Affichages
2 K
Gabriel7
G
Retour