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 !
Bonjour le forum,
Je suis à la recherche d'une formule qui puisse regrouper une "selection" de cellules sur des même lignes vers des tableaux qui les classent selon leurs codes.
C'est une réquête très abstaite aussi voici la feuille avec en P68 le début de la liste que je tente de réaliser.
J'ai fait des tests avec SOMMPROD mais pas concluants.
Peut être qu'une macro est nécéssaire
J'avais ça dans un autre forum, regarde si ça peut t'aider 😉
Pourquoi un tri sur des données alphanumériques ? ........Parce que ce qui peut le plus peut le moins.
Comme exemple on pourrait citer le tri de nomenclatures de produits, ces nomenclatures pouvant être
- des nombres ou des lettres,
- commencer par des nombres ou par des lettres,
- se terminer par des nombres ou par des lettres
Ce qui peut trier ces trois types de données à l'aide d'une seule procédure pourra trier indifféremment l'un ou l'autre de ces types.
Convention de départ : Les chiffres passent avant les lettres
Restriction : Aucune lettre n'est accentuée.
Explication : Cétoulafôte aux codes ascii qui servent à classer les données :
"0" = chr(48), "9" = chr(57), A = chr(65) ... Z = chr(90), a = chr(97) ... z = chr(122), à = chr(133)
Code:
Private Sub TriDunTabloAlphanumereux()
Dim matata As Variant, mesmoutons As Variant, PlusOuMoins As Integer
'tableau mesmoutons non trié
mesmoutons = Array("170A", "28", "21CX", "AB24", "261CW", "AB4", "3BBB", "1", "D21", "D", "AB12", "170012A", "28245", "214589CX", "AB2473921", "261456CW", "AB125114", "37BBB", "1234", "D21", "Doudou", "ABCD125")
matata = VaTrier(mesmoutons)
'Nettoyage de matata
For PlusOuMoins = 0 To UBound(matata)
matata(PlusOuMoins) = Replace(matata(PlusOuMoins), Chr(1), "")
'Affichage du résultat dans la fenêtre "Exécution"
Debug.Print Trim(matata(PlusOuMoins))
Next
End Sub
Bonne soirée
Code:
Function VaTrier(matata As Variant) As Variant
Dim montonton As String, mimi As String, lanana As String, Environ As Integer, PlusOuMoins As Integer
' on formate tour à tour les numériques puis les données alphabétiques
For PlusOuMoins = 0 To UBound(matata)
If IsNumeric(Left(matata(PlusOuMoins), 1)) Then
mimi = CStr(Val(matata(PlusOuMoins)))
lanana = Mid(matata(PlusOuMoins), Len(mimi) + 1)
matata(PlusOuMoins) = String(20 - Len(mimi), Chr(1)) & mimi & lanana
Else
mimi = ""
lanana = matata(PlusOuMoins)
For Environ = 1 To Len(lanana)
mimi = mimi + Left(lanana, 1)
lanana = Mid(lanana, 2)
If IsNumeric(Left(lanana, 1)) Then Exit For
Next
matata(PlusOuMoins) = mimi & String(20 - Len(lanana), Chr(1)) & lanana
End If
Next
'Tri des données formatées
For PlusOuMoins = 0 To UBound(matata) - 1
For Environ = PlusOuMoins To UBound(matata)
If matata(PlusOuMoins) > matata(Environ) Then
montonton = matata(Environ)
matata(Environ) = matata(PlusOuMoins)
matata(PlusOuMoins) = montonton
End If
Next Environ
Next PlusOuMoins
VaTrier = matata
End Function
- la copier sur S68:V72 en modifiant les colonnes adéquates
- Copier/Collage spécial/Formules de la ligne P68:V68 sur tous les tableaux
- sur chaque tableau, remplacer $68 par la référence de la 1ère ligne.
Voilà, ce fut un peu longuet, mais pas difficile.
Faites les mises en forme que vous désirez, par exemple masquer éventuellement les valeurs zéro, soit par format personnalisé, soit par MFC, soit par menu Outils-Options-Affichage.
Bonsoir Job75
Voila des formules que je découvre INDEX, PETITE.VALEUR (et je vais bientôt les comprendre car je me forme au fur et à mesure).
Cela étant, vos explications et vos formules sont comme toujours parfaites.
Mon programme (60 000Ko par "fichier commande client") arrive bientôt à sa fin.😱
Un grand merci à vous! 😉
(je viens de crier "merci Job" dans mon bureau, on va me prendre pour un fou)
- 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