Probleme de rangement de colonnes

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:

Catrice

XLDnaute Barbatruc
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:

bkawak

XLDnaute Nouveau
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

  • exemple.xls
    18 KB · Affichages: 44
  • exemple.xls
    18 KB · Affichages: 45
  • exemple.xls
    18 KB · Affichages: 48

Catrice

XLDnaute Barbatruc
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 ...
 

bkawak

XLDnaute Nouveau
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

  • exempleApres.xls
    18.5 KB · Affichages: 42
  • exemple.xls
    18.5 KB · Affichages: 43
  • exemple.xls
    18.5 KB · Affichages: 44
  • exemple.xls
    18.5 KB · Affichages: 40

Catrice

XLDnaute Barbatruc
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

  • exemple.xls
    33 KB · Affichages: 51
  • exemple.xls
    33 KB · Affichages: 55
  • exemple.xls
    33 KB · Affichages: 54
Dernière édition:

bkawak

XLDnaute Nouveau
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
 

Catrice

XLDnaute Barbatruc
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 ?
 

Discussions similaires

Réponses
5
Affichages
280

Statistiques des forums

Discussions
312 488
Messages
2 088 865
Membres
103 979
dernier inscrit
imed