Comparer deux listes

Jx7

XLDnaute Nouveau
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." :p

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 :)
 

Jx7

XLDnaute Nouveau
Re : Comparer deux listes

bon et bien cette fois j'ai le droit a un nouveau message d'erreur...

je crois que je vais abandonner... ce serait des erreurs "normales" je continuerais mais là ça me sort par les yeux... c'est complètement incohérent... Excel fait lui meme des erreurs c'est du grand n'importe quoi...
 

skoobi

XLDnaute Barbatruc
Re : Comparer deux listes

Re,
remplace ta macro de traitement par celle-ci (doublons supprimés + tri effectué):

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
With ThisWorkbook.Sheets("doublons")
    nbre = .Range(.Range("b2"), .Range("b2").End(xlDown)).Count
    n = 1
     For i = nbre + 1 To 2 Step -1
        On Error Resume Next
        liste.Add .Cells(i, 2).Value, CStr(.Cells(i, 2).Value)
         Debug.Print Err.Number
        If Err.Number <> 0 Then
            .Cells(i, 2).EntireRow.Delete
        End If
        n = n + 1
     Next
On Error GoTo 0
For n = 1 To liste.Count
    liste.Remove 1
Next
.Range("A2").Name = "clé"
[B].Range(.Range("A2"), .Range("A2").End(xlDown).Offset(0, 9))[/B].Sort Key1:="clé", Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal

End With

End Sub

voili voilou

skoobi
edit: petite rectification faite en gras
 
Dernière édition:

skoobi

XLDnaute Barbatruc
Re : Comparer deux listes

re,
"select" est à éviter le plus possible voir à proscrire.
Celà alourdi ta macro et ralenti son execution.Ca ne se voit pas sur de petit traitement mais quand tu as beaucoup de données là c'est long.
De plus,dès que tu passes d'un fichier à un autre ou d'une feuille à une autre, "select" n'est plus fiable. Utilise plutôt "with... end with" (tu auras remarqué au passage que je n'ai à aucun moment utilisé "select" pour ta macro mais with... endwith).
 

Jx7

XLDnaute Nouveau
Re : Comparer deux listes

re,
"select" est à éviter le plus possible voir à proscrire.
Celà alourdi ta macro et ralenti son execution.Ca ne se voit pas sur de petit traitement mais quand tu as beaucoup de données là c'est long.
De plus,dès que tu passes d'un fichier à un autre ou d'une feuille à une autre, "select" n'est plus fiable. Utilise plutôt "with... end with" (tu auras remarqué au passage que je n'ai à aucun moment utilisé "select" pour ta macro mais with... endwith).

oui j'ai remarqué. je savais pas que le "select" était à ce point problématique. c'est noté ^^

mais même entre un "with" et un "end with" j'ai eu des erreurs...

comment se positionne t-on sur une cellule sans le "select" dans ce cas?
 

Discussions similaires

Statistiques des forums

Discussions
312 392
Messages
2 087 954
Membres
103 686
dernier inscrit
maykrem