Test entre une listbox et une feuille excel [Résolu]

cs_Vatz 5 Messages postés lundi 3 janvier 2011Date d'inscription 5 janvier 2011 Dernière intervention - 4 janv. 2011 à 17:21 - Dernière réponse : cs_Vatz 5 Messages postés lundi 3 janvier 2011Date d'inscription 5 janvier 2011 Dernière intervention
- 5 janv. 2011 à 09:38
Bonsoir à tous,

J'ai tenté de chercher sur le forum (et ailleurs) mais je n'arrive pas à résoudre mon problème.

Le voici :
J'ai des éléments dans une listbox (qui varient selon deux combobox). Je souhaiterais faire un test entre l'élément sélectionné dans la listbox et les éléments d'une colonne sur une feuille sur excel (sachant qu'il y a forcément une unique correspondance).

Pour donner un exemple concret ma combobox me demande fruit ou légume, je choisis légume et dans ma listbox il y a tous les légumes et je sélectionne salade.

L'élément salade est dans le tableau de ma feuille 2 avec toutes les caractéristiques de celle-ci sur la ligne que je souhaite indiquer sur mon userform.

Si c'est vraiment brouillon ce que je vous raconte, je mettrai un exemple demain.


En vous remerciant par avance.
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
jordane45 22098 Messages postés mercredi 22 octobre 2003Date d'inscriptionContributeurStatut 17 août 2018 Dernière intervention - 4 janv. 2011 à 18:11
3
Merci
Bonjour,
Si ce que tu désires c'est rechercher dans ta feuille le terme indiqué dans ta listBox, il existe plusieurs façons de faire :
Par exemple, tu pourrais parcourir ta feuille à l'aide d'une boucle For Next.
Ou utiliser la fonction FIND.

Voici un exemple avec Find :
Sub test()
Dim Mot_recherche  As String
    Mot_recherche = "toto"
Dim nomFeuil  As String
    nomFeuil = "Feuil1"

' Recherche du mot dans la feuille
Ligne_mot = cherchC(nomFeuil, Mot_recherche)

If Ligne_mot = 0 Then
    MsgBox "Le mot n'est pas trouvé"
Else
   MsgBox "Le mot est sur la ligne " & Ligne_mot
End If

End Sub

Function cherchC(nomF As String, valCherch As String) As Integer
'fonction de recherche...
'**********************************************************
' recherche la valeur 'valCherch' et nous indique le N° de ligne
' Si ne trouve pas.. retourne la valeur 0
'**********************************************************
Dim vc As Variant
Sheets(nomF).Activate
Sheets(nomF).Cells(1, 1).Activate
Set vc = Cells.Find(what:=valCherch, lookAt:=xlWhole, After:=ActiveCell, SearchOrder:=xlByColumns, SearchDirection:=xlNext, LookIn:=xlValues, MatchCase:=False, SearchFormat:=False)
If Not vc Is Nothing Then
    cherchC = vc.Row
Else
    cherchC = 0
End If
End Function



Ce code est à placer dans un Module.

Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI

Merci jordane45 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de jordane45
cs_Vatz 5 Messages postés lundi 3 janvier 2011Date d'inscription 5 janvier 2011 Dernière intervention - 4 janv. 2011 à 18:01
0
Merci
Petite MAJ,

j'ai trouvé ce que je souhaitais faire via la fonction Find

Private Sub ListBox1_Click()
temp = ListBox1.Text

With Worksheets("Isolants").Range("isolants")
Set test = .Find(temp, LookIn:=xlValues)
If Not test Is Nothing Then
Me.TextBox1.Text = "continue" 'c'est un message perso pour tester
End If
End With

End Sub


J'ai donc réussi à trouver qu'il y avait bien un élément dans ma feuille Isolants. Maintenant est-il possible de récupérer sa position (la ligne plus précisément) dans cette feuille ?

Puisque mes isolants sont triés selon les lignes et toutes les informations de lambda, CE, ACERMI ... sur les colonnes et je souhaiterais récupérer la ligne de cet élément trouver pour ajouter "automatiquement".
Commenter la réponse de cs_Vatz
cs_Vatz 5 Messages postés lundi 3 janvier 2011Date d'inscription 5 janvier 2011 Dernière intervention - 4 janv. 2011 à 18:21
0
Merci
Effectivement ton code répond à ce que j'ai demandé. Mais pas totu à fait à ce que je voulais mais ce n'est pas facile à expliquer.

Si tu comprends ce que je souhaite avoir avec mon test.index (la ligne), tu auras saisi mon problème.

Private Sub ListBox1_Click()
temp = ListBox1.Text

 With Worksheets("Isolants").Range("isolants")
  Set test = .Find(temp, LookIn:=xlValues)
    If Not test Is Nothing Then
     Me.TextBox1.Text = Sheets("Isolants").Range("isolants").Cells(test.Index, 2)
    End If
 End With
End Sub



Si j'intègre ça dans un module je fais comment pour le récupérer sur mon userform ?
Commenter la réponse de cs_Vatz
cs_Vatz 5 Messages postés lundi 3 janvier 2011Date d'inscription 5 janvier 2011 Dernière intervention - 5 janv. 2011 à 09:38
0
Merci
Niquel en fait c'est exactement ce que je voulais, mais on va dire que j'étais un peu fatigué !

Encore merci

Vatz
Commenter la réponse de cs_Vatz

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.