Microsoft 365 tri alphabétique particulier

crown54

XLDnaute Junior
Bonjour à toutes et tous,
je soumets à nouveau une requête aux experts VBA.
J'ai un tableau dont j'aimerai faire un tri par colonne mais pas selon la première lettre, mais selon la lettre située après le point et l'espace qui suit. Ex: A. S; C. W; A. G etc...
Pensez-vous que cela soit possible?
voici le un exemple avec le tableau en question en pj.
La colonne A a des cellules fusionnées donc je souhaite sélectionner à partir de B4 jusque S38 et appliquer cette macro sur la colonne B à l'exception des cellules vides qui doivent rester en place.
Merci beaucoup de votre aide et bonne soirée
 

Pièces jointes

  • macro tri ordre alpha.xlsm
    16.5 KB · Affichages: 8

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Crown,
Bizarre comme tri ... :)
Un essai en PJ avec :
VB:
    Application.ScreenUpdating = False
    [D:D].ClearContents
    ' Transfert données dans array
    DL = [B65500].End(xlUp).Row
    T = Range("B2:C" & DL)
    ' Séparation avec ". ", mise de la valeur en colonne 2
    For i = 1 To UBound(T)
        If T(i, 1) <> "" Then T(i, 2) = Split(T(i, 1), ". ")(1)
    Next i
    ' Tri alpha sur la colonne 2
    For i = 1 To UBound(T)
        For j = i To UBound(T)
            If T(i, 2) > T(j, 2) Then
                Buffer = T(i, 1): T(i, 1) = T(j, 1): T(j, 1) = Buffer
                Buffer = T(i, 2): T(i, 2) = T(j, 2): T(j, 2) = Buffer
            End If
        Next j
    Next i
    ' Chargement résultat dans la feuille
    [D2].Resize(UBound(T, 1), 1) = T
    ' Suppression des cases vides au début ( car les vides sont en premier en tri alpha )
    PL = [D1].End(xlDown).Row
    If PL > 2 Then Range("D2:D" & PL - 1).Delete Shift:=xlUp
End Sub
 

Pièces jointes

  • macro tri ordre alpha.xlsm
    20.4 KB · Affichages: 3

crown54

XLDnaute Junior
c'est un très bon début.
Voilà pour complexifier le truc mon fichier est un planning avec un onglet par mois et je souhaiterais chaque mois faire ce tri dans l'onglet avant de l'imprimer. Du coup là ça ne marche pas cf feuille 2
Merci en tout cas ça m'impressionne à chaque fois. J'aimerais avoir votre niveau.
 

Pièces jointes

  • macro tri ordre alpha (1).xlsm
    26.9 KB · Affichages: 6

sylvanu

XLDnaute Barbatruc
Supporter XLD
je pensais que ça serait plus simple petit à petit.
C'est une erreur, une macro est faite pour une structure donnée, elle ne peut être universelle.
Si vous aviez eu la curiosité de lire la macro du post précédent, vous vous seriez aperçu que le principe ne peut pas s'appliquer à votre nouveau format. Donc il faut tout reprendre.
Un essai en PJ avec :
VB:
Sub TriAlphaSpecial2()
    Application.ScreenUpdating = False
    ' Insertion colonne en B
    Columns("B:B").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    DL = [C65500].End(xlUp).Row
    ' Séparation avec ". ", mise de la valeur en colonne B
    For i = 1 To DL
        If Cells(i, "C") <> "" Then Cells(i, "B") = Split(Cells(i, "C"), ". ")(1)
    Next i
    ' Tri colonne B
    Range("B4:AG" & DL).Select
    ActiveSheet.Sort.SortFields.Clear
    ActiveSheet.Sort.SortFields.Add Key:=Range("B4:B" & DL), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveSheet.Sort
        .SetRange Range("B4:AG" & DL)
        .Header = xlGuess: .MatchCase = False: .SortMethod = xlPinYin: .Apply
    End With
    ' Suppression colonne B
    Columns("B:B").Delete Shift:=xlToLeft
    [A1].Select
End Sub
Pour être lisible, il faut que toutes les lignes aient la même hauteur. ( contrairement aux lignes 31 et 37 de votre feuille )
 

Pièces jointes

  • macro tri ordre alpha (V2).xlsm
    37.8 KB · Affichages: 1

Phil69970

XLDnaute Barbatruc
Bonjour @crown54 et Sylvain

Voici ma version

J'ai remis les cellules vides à la ligne ou elles étaient comme demandé (ou ce que j'en ai compris) si j'ai mal compris il y a 4 lignes à supprimer
Le code est commenté
à l'exception des cellules vides qui doivent rester en place.

Comme Sylvain je n'aime pas feuilletonner donc j'en suis rester à la demande initiale légèrement modifiée et transposable facilement .... ;)

Merci de ton retour
 

Pièces jointes

  • Tri sur 2eme caractere V1.xlsm
    22.8 KB · Affichages: 4

crown54

XLDnaute Junior
Bonjour Phil69970 et merci pour ta proposition.
J'ai testé dans le fichier final. Ca ne fonctionne pas malheureusement.
Je me rends compte que ma demande est trop complexe sans doute et que je n'arriverai pas à l'appliquer à mon fichier. Je n'ai pas votre talent et adapter un code n'est pas si simple effectivement. c'est un métier.
Merci en tout cas pour vos propositions et votre patience.
Bonne journée
Cordialement
 

Phil69970

XLDnaute Barbatruc
Re

@crown54

Quelques remarques :

1)
Je me rends compte que ma demande est trop complexe sans doute
J'en doute fort car avec Excel on peut pratiquement tout faire sauf le café 🤣 🤣

Ton problème vient du fait que tu as "feuilletonné" ta question ce qui est mal perçu car en général il faut tout refaire à chaque fois !!! Et forcement cela fonctionne rarement sur ton vrai fichier o_O

2)
je n'arriverai pas à l'appliquer à mon fichier.
C'est que le fichier fourni n'est pas représentatif !!!

C'est quoi représentatif ?

- représentatif, même organisation des lignes et des colonnes, mêmes libellés, mêmes noms de feuilles...
- anonymisé, pas de données personnelles réelles tels nom, n° sécu, adresse ... remplacé par Nom1, Nom2 etc ....
- simplifié, une quinzaine de lignes reproduisant l'ensemble des différents cas envisageables (Avec le résultat souhaité éventuellement)

Si cela fonctionne sur le fichier fourni et pas sur le vrai fichier c'est qu'il n'est en rien représentatif et/ou que tu n'as pas su transposer ce qui devrait être un simple copier coller du code.

Bonne lecture
 

crown54

XLDnaute Junior
Merci de ta réponse. Oui je pense bien qu'on peut tout faire avec excel (sauf le café 😉). C'est juste que je ne voulais pas arriver avec mon fichier et que les pros bossent pour moi. J'aime bien comprendre et essayer d'adapter mais je dois me faire une raison, je n'ai pas le niveau 🤣. Je vais mettre le fichier complet anonymisé pour éviter de feuilletonner si vous souhaitez tout de même essayer?
 

Phil69970

XLDnaute Barbatruc
Re

@crown54

Je te propose ce fichier
Comme j'ai pas voulu faire un bouton
Voir le module 6 et sélectionner et lancer la macro


1690659758030.png


La barre de statut te permet de voir quel mois est en cours de tri

1690660388817.png


Le tri se fait seulement sur la zone B4:B37
Si tu veux trier sur tout le mois voir les explications dans le code

Merci de ton retour mais je serais absent pour quelques jours ....
 

Pièces jointes

  • Tri special planning V1.xlsm
    189.5 KB · Affichages: 5

Discussions similaires

Statistiques des forums

Discussions
312 207
Messages
2 086 228
Membres
103 160
dernier inscrit
Torto