[Macro] Probleme de rangement de colonnes
Bonjour a tous,
desole pour les accents mais j utilise un clavier allemand...
Voila mon probleme, je dois ranger trois colonnes ( B, G , A dans cet ordre).
Pour classer les colonnes B et G pas de probleme j ai outilise l enregistreur de macro et ca marche. Par contre pour la colonne A je dois le faire manuellement car c est un peu plus complique :
Je dois classer la colonne A par ordre alphabetique si et seulement si les valeurs des cellules G puis des cellules B sont egales. En gros je dois classer les cellules par exemple A2 et A3 ssi B2=B3 et G2 = G3
Voici mon code
Sub Organisation()
'
Dim i, Endline As Integer
Dim PremierCase As Integer
' Pour connaitre la derniere ligne
Endline = ActiveCell.End(xlDown).Row
MsgBox ("La derniere ligne est :" & Endline)
' Organisation pour la colonne G
Columns("G:G").Select
Range("A1:Q" & Endline).Sort Key1:=Range("G1"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
' Organisation de la colonne B
Columns("B:B").Select
Range("A1:Q" & Endline).Sort Key1:=Range("B1"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
For i = 2 To Endline
If (Cells(2, i) = Cells(2, i + 1) And i < Endline) Then
If (Cells(7, i) = Cells(7, i + 1)) Then
PremierCase = i
MsgBox ("La premiere case selectionnee est:" & PremierCase)
Do Until Cells(7, i) <> Cells(7, i + 1)
Cells(1, i).Select
i = i + 1
Loop
Selection.Sort Key1:=Range("A" & PremierCase), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End If
End If
Next
End Sub
Mais il ne marche pas... Deja je ne suis pas sure qu avec ma boucle do loop je selection une plage de cellules...
Merci pour votre aide
Bonjour a tous,
desole pour les accents mais j utilise un clavier allemand...
Voila mon probleme, je dois ranger trois colonnes ( B, G , A dans cet ordre).
Pour classer les colonnes B et G pas de probleme j ai outilise l enregistreur de macro et ca marche. Par contre pour la colonne A je dois le faire manuellement car c est un peu plus complique :
Je dois classer la colonne A par ordre alphabetique si et seulement si les valeurs des cellules G puis des cellules B sont egales. En gros je dois classer les cellules par exemple A2 et A3 ssi B2=B3 et G2 = G3
Voici mon code
Sub Organisation()
'
Dim i, Endline As Integer
Dim PremierCase As Integer
' Pour connaitre la derniere ligne
Endline = ActiveCell.End(xlDown).Row
MsgBox ("La derniere ligne est :" & Endline)
' Organisation pour la colonne G
Columns("G:G").Select
Range("A1:Q" & Endline).Sort Key1:=Range("G1"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
' Organisation de la colonne B
Columns("B:B").Select
Range("A1:Q" & Endline).Sort Key1:=Range("B1"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
For i = 2 To Endline
If (Cells(2, i) = Cells(2, i + 1) And i < Endline) Then
If (Cells(7, i) = Cells(7, i + 1)) Then
PremierCase = i
MsgBox ("La premiere case selectionnee est:" & PremierCase)
Do Until Cells(7, i) <> Cells(7, i + 1)
Cells(1, i).Select
i = i + 1
Loop
Selection.Sort Key1:=Range("A" & PremierCase), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End If
End If
Next
End Sub
Mais il ne marche pas... Deja je ne suis pas sure qu avec ma boucle do loop je selection une plage de cellules...
Merci pour votre aide
Dernière édition: