• Initiateur de la discussion Initiateur de la discussion desatan
  • Date de début Date de début

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 !

desatan

XLDnaute Occasionnel
Bonjour,

J'ai dans une cellule, un code, par exemple : 21644-51-215-01-121
Chaque chiffre correspond à un nombre.
Est il possible de classer le nombre de cette même cellule du plus petit au plus grand ?
Ci joint un petit exemple, en A2 mon code et en C2 le résultat du tri automatique que je souhaite.
Merci par avance.
 

Pièces jointes

Re : TRI cellule

Bonjour,

une proposition "simple"
tu utilises le convertisseur: Données - Convertir - Délimité avec le caractère "-"
le code est ainsi réparti sur 5 colonnes (en supposant que le code d'origine est constitué de 5 nombres
ensuite tu reconstruis le code trié avec la fonction grande.valeur
 

Pièces jointes

Re : TRI cellule

merci pour ta réponse,

j'essaye mais le problème c'est que je n'ai pas le même nombre de chiffres dans chaque cellule.
Dans mon exemple, la cellule comporte 5 nombres, dans d'autres cellules, je peux en avoir 10 ou 6 ou plus ??
 
Dernière édition:
Re : TRI cellule

Bonjour,

Mettre vos données en colonne B

Dans onglet DONNEES - Faire convertir -
Cocher : Délimité et faire suivant
Cocher autre puis inscrire le signe " - " dans le champ et faire suivant
Dans le champ destination mettre =$C$2 et faire terminer

Le résultat en colonne A
La formule est valable pour 11 suites de chiffre ou nombre et est valable également en cas de doublon dans la chaîne.

=CONCATENER(SIERREUR(PETITE.VALEUR(C2:M2;1);"");SIERREUR("-"&PETITE.VALEUR(C2:M2;2);"");SIERREUR("-"&PETITE.VALEUR(C2:M2;3);"");SIERREUR("-"&PETITE.VALEUR(C2:M2;4);"");SIERREUR("-"&PETITE.VALEUR(C2:M2;5);"");SIERREUR("-"&PETITE.VALEUR(C2:M2;6);"");SIERREUR("-"&PETITE.VALEUR(C2:M2;7);"");SIERREUR("-"&PETITE.VALEUR(C2:M2;8);"");SIERREUR("-"&PETITE.VALEUR(C2:M2;9);"");SIERREUR("-"&PETITE.VALEUR(C2:M2;10);"");SIERREUR("-"&PETITE.VALEUR(C2:M2;11);""))
 

Pièces jointes

Re : TRI cellule

Bonjour à tous

une solution par fonction personnalisée

Code:
Function TriCellule(Cel)
 Dim MonTab, i, N, temp
 
 N = 0
 MonTab = Split(Range("A2"), "-")
 Do
    N = 0
    For i = LBound(MonTab) + 1 To UBound(MonTab)
        If Val(MonTab(i - 1)) > Val(MonTab(i)) Then
            temp = MonTab(i)
            MonTab(i) = MonTab(i - 1)
            MonTab(i - 1) = temp
            N = N + 1
        End If
    Next
 Loop Until N = 0
 
 For i = LBound(MonTab) To UBound(MonTab)
    temp = temp & "-" & MonTab(i)
 Next
 TriCellule = temp
End Function

à copier dans un module standard . Même utilisation qu'une fonction "ordinaire"

A+
 
Re : TRI cellule

Hello Desatan, Paf

Si je peux me permettre une correction sur ta fonction Paf
au moment de recréer montab, la variable temp contient déjà la première valeur du tableau

il suffit donc de commencer la boucle au deuxième élément (sous peine d'avoir deux fois le meme élément
Code:
Function TriCellule(Cel)
 Dim MonTab, i, N, temp
 
 N = 0
 MonTab = Split(Range("A2"), "-")
 Do
    N = 0
    For i = LBound(MonTab) + 1 To UBound(MonTab)
        If Val(MonTab(i - 1)) > Val(MonTab(i)) Then
            temp = MonTab(i)
            MonTab(i) = MonTab(i - 1)
            MonTab(i - 1) = temp
            N = N + 1
        End If
    Next
 Loop Until N = 0
 'temp = MonTab(0)
 For i = LBound(MonTab) + 1 To UBound(MonTab)
    temp = temp & "-" & MonTab(i)
 Next
 TriCellule = temp
End Function


Desatan, plutot que le mettre à ta place dans ton fichier (tu n'apprendrais rien ;-) ), voici comment faire

ouvrir l'éditeur vba (Alt + F11)
à gauche dans l'explorateur, faire un clic droit sur le projet du nom de ton fichier, inserer module
dans la fenetre à droite, tu copies colles le code

et voila ;-)
t'as plus qu'à utiliser la fonction TriCellule comme tu le fais avec les sommes et autres fonctions d'excel
 
Re : TRI cellule

merci beaucoup ;-)

La fonction fonctionne sur une ligne mais j'ai plus de 100 lignes. La fonction peut elle être adaptée pour que je l'utilise sur chaque ligne ?
Regarder dans mon fichier ci joint
Merci par avance
 

Pièces jointes

Re : TRI cellule

ah oui. evidemment.. restait Deux "erreurs" dans la fonction
MonTab =split("A2","-") au lieu de Split(Cel,"-")
sinon. à quoi ca sert d'appeler la fonction avec la cellule désirée ;-)

et l'initialisation de la variable temp qui était en commentaire..

modifie comme suit
Code:
Function TriCellule(Cel)
 Dim MonTab, i, N, temp
 
 N = 0
 MonTab = Split(Cel, "-")
 Do
    N = 0
    For i = LBound(MonTab) + 1 To UBound(MonTab)
        If Val(MonTab(i - 1)) > Val(MonTab(i)) Then
            temp = MonTab(i)
            MonTab(i) = MonTab(i - 1)
            MonTab(i - 1) = temp
            N = N + 1
        End If
    Next
 Loop Until N = 0
 temp = MonTab(0)
 For i = LBound(MonTab) + 1 To UBound(MonTab)
    temp = temp & "-" & MonTab(i)
 Next
 TriCellule = temp
End Function

ensuite. tu tires ta formule vers le bas
 
Dernière édition:
- 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

Discussions similaires

Réponses
7
Affichages
597
Réponses
12
Affichages
338
Retour