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 :

Problème d'affiche dans une ListBox et ses colonnes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Santé

    Informations forums :
    Inscription : Février 2019
    Messages : 28
    Par défaut Problème d'affiche dans une ListBox et ses colonnes
    Bonjour,

    Je galère avec une ListBox ou j'aimerai afficher dedans la valeur du résultat d'une recherche .Find et dans la deuxieme colonne juste a coté la valeur Offset -1 de ce que je cherche avec mon .Find.

    Par exemple dans mon fichier j'ai 4 fois Dr James pour 4 blocs d'années différents le tout sur la même feuille du fichier (1 bloc de ligne avec chaques medecin de 2016, un bloc de ligne identique pour 2017 etc...). Lors ce que je cherche Dr James, je retrouve bien 4 fois Dr James dans ma ListBox en colonne 1 et par contre en colonne 2 je n'ai qu'une fois la discipline pour le premier des 4 résultats (Dr James Hématologie).

    En théorie vue que le Dr James ne travaille qu'en hématologie je devrait avoir dans ma listbox

    Dr James Hématologie
    Dr James Hématologie
    Dr James Hématologie
    Dr James Hématologie

    mais je me retrouve avec dans ma listbox ceci

    Dr James Hématologie
    Dr James
    Dr James
    Dr James

    Si quelqu'un sait m'expliquer et me dire comment faire pour avoir mes 4 Dr James et 4 fois leurs disciplines à coté se serait super

    mon code ici

    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
    Private Sub RechercheButton1_Click()
     
    Dim Val_chercher As Range
    Dim Val_trouver As Range
    Dim Value As String
    Dim result As String
     
    ListBox1.Clear
     
    Set Val_chercher = Worksheets("Feuil2").Range("C2:C171")
     
       With Val_chercher
           Set Val_trouver = .Find(TextBox1.Value, LookIn:=xlValues, LookAt:=xlPart)
     
           If Not Val_trouver Is Nothing Then
                result = Val_trouver.Address
                Do
                    Set Val_trouver = .FindNext(Val_trouver)
     
     
     
                    UserForm1.ListBox1.AddItem Val_trouver.Value
                    MsgBox Val_trouver.Value
                    UserForm1.ListBox1.List(0, 1) = Val_trouver.Offset(0, -1).Value
                    UserForm1.ListBox1.List(0, 2) = Val_trouver.Offset(0, -2).Value
                    MsgBox UserForm1.ListBox1.List(0, 2)
     
                Loop While Not Val_trouver.Address = result
     
           Else
                Value = MsgBox(TextBox1.Value & " résultat PAS trouvé!")
     
           End If
       End With
    End Sub
    Images attachées Images attachées  

  2. #2
    Membre extrêmement actif
    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
    Par défaut
    Bonjour,

    Exemple pour montrer ce qui manque (regarder i):

    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
    Private Sub B_go_Click()
        Me.ListBox1.Clear
        Set Rng = Range("a:a")
        Set c = Rng.Find(Me.TextBox1.Value, LookIn:=xlValues)
        If Not c Is Nothing Then
          premier = c.Address
          i = 0
          Do
            Me.ListBox1.AddItem
            Me.ListBox1.List(i, 0) = c.Value
            Me.ListBox1.List(i, 1) = c.Offset(0, 1).Value
            Me.ListBox1.List(i, 2) = c.Offset(0, 2).Value
            Set c = Rng.FindNext(c)
            i = i + 1
          Loop While Not c Is Nothing And c.Address <> premier
        End If
    End Sub
    Boisgontier
    Fichiers attachés Fichiers attachés

  3. #3
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Santé

    Informations forums :
    Inscription : Février 2019
    Messages : 28
    Par défaut
    Ok, desolé d'avoir créer un topic pour si peu...

    J'ai trouvé la solution a mon problème et en le resolvant je m'en suis créer un nouveau

    Mon nouveau problème est que contrairement a ce que j'ai expliqué dans mon premier post, je souhaiterai non pas 2 mais 3 colonnes dans ma ListBox (1 pour le Medecin, 1 pour la discipline, 1 pour l'année). Jusque la tout va bien.
    En revanche la colonne des années ne m'affichent pas de le bon ordre des années.
    Elle me sort:

    2017
    2018
    2019
    2016

    Alors que je voudrai:

    2016
    2017
    2018
    2019

    La solution pour afficher des données sur plusieurs lignes et colonnes dans une ListBox qui peux éventuellement servir a d'autres:
    Il fallait juste rajouter un compteur i pour que le AddItem ne remplace pas les valeurs de ma première ligne de ma ComboBox mais en rajoute bien une nouvelle.

    Le code:
    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
    Private Sub RechercheButton1_Click()
    
    Dim Val_chercher As Range
    Dim Val_trouver As Range
    Dim Value As String
    Dim result As String
    Dim i As Integer
    
    ListBox1.Clear
    i = 0
    
    Set Val_chercher = Worksheets("Feuil2").Range("C2:C171")
    
       With Val_chercher
           Set Val_trouver = .Find(TextBox1.Value, LookIn:=xlValues, LookAt:=xlPart)
    
           If Not Val_trouver Is Nothing Then
                result = Val_trouver.Address
                Do
                    Set Val_trouver = .FindNext(Val_trouver)
                    UserForm1.ListBox1.AddItem Val_trouver.Value
                    UserForm1.ListBox1.List(i, 1) = Val_trouver.Offset(0, -1).Value
                    UserForm1.ListBox1.List(i, 2) = Val_trouver.Offset(0, -2).Value
                    i = i + 1
                Loop While Not Val_trouver.Address = result
                
           Else
                Value = MsgBox(TextBox1.Value & " résultat PAS trouvé!")
    
           End If
       End With
    End Sub

  4. #4
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Santé

    Informations forums :
    Inscription : Février 2019
    Messages : 28
    Par défaut
    Héhé super, merci de ton retour, je devais surement être deja sur la piste au moment de ta réponses!

    Aurais tu une idée de correction de mon nouveau problème? (A savoir l'affichage dans l'ordre des années dans a ListBox)
    Je joins un screenshot pour que se soit plus explicite.
    Images attachées Images attachées  

  5. #5
    Membre extrêmement actif
    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
    Par défaut
    Le + simple est de trier la BD par année

    Sinon trier la ListBox

    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
    Private Sub B_go_Click()
        Dim Tbl()
        Me.ListBox1.Clear
        Set Rng = Range("a:a")
        Set c = Rng.Find(Me.TextBox1.Value, LookIn:=xlValues)
        If Not c Is Nothing Then
          premier = c.Address
          n = 0
          Do
            n = n + 1: ReDim Preserve Tbl(1 To 3, 1 To n)
            Tbl(1, n) = c.Value: Tbl(2, n) = c.Offset(0, 1).Value: Tbl(3, n) = c.Offset(0, 2).Value
            Set c = Rng.FindNext(c)
          Loop While Not c Is Nothing And c.Address <> premier
        End If
        Me.ListBox1.Column = Tbl
        b = Me.ListBox1.List
        Tri b, 2, LBound(b), UBound(b)
        Me.ListBox1.List = b
    End Sub
     
    Sub Tri(a, ColTri, gauc, droi) ' Quick sort
      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 k = LBound(a, 2) To UBound(a, 2)
             temp = a(g, k): a(g, k) = a(d, k): a(d, k) = temp
           Next k
           g = g + 1: d = d - 1
        End If
      Loop While g <= d
      If g < droi Then Call Tri(a, ColTri, g, droi)
      If gauc < d Then Call Tri(a, ColTri, gauc, d)
    End Sub
    Boisgontier
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. [E03] - Modifier les valeurs affichées dans une listbox
    Par couistelle dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 10/03/2009, 13h46
  2. Réponses: 5
    Dernier message: 18/09/2008, 15h02
  3. Problème d'affichage dans une listbox
    Par swap_nibble dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 25/01/2008, 17h29
  4. Afficher dans une ListBox
    Par fermat dans le forum Delphi
    Réponses: 5
    Dernier message: 21/10/2006, 00h00
  5. Problème de sélection dans une listbox
    Par cacahuèèète dans le forum Access
    Réponses: 3
    Dernier message: 29/06/2006, 15h03

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