Tri entre 2 lignes avec espacement différents

Résolu/Fermé
maxhoo Messages postés 7 Date d'inscription mercredi 20 mars 2019 Statut Membre Dernière intervention 16 septembre 2020 - Modifié le 19 août 2020 à 14:35
maxhoo Messages postés 7 Date d'inscription mercredi 20 mars 2019 Statut Membre Dernière intervention 16 septembre 2020 - 16 sept. 2020 à 15:38
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

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
A voir également:

2 réponses

yg_be Messages postés 23348 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 novembre 2024 Ambassadeur 1 554
19 août 2020 à 20:20
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.
0
maxhoo Messages postés 7 Date d'inscription mercredi 20 mars 2019 Statut Membre Dernière intervention 16 septembre 2020
20 août 2020 à 13:01
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

0
yg_be Messages postés 23348 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 novembre 2024 1 554 > maxhoo Messages postés 7 Date d'inscription mercredi 20 mars 2019 Statut Membre Dernière intervention 16 septembre 2020
20 août 2020 à 14:00
pour partager un fichier, il faut le publier sur internet (google drive, cjoint.com, ...), puis partager ici le lien vers le fichier.
0
maxhoo Messages postés 7 Date d'inscription mercredi 20 mars 2019 Statut Membre Dernière intervention 16 septembre 2020 > yg_be Messages postés 23348 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 novembre 2024
16 sept. 2020 à 11:56
bonjour yg_be,

effectivement je ne connaissais pas cette technique. ;-)

Voici le lien de mon fichier.
https://www.cjoint.com/c/JIqj2XW6lGg
0
yg_be Messages postés 23348 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 novembre 2024 1 554 > maxhoo Messages postés 7 Date d'inscription mercredi 20 mars 2019 Statut Membre Dernière intervention 16 septembre 2020
16 sept. 2020 à 13:04
attention, merci d'éviter les accents dans les noms de variable, cela passe mal quand on utilise Excel dans d'autres langues.
0
maxhoo Messages postés 7 Date d'inscription mercredi 20 mars 2019 Statut Membre Dernière intervention 16 septembre 2020 > yg_be Messages postés 23348 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 novembre 2024
Modifié le 16 sept. 2020 à 13:10
Ah oui en effet c'est noté, merci! Je modifierai sur mes prochaines macros. ;-) Avez vous une piste pour le tri car là je m'apprête à le faire à la main et je pense que je vais y passer du temps. :-)
0
yg_be Messages postés 23348 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 novembre 2024 Ambassadeur 1 554
16 sept. 2020 à 13:07
teste ceci, tu découvriras que ta logique pour détecter la zone est trier est déficiente.
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
            Call MsgBox("tri: " & "y= " & CStr(y) & ", nblignes= " & CStr(nblignes))
        End If
    End If
Next y
0
maxhoo Messages postés 7 Date d'inscription mercredi 20 mars 2019 Statut Membre Dernière intervention 16 septembre 2020
16 sept. 2020 à 13:21
Ah oui en effet, et je me suis rendu d'une autre coquille. la valeur de derniereligne évolue en fonction d'une nombre de lignes que j'ajoute. Je viens de rectifier ce problème. je m'attelle au trie, tu penses que les fonctions sont bonnes mais que le raisonnement est foireux?
0
yg_be Messages postés 23348 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 novembre 2024 1 554 > maxhoo Messages postés 7 Date d'inscription mercredi 20 mars 2019 Statut Membre Dernière intervention 16 septembre 2020
16 sept. 2020 à 13:49
je pense que l'approche est bonne, mais, en effet, le raisonnement de recherche des zones est totalement foireux.
0
maxhoo Messages postés 7 Date d'inscription mercredi 20 mars 2019 Statut Membre Dernière intervention 16 septembre 2020 > yg_be Messages postés 23348 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 novembre 2024
16 sept. 2020 à 15:38
Je viens de trouver et en effet c'était bien un problème de raisonnement. :-) Bonne journée & merci!
0