Probleme de rangement de colonnes

  • Initiateur de la discussion Initiateur de la discussion bkawak
  • 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 !

bkawak

XLDnaute Nouveau
[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
 
Dernière édition:
Re : Probleme de rangement de colonnes

Bonjour,

Il faudrait que tu fournisses un exemple.
Tu veux classer les cellules A2 et A3 ssi B2=B3 et G2=G3.
Mais si la condition n'est pas remplie, on fait quoi ?

Ceci ...

Sub Test()
Range("A1:G12").Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range( _
"G2"), Order2:=xlAscending, Key3:=Range("A2"), Order3:=xlAscending
End Sub

...ne suffit il pas ?
 
Dernière édition:
Re : Probleme de rangement de colonnes

je me suis mal exprime dsl

Si la condition n est pas remplie, on passe a la case suivante jusqu a que la condition soit denouveau remplie.

Mon probleme c est que la condition peut etre remplie par exemple de la case A2 jusqu a A8 puis de A13 jusqu a A 16 ect. Et si la condition est remplie il faut classer la colonne A suivant l ordre alphabetique.

Je joint un fichier exemple.

Dans ce fichier il faut classer les cellules A4 a A5 puis de A11 jusqu a A15 puis de A16 jusqu a A20

Merci
 

Pièces jointes

Re : Probleme de rangement de colonnes

Re,

Je ne comprends pas ton exemple.
D'apres ce que tu dis, il faudrait trier de A3 à A15 et de A16 à A20 non ?

Peux tu fournir le "avant" / "apres" de ce que tu souhaites faire ?

Une clé de tri sur B et la 2eme sur A semble faire ce que tu veux ...
 
Re : Probleme de rangement de colonnes

Excuse moi, je me suis trompe dans les plages de cellules.

Dans l exemple il faut que je classe les cellules entre A6 et A7 car ( B6 = B7 et G6 = G7)


entre A8 et A15 car ( B8=...=B15 et G8=...=G15)

entre A16 et A17 car (B16=B17 et G16=G17)


et entre A18 et A20

Je joint le fichier avant : exemple.xls
et le fichier apres la classification : exempleApres.sls
 

Pièces jointes

Re : Probleme de rangement de colonnes

Re,

Ce code ....
Sub Test()
Sheets(1).Range("A1").CurrentRegion.Sort Key1:=Sheets(1).Range("G2"), Order1:=xlAscending, Key2:=Sheets(1).Range("B2"), Order2:=xlAscending, Key3:=Sheets(1).Range("A2"), Order3:=xlAscending, Header:=xlYes
End Sub
...semble faire ce que tu souhaites ...

J'avais inversé G et B dans la premiere reponse.

Voir le fichier joint
 

Pièces jointes

Dernière édition:
Re : Probleme de rangement de colonnes

Re,

Merci pour tes reponses, ton code marche pour le fichier exemple. Cependant pour mon fichier principal ( plus de 383 lignes a classer) il ne marche plus. Je ne sais pas pourquoi...

Une autre petite question je veux selectionner la plage A13 a A49 ou les chiffres 13 et 49 sont stockes dans deux variables Interger differentes. Quelle est le code VBA qui ferait la mm chose que Range("A13:A49").Select mais avec l utilisation des variables ?


Merci beaucoup
 
Re : Probleme de rangement de colonnes

Re,

Avec :

x = 13
y = 49

Range("A" & x).Resize(y - x + 1).Select
ou
Range("A" & x & ":A" & y).Select
ou
Range(Cells(x, 1), Cells(y, 1)).Select



Evite le Select ...


Pour l'autre question, peux tu fournir un exemple plus complexe ?
 
- 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

Discussions similaires

  • Question Question
XL 2021 listbox
Réponses
18
Affichages
284
Réponses
5
Affichages
545
Réponses
17
Affichages
1 K
Retour