[COLOR=blue]Option Explicit[/COLOR] [COLOR=green]'pour forcer la définition des variables[/COLOR]
[COLOR=blue]Sub[/COLOR] Synthèse()
Application.ScreenUpdating = [COLOR=blue]False[/COLOR] [COLOR=green]'Bloque l'affichage écran[/COLOR]
[COLOR=blue]Dim[/COLOR] i [COLOR=blue]As Long[/COLOR], derlig [COLOR=blue]As Long[/COLOR] [COLOR=green]'Définit les variables[/COLOR]
[COLOR=blue]With[/COLOR] Sheets("Tous les contacts") [COLOR=green]'Travaille sur l'onglet "Tous les contacts"[/COLOR]
[COLOR=blue]If[/COLOR] .AutoFilterMode [COLOR=blue]And[/COLOR] .FilterMode [COLOR=blue]Then[/COLOR] .ShowAllData [COLOR=green]'gère les filtres (pour afficher toutes les données si filtre activé)[/COLOR]
derlig = .Cells(Rows.Count, 1).End(xlUp).Row [COLOR=green]'Calcule la dernière ligne remplie de l'onglet en colonne A[/COLOR]
[COLOR=blue]If[/COLOR] derlig > 2 [COLOR=blue]Then[/COLOR] [COLOR=green]'si cette ligne est supérieure à 2[/COLOR]
.Range(Cells(3, 1), Cells(derlig, 10)).ClearContents [COLOR=green]' Efface le contenu de la ligne 2 jusqu'à la dernière ligne[/COLOR]
[COLOR=blue]End If[/COLOR] [COLOR=green]'fin du IF[/COLOR]
[COLOR=blue]End With[/COLOR] [COLOR=green]' Termine le With ci-dessus[/COLOR]
[COLOR=blue]For[/COLOR] i = 1 [COLOR=blue]To[/COLOR] Worksheets.Count [COLOR=green]'de i = 1 au nombre d'onglets du classeur (i est juste un compteur)[/COLOR]
[COLOR=blue]If[/COLOR] Sheets(i).Name <> "Tous les contacts" [COLOR=blue]Then[/COLOR] [COLOR=green]'si l'onglet est différent de "Tous les contacts"[/COLOR]
derlig = Sheets(i).Cells(Rows.Count, 1).End(xlUp).Row [COLOR=green]'calcul de la dernière ligne remplie sur la base de la colonne A[/COLOR]
[COLOR=blue]If[/COLOR] derlig >= 2 [COLOR=blue]Then[/COLOR] [COLOR=green]'si cette ligne est supérieure à 2[/COLOR]
[COLOR=green]'Copie le contenu de l'onglet i dans la feuille "Tous les contacts"[/COLOR]
Sheets(i).Range("A2:J" & derlig).Copy Sheets("Tous les contacts").Cells(Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row, 1)
[COLOR=blue]End If[/COLOR] [COLOR=green]'Fin du if[/COLOR]
[COLOR=blue]End If[/COLOR] [COLOR=green]'Fin du If[/COLOR]
[COLOR=blue]Next[/COLOR] i [COLOR=green]' Passe à l'onglet suivant[/COLOR]
[COLOR=blue]With[/COLOR] Sheets("Tous les contacts") [COLOR=green]'Travaille sur l'onglet "Tous les contacts"[/COLOR]
derlig = .Cells(Rows.Count, 1).End(xlUp).Row [COLOR=green]'Calcule la dernière ligne remplie colonne A[/COLOR]
Range("A2:J" & derlig).RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6, 7 _
, 8, 9, 10), Header:=xlYes [COLOR=green]'Elimine les éventuels doublons[/COLOR]
[COLOR=green]'Et au cas où il y aurait des lignes vides dans les onglets nominatifs[/COLOR]
[COLOR=green]'on trie l'onglet de synthèse pour faire plus joli :) :) (et aussi pour être sûr de pouvoir utiliser les filtres[/COLOR]
[COLOR=blue]With[/COLOR] .Sort
.SortFields.Clear [COLOR=green]'on réinitialise les clés de tri[/COLOR]
.SortFields.Add Key:=Range("A3:A6"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
.SortFields.Add Key:=Range("C3:C6"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
.SortFields.Add Key:=Range("D3:D6"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
.SetRange Range("A2:J" & derlig)
.Header = xlYes
.MatchCase = [COLOR=blue]False[/COLOR]
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
[COLOR=blue]End With[/COLOR] [COLOR=green]'fin du with[/COLOR]
[COLOR=blue]End With[/COLOR] [COLOR=green]'Fin du With[/COLOR]
Application.ScreenUpdating = [COLOR=blue]True[/COLOR] [COLOR=green]'Rétablit l'affichage écran[/COLOR]
[COLOR=blue]End Sub[/COLOR]