Tri entre 2 lignes avec espacement différents
Résolu
maxhoo
Messages postés
7
Statut
Membre
-
maxhoo Messages postés 7 Statut Membre -
maxhoo Messages postés 7 Statut Membre -
Bonjour à toutes et à tous,
Alors voilà j'ai besoin d'effectuer un tri entre 2 lignes, en colonne "B" je vais avoir un libellé d'article ensuite des cellules vides en "B" mais en "H" et "J" les déclinaisons de mon article.
je vous joins un exemple de mon tableau.
j'ai utilisé l'enregistrement de macro mais ce n'est pas trsè convaincant, j'ai dû merdé quelque part...
Si vous avez des idées je suis hyper preneur cela fait quelques jours que je cherche en vain...
Par avance, merci.
Maxhoo
Alors voilà j'ai besoin d'effectuer un tri entre 2 lignes, en colonne "B" je vais avoir un libellé d'article ensuite des cellules vides en "B" mais en "H" et "J" les déclinaisons de mon article.
je vous joins un exemple de mon tableau.
j'ai utilisé l'enregistrement de macro mais ce n'est pas trsè convaincant, j'ai dû merdé quelque part...
Si vous avez des idées je suis hyper preneur cela fait quelques jours que je cherche en vain...
Par avance, merci.
Maxhoo
Sub Macro2()
'macro test tri
Dim nblignes
Dim VILLE[https://img-19.ccm2.net/hL9rwYL6d4-0phjHRi0AQgZbphQ=/5d3575def3484bec85e10eb40dc78f38/ccm-ugc/Capture_decran_2020-08-19_a_14.32.32.png [Image:https://img-19.ccm2.net/pzwqkY4SaAQq8aBwPFlw303XBl4=/440x/5d3575def3484bec85e10eb40dc78f38/ccm-ugc/Capture_decran_2020-08-19_a_14.32.32.png|440px|]|fancy]
Dim VILLE_CONTR
Sheets("Ajout ville catalogue Tactill").Activate
VILLE = Range("B3").Value
VILLE_CONTR = Range("B2").Value
Sheets("catalogue").Activate
DernièreLigne = Range("O3").SpecialCells(xlCellTypeLastCell).Row
For y = 1 To DernièreLigne
If Cells(y, 2) <> "" And nblignes = 0 Then
nblignes = nblignes + 1
Else
If Cells(y, 2) = "" And nblignes <> 0 Then
nblignes = nblignes + 1
Else
If Cells(y, 2) <> "" And nblignes <> 0 Then
Rows(y & ":" & y + nblignes).Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range( _
"B2"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase _
:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, _
DataOption2:=xlSortNormal
nblignes = 0
ActiveWorkbook.Worksheets("catalogue").Sort.SortFields.Add2 Key:=Range( _
"H" & y - nblignes & ":H" & y), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("catalogue").Sort.SortFields.Add2 Key:=Range( _
"J" & y - nblignes & ":J" & y), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("catalogue").Sort.SortFields.Add2 Key:=Range( _
"L" & y - nblignes & ":L" & y), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("catalogue").Sort
.SetRange Range("A"&y- nblignes & "Q" & y)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End If
End If
End If
Next y
End Sub
2 réponses
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour, la macro ne fait-elle pas ce que tu souhaites?
merci, dans ce-cas, de partager deux fichier, montrant la situation de départ et la situation finale souhaitée.-
En fait non elle trie mais de façon ultra étrange. et je ne comprends pas la logique du tri. Je te joins les deux photos de ce que j'ai et ce que je souhaite. (Je n'arrive pas à envoyer de fichier. )
La premiere photo c'est que j'ai et deuxieme c'est que je voudrais. ( tri sur le nom des boutiques & tri sur la taille des bagues)
Par avance, merci.
Maxence


- bonjour yg_be,
effectivement je ne connaissais pas cette technique. ;-)
Voici le lien de mon fichier.
https://www.cjoint.com/c/JIqj2XW6lGg
-
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
teste ceci, tu découvriras que ta logique pour détecter la zone est trier est déficiente.For y = 1 To DernireLigne If Cells(y, 2) <> "" And nblignes = 0 Then nblignes = nblignes + 1 Else If Cells(y, 2) = "" And nblignes <> 0 Then nblignes = nblignes + 1 Else Call MsgBox("tri: " & "y= " & CStr(y) & ", nblignes= " & CStr(nblignes)) End If End If Next y