IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Trier des valeurs alphanumériques


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 487
    Par défaut Trier des valeurs alphanumériques
    Bonjour à tous !

    j'essaie de trier par ordre croissant et alphabétique des valeurs alphanumériques, qui sont du type FL00, FL01, FDOT, etc... pour obtenir quelque chose du type :

    FDOT
    FREP
    FL00
    FL01
    ...
    FL99

    j'ai essayé avec un tableau de variables mais ce n'est pas très pratique car certaines valeurs contiennent uniquement des caractères alpha et pas de caractères numériques...

    Y a-t-il un objet spécifique pour faire cela en VBA ?

    Merci à vous
    laloune

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour Laloune,

    D'après votre exemple il semble que votre code peut être de 4 lettres ou de 2 lettres et 2 chiffres.

    Est-ce toujours le cas ?

    Si oui, il y a une solution passant par l'affectation d'une valeur dans une colonne adjacente.

    Sinon peut-être que l'on va vous proposer une meilleure solution que je ne connais pas.

  3. #3
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 487
    Par défaut
    Salut salut!

    merci pour la réponse

    en réalité, non, cela peut tout à fait être une lettre + 2 chiffres, ou 2 lettres 2 chiffres, quatre lettres... Ce qu'on retrouve invariablement c'est l'incrémentation...

    merci

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Citation Envoyé par jacques_jean
    ... il y a une solution passant par l'affectation d'une valeur dans une colonne adjacente.
    En effet, en passant toutes les données contenant des caractères numériques dans la colonne adjacente... Ça pourrait donner ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Avant	Alpha	Alpha/	Tri 1	Tri 2	résult
    	seul	num
    FDOT	FDOT		FDOT	F002	FDOT
    FL01		FL01	FREP	FL01	FREP
    FL02		FL02		FL02	F002
    FL03		FL03		FL03	FL01
    FL100		FL100		FL100	FL02
    FREP	FREP			FR002	FL03
    F002		F002			FL100
    FR002		FR002			FR002
    Juste une idée

  5. #5
    Invité
    Invité(e)
    Par défaut
    Re Laloune,

    En repartant de l'idée de départ en tenant compte des précisions de Ouskel'n'or essayez si ce code peut vous convenir (deux colonnes utilisées qui peuvent être bien sûr vidées à la fin du traitement) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    Sub Trier()
    dl = Range("A" & Range("A:A").Rows.Count).End(xlUp).Row
    pl = 1
     
        For l = pl To dl
        lon = Len(Cells(l, 1))
        t1 = ""
        t2 = ""
            For c = 1 To lon
            t = Asc(Mid(Cells(l, 1), c, 1))
                If t <= 57 Then
                tn = CStr(t)
                t1 = t1 + tn
                Else
                ta = CStr(t)
                t2 = t2 + ta
                End If
        Next c
        If t1 <> "" Then
        Cells(l, 2) = t1
        Else
        Cells(l, 2) = 0
        End If
        Cells(l, 3) = t2
        Next l
     
    Range(Cells(pl, 1), Cells(dl, 3)).Select
        Selection.Sort Key1:=Range(Cells(pl, 2), Cells(pl, 2)), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
     
        For l = 1 To dl
        n = Cells(l, 2)
            If n > 0 Then
            pln = l
            Exit For
            End If
        Next l
    Range(Cells(pln, 1), Cells(dl, 3)).Select
        Selection.Sort Key1:=Range(Cells(pln, 2), Cells(dl, 2)), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
     
    End Sub

  6. #6
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 487
    Par défaut
    hep !

    j'essaie ca dès demain et je vous tiens au jus

    Merci beaucoup en tous cas !

  7. #7
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour tlm,

    Jacques j'ai essayé ton code et, à moins que mon neurone soit HS (ce qui n'est pas impossible ) il me semble que le tri reste un peu aléatoire selon qu'on a des chaînes de 4 ou 5 caractères, composés de chiffres ou rien que de lettres.

    Je me suis également inspiré de vos idées respectives (tout seul on va plus vite, ensemble on va plus loin) pour bricoler un ptit truc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Sub TESTRI()
    Dim Code%, i%, j%, k%
    Dim Chaine$
     
    For i = 1 To Range("A65535").End(xlUp).Row
    If Cells(i, 1) <> "" Then
    Chaine = Cells(i, 1).Value
    k = Len(Chaine)
    End If
        For j = 1 To k
            For Code = 48 To 90
            If Mid(Chaine, j, 1) = Chr(Code) Then Cells(i, 2) = Cells(i, 2).Value & "A" & Code
            Next
        Next
    Next
     
    Range(Cells(1, 1), Cells(65535, 2).End(xlUp)).Sort Key1:=Range("B1"), Order1:=xlAscending
    Range(Cells(1, 2), Cells(65535, 2).End(xlUp)).ClearContents
     
    End Sub
    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Trier des valeurs scientifiques
    Par étoile de mer dans le forum Shell et commandes POSIX
    Réponses: 4
    Dernier message: 30/03/2013, 22h06
  2. trier des valeurs
    Par Malo1992 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/05/2012, 18h17
  3. [XL-2010] Trier des valeurs dans une feuille et les mettre dans une autre feuille
    Par maharo1 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 19/12/2011, 15h02
  4. [VB]vérifier des valeurs dans un fichiers et trier
    Par Mut dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 16/02/2006, 17h35
  5. Trier une colonne avec des valeurs numériques ou textes
    Par jfc dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 07/02/2006, 11h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo