Bonjour,
J'ai fais une procédure pour trier des données, elle fonctionne mais je la voit plus que lourde
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 Sub TriDonnées() Dim Trouve As Range, PlageDeRecherche As Range Dim Valeur_Cherchee As String Valeur_Cherchee = "Magasin1" Set PlageDeRecherche = Worksheets("Données").Range("L3:T14") 'Plage de recherche Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlWhole) For GG = 1 To 9 O = Trouve.Offset(GG, 1).Address 'Cellule "Origine" des données ZColonne = Range(O).Column 'Colonne "Origine" des données ZLigne = Range(O).Row 'Ligne "Origine" des données 'Si sur une ligne completement vide alors passe à la suivante If Trouve.Offset(GG, 1) = "" Then GoTo suite For K = ZColonne To (ZColonne + 10) '10=Max colonne des données If Cells(ZLigne, K) = "" Then 'si cellule vierge donc fin données sur la ligne ZFinale = Cells(ZLigne, K - 1).Address 'Récupère l'adresse de la dernière donnée de la ligne Exit For End If Next K 'Lance le tri ActiveWorkbook.Worksheets("Données").Range(O & ":" & ZFinale).Select ActiveWorkbook.Worksheets("Données").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Données").Sort.SortFields.Add2 Key:=Range( _ O & ":" & ZFinale), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Données").Sort .SetRange Range(O & ":" & ZFinale) .Header = xlGuess .MatchCase = False .Orientation = xlLeftToRight .SortMethod = xlPinYin .Apply End With 'Centrage dans les données With ActiveWorkbook.Worksheets("Données").Range(O & ":" & ZFinale) .Select .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter End With suite: Next GG End Sub
Pouvez-vous m'aider pour "l'alléger" ou la simplifier ?
D'avance merci
Christophe
Partager