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 :

Affichage plusieurs colonnes ListBox après recherche texte dans la feuille [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 79
    Points : 53
    Points
    53
    Par défaut Affichage plusieurs colonnes ListBox après recherche texte dans la feuille
    Bonjour et merci d’avance pour ce forum

    Information : cliqué sur le bouton « Chercher le plan du code » dans la feuille P associer arret
    Objectif : afficher la colonne B et D dans ListBox2

    Ce code alimente la ListBox2 en cherchons le mot dans toute la feuille (fonctionne très bien), mais je n’arrive pas à afficher les colonnes B et D

    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
    Private Sub TextBox2_Change()
     
    Dim Prem As String
    Dim c As Range
     
    With Me.ListBox2
        .Clear
        .ColumnCount = 2
        .BoundColumn = 2
        .ColumnWidths = "100;100"
    End With
     
    If Me.TextBox2 <> "" Then
        With Worksheets("P associer arret").UsedRange
            Set c = .Find(Me.TextBox2, LookIn:=xlValues, lookat:=xlPart)
            If Not c Is Nothing Then
                Prem = c.Address
                Do
                    With Me.ListBox2
                        .AddItem c.Row
                        .List(.ListCount - 1, 1) = c.Offset(, 4 - c.Column)
     
                    End With
                    Set c = .FindNext(c)
                Loop While Not c Is Nothing And c.Address <> Prem
            End If
        End With
        '...
     
    End If
     
    ListBox2 = Null
     
    End Sub
    Merci encore

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Points : 5 901
    Points
    5 901
    Par défaut
    Bonjour,

    Et si tu enlevais le c.row ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                    With Me.ListBox2
                        .AddItem                  'c.Row  <<<<<
                        .List(.ListCount - 1, 0) = c.Offset(, 3 - c.Column)  'pas certain de ces valeurs à inscrire...
                        .List(.ListCount - 1, 1) = c.Offset(, 4 - c.Column) 
                    End With

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 79
    Points : 53
    Points
    53
    Par défaut
    merci parmi

    modification du code de parmi pour afficher plusieurs colonnes
    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
    Dim Prem As String
    Dim c As Range
     
    With Me.ListBox2
        .Clear
        .ColumnCount = 3
        .BoundColumn = 3
        .ColumnWidths = "250;180;500"
    End With
     
    If Me.TextBox2 <> "" Then
        With Worksheets("P associer arret").UsedRange
            Set c = .Find(Me.TextBox2, LookIn:=xlValues, lookat:=xlPart)
            If Not c Is Nothing Then
                Prem = c.Address
                Do
                    With Me.ListBox2
                        .AddItem                  'c.Row  <<<<<
                        .List(.ListCount - 1, 0) = c.Offset(, 2 - c.Column)
                        .List(.ListCount - 1, 1) = c.Offset(, 4 - c.Column)
                        .List(.ListCount - 1, 2) = c.Offset(, 5 - c.Column)
     
                    End With
                    Set c = .FindNext(c)
                Loop While Not c Is Nothing And c.Address <> Prem
            End If
        End With
        '...
     End If
     
    ListBox2 = Null
     
    End Sub

    L’anomalie est quand je veux aller à la ligne de litem sélectionné sa donne l’erreur d’exécution ‘13’
    Incompatibilité de type sur la 3ém ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If ListBox2.ListIndex <> -1 Then
    Sheets("P associer arret").Activate
    Sheets("P associer arret").Rows(Me.ListBox2.List(Me.ListBox2.ListIndex)).Activate
    Unload Me
    End If
    merci

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Points : 5 901
    Points
    5 901
    Par défaut
    Comme ta listbox est chargée sous conditions, la ligne de la listbox ne correspond pas aux lignes de la feuille.
    Il te faut utiliser Find() pour trouver l'item dans la feuille ou encore faire une boucle et vérifier les valeurs jusqu'à trouver la bonne ligne.

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

Discussions similaires

  1. [XL-2010] Enlever les doublons d’une ListBox après recherche mot dans toute la feuille
    Par nacereddine.mourad dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/06/2016, 11h16
  2. [XL-2010] Filtrer LISTBOX d'après Textbox - Affichage plusieurs colonnes
    Par boldair67 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 28/04/2016, 10h29
  3. Affichage plusieurs colonnes LISTBOX
    Par sdispro dans le forum Excel
    Réponses: 4
    Dernier message: 18/07/2014, 13h23
  4. [XL-2003] recherche texte dans colonne
    Par thiefer dans le forum Excel
    Réponses: 4
    Dernier message: 27/08/2009, 11h44
  5. Réponses: 24
    Dernier message: 09/07/2007, 14h08

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