Recherche vba

Résolu
Signaler
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
-
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
-
Bonjour à tous,

Je désire faire une recherche avec 2 critères spécifique.

Voici le script:
<hr size= "2" width="100%" />
Private Sub CommandButton3_Click()

Dim Ligne As Long
If ComboBox49.Value = vbNullString Then
ComboBox49.SetFocus
Else
Application.ScreenUpdating = False

Ligne = RECHERCHE(ComboBox49.Text, 2) And RECHERCHE(TextBox137.Value, 9)

If Ligne = 0 Then Exit Sub
                                 
                                                                                          'Recherche
ComboBox47 = Range("F" & Ligne)
TextBox138 = Range("K" & Ligne)

End If
End Sub
<hr size="2" width="100%" />Le problème est que si je met And RECHERCHE(TextBox137.Value, 9), il ne me donne plus rien.
Si je ne met pas And RECHERCHE(TextBox137.Value, 9), la il me donne des données pour mon Combobox47 et TextBox138.

Me manque t-il quelque chose dans mon script?

Merci de votre aide?

2 réponses

Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Tu peux utiliser différentes méthodes

1- Un Find comme tu le fais, mais sur une seule colonne, puis vérification de l'autre cellule sur la même ligne. Si les 2 ne concordent pas, FindNext jusqu'à ce que la liste soit toute passée.

2- Une boucle sur chaque ligne avec vérification des 2 cellules.

3- le plus simple à mon avis: tu concatènes les 2 valeurs dans une colonne qui ne sert pas et tu fais ton FIND sur cette colonne. Eh oui... encore la concaténation...

MPi
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
3
Merci MPI,

J.ai suivi ton conseil et ça fonctionne.

Voici le script:
<hr size="2" width="100%" />
Dim RECHERCHE As Range, Ligne As Long
'colonne C = numéro concatené
    Set RECHERCHE = Columns("C:C").Find(TextBox270)
    If Not RECHERCHE Is Nothing Then
       Ligne = RECHERCHE.Row
     
       Range("F" & Ligne) = TextBox257
       Range("G" & Ligne) = ComboBox47
       Range("H" & Ligne) = TextBox258
       Range("I" & Ligne) = TextBox259
       Range("J" & Ligne) = ComboBox48
       Range("L" & Ligne) = TextBox138
       Range("M" & Ligne) = TextBox139
       Range("N" & Ligne) = TextBox140
       Range("O" & Ligne) = TextBox141
       Range("P" & Ligne) = TextBox142
   
       End If
<hr size="2" width="100%" />Merci