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 :

[VBA-E] Trier Mes Combobox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de CIBOOX
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 194
    Par défaut [VBA-E] Trier Mes Combobox
    BONSOIR !!!!
    J'ai un userform avec plusieurs combobox liées entres elles

    Je cherche un code qui me permettrai,pour n'importe quelle combobox de classer les valeurs par trie croissant...


  2. #2
    Membre éclairé
    Avatar de mortalino
    Inscrit en
    Janvier 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2007
    Messages : 72
    Par défaut
    Salut,

    colle cette procédure parmis les autres de ton userform :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Tri(ByRef Liste() As String)
        Dim i As Long, j As Long
        Dim Temp As String
     
    For i = LBound(Liste) To UBound(Liste) - 1
        For j = i + 1 To UBound(Liste)
            If Liste(i) > Liste(j) Then
                Temp = Liste(j)
                Liste(j) = Liste(i)
                Liste(i) = Temp
            End If
        Next j
    Next i
    End Sub
    Ensuite, quand tu as besoin de trier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        Dim MyData() As String
        Dim i As Long
     
        ReDim MyData(NomComBo.ListCount - 1) ' NomComBo à remplacer
    For i = 0 To NomComBo.ListCount ' NomComBo à remplacer
        MyData(i) = NomCombo.List(i) ' NomComBo à remplacer
    Next i
     
    Call Tri(MyData)
    NomComBo.Clear ' NomComBo à remplacer
    For i = LBound(MyList) To UBound(MyList)
        NomComBo.AddItem MyList(i) ' NomComBo à remplacer
    Next i
    Erase MyData

    @++

  3. #3
    Membre confirmé Avatar de CIBOOX
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 194
    Par défaut
    en aplliquant ton code j'ai une erreur 424 objet requis...

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par CIBOOX
    en aplliquant ton code j'ai une erreur 424 objet requis...
    sur qu'elle ligne et comment l'applique tu ce code ..?

  5. #5
    Membre confirmé Avatar de CIBOOX
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 194
    Par défaut
    Citation Envoyé par bbil
    sur qu'elle ligne et comment l'applique tu ce code ..?
    sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ReDim MyData(NomCombo.ListCount - 1) ' NomComBo à remplacer
    j'ai place ce code dans Private Sub cbox2_Click() ( cbox2=combobox2)

  6. #6
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    et tu as lu le commentaire de cette ligne ..?
    ' NomComBo à remplacer

  7. #7
    Membre confirmé Avatar de CIBOOX
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 194
    Par défaut Voila Le Bebe
    j'ai suivi tes conseils et reparti de la ligne 1 et de la colonne 1

    j'ai appliquer le code de SilkyRoad ( merci SilkyRoad ça marche !!!! ) et maintenant le tri pour chaque combobox marche


    le hic c'est que j'ai plus les liaisons entre les cbox
    exemple le stagiaire est maintenant du bureau de la direction et a un ligne privee c space nan

  8. #8
    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
    le hic c'est que j'ai plus les liaisons entre les cbox
    Effectivement, ça peut pas marcher : Si tu effectues un "tri croissant d'un seul combo, l'index de ce combo ne correspond plus à l'index des autres combo. C'est évident !
    Avec cette méthode, il faudrait que tu tries tous les autres combo en fonction du combo sélectionné. Une usine à gaz.
    "Je crois me souvenir" que je t'ai fourni la seule méthode applicable si tu veux une corrélation entre tes index de combo, à savoir le tri de la base selon la colonne correspondant au combo sélectionné.
    Le problème : Pour un tri classique de la base telle qu'elle est, aucune cellule de ta plage de données correspondant au combo sélectionné ne doit être vide. Ainsi, tu ne pourras trier aucune des colonnes au delà de la colonne D.
    Aucun problème pour effectuer un tri de la base si ta sélection s'effectue dans un combo correspondant aux colonnes 1 à 4.
    Aucun pb non plus pour un simple affichage des données dans les combo 5 à 23 si la sélection s'effectue dans les combos 1 à 4.

    En cause, la méthode retenue de remplissage des combos
    Une solution consisterait à faire deux colonnes, une visible, contenant la donnée, la seconde masquée, indiquant le N° de ligne.
    Pour les afficher, le N° de ligne seul assurerait la liaison entre les combos, non l'index...
    Je passe la main.
    Bon courage !
    Mais je suivrai tes progrès

  9. #9
    Membre confirmé Avatar de CIBOOX
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 194
    Par défaut
    Merci pour tous tes indications et tes conseils


    je pensai arriver au bout mais je m'en eloigne de plus en plus ......

    @la prochaine

  10. #10
    Membre confirmé Avatar de CIBOOX
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 194
    Par défaut
    je cherche un code qui tri les item des combobox sans toucher a leurs index

  11. #11
    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
    T'étais sérieux ?
    Citation Envoyé par quand tu
    je cherche un code qui tri les item des combobox sans toucher a leurs index
    C'est comme si tu demandes à Excel de classer les données par ordre alpha sans changer les N° de lignes
    Ce qu'on peut faire, c'est trier tes données par ordre alpha dans une feuille Excel, ce qui aura pour effet de classer tes données dans le combo si celui-ci est renseigné à l'aide de RowSource.
    La condition sine qua non, pour effectuer un tri dans ces conditions, étant que toutes les cellules de la colonne sur laquelle s'effectue le tri, soient renseignées.
    Ensuite, pour lier les combos selon l'index d'une sélection de l'un d'eux, les données concernant 1 même item doivent se trouver sur la même ligne.
    Ça paraît évident mais j'ai eu l'impression, dans ton précédent fichier, que ce n'était pas le cas.
    Je regarde celui que tu viens de lier

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

Discussions similaires

  1. [XL-2010] Code VBA pour trier sur combobox
    Par duplaly dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/04/2011, 17h56
  2. [VBA-P][Débutant] PresentationOpen, ComboBox et Diaporama
    Par Pikasacha dans le forum VBA PowerPoint
    Réponses: 7
    Dernier message: 15/02/2006, 13h26
  3. [VBA-E] pbl sur combobox
    Par Igloobel dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 06/02/2006, 08h47
  4. [VBA Excel] Trier une plage à plusieurs colonnes
    Par loacast dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 22/12/2005, 17h04
  5. Trier mes requete par date au format dd/mm/yy
    Par danje dans le forum Langage SQL
    Réponses: 6
    Dernier message: 19/09/2005, 18h06

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