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 :

récuperer une valeur dans un listbox autre que celle affichée [XL-2016]


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
    Responsable de compte
    Inscrit en
    Mai 2018
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Mai 2018
    Messages : 55
    Par défaut récuperer une valeur dans un listbox autre que celle affichée
    Bonjour,

    je cherche à récupérer une valeur d'une autre colonne que celle que m'affiche ma recherche dans ma listebox (liste_SST) pour la copier dans un autre text.box.

    je veux garder ma valeur en colonne 4 qui s'affiche et après l'avoir sélectionne, je voudrais récupérer la valeur en colonne 20 pour la mettre dans un textbox.

    Comment faire?

    Par avance merci de votre aide


    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
    Private Sub txt_SST_Change()
     
    'déclaration des variables
     
      Dim j As Integer
      Dim NbMax As Long
      Dim mission_cherche As String
     
      'on reinitialise la listbox, efface les saisies
      Me.liste_SST.Clear
     
      'on enleve les couleurs
      'Feuil1.Range("A7:KFD500").Interior.ColorIndex = 0
     
        'on cherche la fin de la liste à parcourir
      'recherche a partir de la cellule 1000 la fin du tableau
      NbMax = Feuil1.Range("A500").End(xlUp).Row
     
      'on récupère la donnée saisie dans la textBox
      mission_cherche = Me.txt_SST.Value
     
      'on teste que la textbox n'est pas vide avant de faire la recherche
      If Me.txt_SST <> "" Then
     
        'on parcourt toute la liste afin de trouver les valeurs
        For j = 7 To NbMax
          'on teste le contenu de la cellule en prenant en compte toutes les valeurs saisies
          'grace au caractère de remplacement *
          If Feuil1.Cells(j, 4) Like "*" & UCase(Me.txt_SST) & "*" Then
            'colorier la ligne correspondante
            'colorier la cellule
            'Cells(j, 4).Interior.Color = RGB(100, 100, 100)
                     'on complete la listbox des valeurs trouvées
                  Me.liste_SST.AddItem Feuil1.Cells(j, 4) 
     
          End If
     
        Next
     
      End If
     
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Les éléments de ta listbox correspondant à des cellules non contigües, le plus simple me parait alors d'utiliser une listbox à deux colonnes et de mettre dans la seconde colonne le N° de ligne de la cellule.
    Il sera alors simple de déterminer ce que tu cherches (la valeur de la cellule dont les coordonnées sont la ligne figurant en seconde colonne de la listbox et la colonne 20)
    Ce procédé te permet d'extraire ainsi (si besoin) la valeur de cellules d'autres colonnes

    Mais si seules t'intéressent les cellules de la colonne 20, tu peux également tout simplement abonder, pour chaque articles, la seconde colonne de ta listbox par la valeur de la cellule concernée en colonne 20. Et la lire ensuite à ta guise.

  3. #3
    Membre averti
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mai 2018
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Mai 2018
    Messages : 55
    Par défaut
    Merci

    réussi

    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
    44
    Dim f, TblBD()
    Option Compare Text
     
    Private Sub ListBox1_Click()
     
    TextBox5 = ListBox1.List(ListBox1.ListIndex, 2) 'définir la colonne a faire apparaitre dans la txtbox
    End Sub
     
     
    Private Sub UserForm_Initialize()
      Set f = Sheets("SOCIETES")
      TblBD = f.Range("A2:AV" & f.[A65000].End(xlUp).Row).Value
      Me.ListBox1.List = TblBD
      Me.ListBox1.ColumnCount = 48
      Me.ListBox1.ColumnWidths = "0;0;0;100;0;0;0;0;0;0;0;70;0;0;0;0;0;120;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;70;0;0;0;0"
    End Sub
     
     
    Private Sub TextBoxMotCléCP_Change()
      ColRecherche = 44
      clé = "*" & Me.TextBoxMotCléCP & "*": n = 0
      Dim Tbl()
      For i = 1 To UBound(TblBD)
        If TblBD(i, ColRecherche) Like clé Then
           n = n + 1: ReDim Preserve Tbl(1 To UBound(TblBD, 2), 1 To n)
           For k = 1 To UBound(TblBD, 2): Tbl(k, n) = TblBD(i, k): Next k
        End If
      Next i
      If n > 0 Then Me.ListBox1.Column = Tbl Else Me.ListBox1.Clear
    End Sub
     
     
    Private Sub TextBoxMotCléSST_Change()
      ColRecherche = 4
      clé = "*" & Me.TextBoxMotCléSST & "*": n = 0
      Dim Tbl()
      For i = 1 To UBound(TblBD)
        If TblBD(i, ColRecherche) Like clé Then
           n = n + 1: ReDim Preserve Tbl(1 To UBound(TblBD, 2), 1 To n)
           For k = 1 To UBound(TblBD, 2): Tbl(k, n) = TblBD(i, k): Next k
        End If
      Next i
      If n > 0 Then Me.ListBox1.Column = Tbl Else Me.ListBox1.Clear
    End Sub

  4. #4
    Membre averti
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mai 2018
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Mai 2018
    Messages : 55
    Par défaut
    j'ai essayé de l'intégré à un Userform Multipage cela bloque au niveau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = 1 To UBound(TblBD)
    erreur d’exécution '9' : l'indice n'appartient pas à la sélection

    j'ai essayé

    Userform_initialize()
    Multipage1_initialize()

    Sans succès

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

Discussions similaires

  1. récuperer une valeur dans une fenetre pop up
    Par bazoga dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/12/2009, 09h48
  2. Récuperer une valeur dans une StringGrid
    Par flo291288 dans le forum C++Builder
    Réponses: 4
    Dernier message: 25/03/2009, 10h33
  3. Récuperer une valeur dans le formulaire
    Par Antoon dans le forum Langage
    Réponses: 1
    Dernier message: 04/12/2008, 10h50
  4. Récuperer une valeur dans un fichier texte
    Par sucrepop dans le forum Langage
    Réponses: 6
    Dernier message: 05/06/2007, 15h01
  5. Réponses: 3
    Dernier message: 18/07/2006, 10h32

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