Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/09/2011, 10h23   #1
Invité de passage
 
Étudiant
Inscription : février 2008
Messages : 17
Détails du profil
Informations personnelles :
Âge : 23
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2008
Messages : 17
Points : 3
Points : 3
Par défaut Tri d'une colonne de string contenant des chiffres

Bonjour,

Après plusieurs recherches sur le site et sur google en général vis à vis de mon problème et n'ayant rien trouvé, je me permet de vous poser ma question.
Veuillez direct m'excuser si la question a déjà été posé (elle a du l'être) mais je n'ai pas trouvé...

Ma question est toute bête:
Je souhaite effectuer le tri d'une colonne par ordre croissant. Cette colonne contient des chaines de caractères se terminant avec des chiffres, de type EJH_IU_780.
Les lettres sont toutes les mêmes dans la colonne, seul les chiffres diffèrent.

Pour l'instant j'utilise la méthode range.sort pour effectuer mon tri:

Code :
Range("B3:P100").Sort Key1:=Range("B3"), Order1:=xlAscending

Ca marche correctement pour les chiffres en centaine (723/736/869/920 ) mais après j'en ai des 1000 qu'il me classe au début. Alors qu'il me les faudrait à la fin...

J'imagine que si j'ai des nombre autour de 100 et 200 il me classera ca comme ca:
EJH_IU_100
EJH_IU_1000
EJH_IU_200
EJH_IU_700

Ma question est donc la suivante: comment faire pour que le tri prenne en compte la valeur numérique ? Faut-il obligatoirement que je crée une autre colonne caché dans laquelle je copierai juste la valeur numérique du string ou peut-on rajouter un filtre sur la méthode sort ?

Merci bien,

Xunopa
Xunopa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2011, 13h22   #2
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Bonjour
Il faudrait passer par une colonne supplémentaire (en l’occurrence ci après la colonne Q dans la proposition) ou bien re formater les données de la colonne B comme ceci EJH_IU_xxxxxx (les x désignent des chiffres, exemple EJH_IU_000100, EJH_IU_000578, EJH_IU_001567) et faire le tri normal sans colonne supplémentaire.

Proposition:
Code :
1
2
3
4
5
6
7
8
9
10
11
Sub TriSpe()
Dim LastLig As Long
 
Application.ScreenUpdating = False
With Worksheets("Feuil1")                                  'A adapter
    LastLig = .Cells(.Rows.Count, "B").End(xlUp).Row
    .Range("Q3:Q" & LastLig).Formula = "=SUBSTITUTE(B3,""EJH_IU_"","""")*1"
    .Range("B3:Q" & LastLig).Sort Key1:=.Range("Q3"), Order1:=xlAscending, Header:=xlNo
    .Columns(17).Delete
End With
End Sub
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/10/2011, 10h59   #3
Invité de passage
 
Étudiant
Inscription : février 2008
Messages : 17
Détails du profil
Informations personnelles :
Âge : 23
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2008
Messages : 17
Points : 3
Points : 3
Salut mercatog,

Merci à toi pour ta réponse et pour ton aide.
J'ai choisi de passer par une autre colonne comme tu me l'as proposé.

Problème résolu donc.

Merci encore et bonne journée.
Xunopa est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h04.


 
 
 
 
Partenaires

Hébergement Web