cs_Vatz
Messages postés5Date d'inscriptionlundi 3 janvier 2011StatutMembreDernière intervention 5 janvier 2011
-
4 janv. 2011 à 17:21
cs_Vatz
Messages postés5Date d'inscriptionlundi 3 janvier 2011StatutMembreDernière intervention 5 janvier 2011
-
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.
jordane45
Messages postés38138Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention17 avril 2024344 4 janv. 2011 à 18:11
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
cs_Vatz
Messages postés5Date d'inscriptionlundi 3 janvier 2011StatutMembreDernière intervention 5 janvier 2011 4 janv. 2011 à 18:01
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".
cs_Vatz
Messages postés5Date d'inscriptionlundi 3 janvier 2011StatutMembreDernière intervention 5 janvier 2011 4 janv. 2011 à 18:21
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 ?