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 un ListBox multicolonnes hérité lui-même d'un autre ListBox (en cascade) [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Consultant
    Inscrit en
    Mai 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Consultant
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2017
    Messages : 66
    Points : 20
    Points
    20
    Par défaut Trier un ListBox multicolonnes hérité lui-même d'un autre ListBox (en cascade)
    Bonjour à toutes et tous,

    Mon projet qui se voudrait être un outil d'analyse de résultats de laboratoire comprend une Base de plusieurs dizaines de colonnes alimentées par de nombreux ComboBox.

    Je fais une première sélection à l'aide d'un ComboBox qui recueille des données provisoires sur la feuille Rapports (il ne faut en aucun cas modifier la Base) et les affiche dans le ListBox1 du UserForm1 (tout est dans la pièce jointe)

    Le doubleclick sur une ligne du ListBox1 (nouvelle sélection) permet d'afficher dix colonnes triées dans le ListBox2 du même UserForm.

    Différents boutons de tri devraient ensuite à partir de ce qui est visible dans le ListBox2, afficher à la place dans le ListBox2 des valeurs contenues dans d'autres colonnes (non visibles) de la Base, ce qui permet le rapprochement des données et une bien meilleure lisibilité pour l'analyse.

    Pour cela, on cherche dans une plage toutes les cellules contenant la valeur recherchée (on récupère les n° de ligne où elle se trouve) et on transfère les données de la Base sur la feuille Rapports pour pouvoir les classer puis les afficher dans le ListBox2.

    Mon problème et dans la boucle de recherche qui est infinie !!!

    Merci à celle ou celui qui prendra le temps de m'apporter ses lumières

    Bono1664
    Fichiers attachés Fichiers attachés

  2. #2
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Points : 2 156
    Points
    2 156
    Par défaut
    Bonjour,

    Mettre le fichier en format standard (.zip)

    Boisgontier

  3. #3
    Membre à l'essai
    Homme Profil pro
    Consultant
    Inscrit en
    Mai 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Consultant
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2017
    Messages : 66
    Points : 20
    Points
    20
    Par défaut Trier un ListBox multicolonnes hérité lui-même d'un autre ListBox (en cascade)
    Désolé, fausse manoeuvre
    Fichiers attachés Fichiers attachés

  4. #4
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Points : 2 156
    Points
    2 156
    Par défaut
    Ce que j'ai compris: trier la ListBox2 par ordre alphabétique

    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
     
    'Tri ListBox2(Col 1)
    Private Sub CmdTRI1_Click()
      Dim Tbl()
      Tbl = Me.ListBox2.List
      Tri Tbl, LBound(Tbl), UBound(Tbl), 1
      Me.ListBox2.List = Tbl
    End Sub
     
    Sub Tri(a(), gauc, droi, colTri) ' Quick sort
      Dim colD, colF, ref, g, d, c, temp
      colD = LBound(a, 2): colF = UBound(a, 2)
      ref = a((gauc + droi) \ 2, colTri)
      g = gauc: d = droi
      Do
        Do While a(g, colTri) < ref: g = g + 1: Loop
        Do While ref < a(d, colTri): d = d - 1: Loop
        If g <= d Then
          For c = colD To colF
            temp = a(g, c): a(g, c) = a(d, c): a(d, c) = temp
          Next
          g = g + 1: d = d - 1
        End If
      Loop While g <= d
      If g < droi Then Tri a, g, droi, colTri
      If gauc < d Then Tri a, gauc, d, colTri
    End Sub
    Boisgontier
    Fichiers attachés Fichiers attachés

  5. #5
    Membre à l'essai
    Homme Profil pro
    Consultant
    Inscrit en
    Mai 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Consultant
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2017
    Messages : 66
    Points : 20
    Points
    20
    Par défaut Trier un ListBox multicolonnes hérité lui-même d'un autre ListBox (en cascade)
    Bonsoir M Boisgontierjacques,

    et merci pour cette réponse ultrarapide.

    Ce tri fonctionne très bien sur la colonne 1, mais je n'en ai pas compris toutes les subtilités : s'il fallait effectuer un tri sur une autre colonne, quelles seraient les données à modifier ?

    Merci pour votre patience.

    Cordialement

    Bono1664

  6. #6
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Points : 2 156
    Points
    2 156
    Par défaut
    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
     
    'Tri ListBox2(Col 1)
    Private Sub CmdTRI1_Click()
      Dim Tbl()
      Tbl = Me.ListBox2.List
      Tri Tbl, LBound(Tbl), UBound(Tbl), 1
      Me.ListBox2.List = Tbl
    End Sub
     
    Private Sub CmdTRI2_Click()
      Dim Tbl()
      Tbl = Me.ListBox2.List
      Tri Tbl, LBound(Tbl), UBound(Tbl), 2
      Me.ListBox2.List = Tbl
    End Sub
     
    Private Sub CmdTRI3_Click()
      Dim Tbl()
      Tbl = Me.ListBox2.List
      Tri Tbl, LBound(Tbl), UBound(Tbl), 3
      Me.ListBox2.List = Tbl
    End Sub
    Boisgontier
    Fichiers attachés Fichiers attachés

  7. #7
    Membre à l'essai
    Homme Profil pro
    Consultant
    Inscrit en
    Mai 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Consultant
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2017
    Messages : 66
    Points : 20
    Points
    20
    Par défaut Trier un ListBox multicolonnes hérité lui-même d'un autre ListBox (en cascade)
    Bonjour M boisgontierjacques,

    vous avez parfaitement répondu au titre de la discussion et je vous en remercie infiniment c'est pourquoi je l'ai marquée résolue.

    Cependant, mon souhait était un peu plus vaste, puisque la base en réalité faisant plusieurs dizaines de colonnes, c'était la possibilité de pouvoir importer d'autres colonnes dans le ListBox, raison pour laquelle je passait par la feuille RAPPORTS (mais peut-être y a-t-il d'autres solutions ?).

    C'est pourquoi je vais proposer une autre discussion : "Importer de nouvelles colonnes dans un ListBox multicolonnes" en conservant la même maquette.

    Merci encore

    Cordialement

    Bono1664

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 27/03/2006, 19h50
  2. Clé Registre et copie du programme par lui même
    Par True Cluster dans le forum Windows
    Réponses: 5
    Dernier message: 13/03/2006, 13h59
  3. ACCESS 2002 (XP) incompatible avec lui même ?
    Par xanthos1348 dans le forum Access
    Réponses: 1
    Dernier message: 05/12/2005, 23h23
  4. [Rotation] Faire tourner un cube sur lui-même
    Par cyber_N dans le forum OpenGL
    Réponses: 4
    Dernier message: 14/07/2005, 21h29
  5. fichier envoye value de champ texte à lui même
    Par mat10000 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 23/04/2005, 07h33

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