Problème de recherche de ligne en utilisant 2 variables
Bonjour,
je cherche a trouver dans une feuille"Form" une ligne ou les valeurs en colonnes C et D correspondent aux valeurs respectivement en colline G et D d'une feuille"BD"
Pour cela j'ai utilisé 2 fonctions IF imbriquées. Cependant quelque soit les valeur que je donne a mes critère de recherche, le résultat est toujours le meme :
"La ligne correspondante trouvée est la ligne 1"
Sub TrouverLigneCorrespondante()
Dim feuilleForm As Worksheet
Dim feuilleBD As Worksheet
Dim critere1 As String
Dim critere2 As String
Dim plageRecherche As Range
Dim cellule As Range
Dim ligneTrouvee As Range
Set feuilleForm = ThisWorkbook.Sheets("Form")
Set feuilleBD = ThisWorkbook.Sheets("BD")
critere1 = feuilleBD.Range("G2").Value
critere2 = feuilleBD.Range("D2").Value
Set plageRecherche = feuilleForm.Range("C:D")
For Each cellule In plageRecherche.Columns(1).Cells
If cellule.Value = valeurCritere1 Then
If cellule.Offset(0, 1).Value = valeurCritere2 Then
Set ligneTrouvee = cellule.EntireRow
' Faire quelque chose avec la ligne correspondante
MsgBox "La ligne correspondante a été trouvée à la ligne " & ligneTrouvee.RowJe pense m’être trompé dans l'utilisation de mes fonctions IF mais je n'arrive pas trouver ou.
Merci d'avance pour votre aide
Bonjour Loumatrix,
Dans votre code, vous avez défini vos critères comme critere1 et critere2, mais dans la comparaison dans vos boucles If, vous utilisez valeurCritere1 et valeurCritere2. Je pense que c'est l'origine du problème. Un code à tester :
Sub TrouverLigneCorrespondante()
Dim feuilleForm As Worksheet
Dim feuilleBD As Worksheet
Dim critere1 As String
Dim critere2 As String
Dim plageRecherche As Range
Dim cellule As Range
Dim ligneTrouvee As Range
Set feuilleForm = ThisWorkbook.Sheets("Form")
Set feuilleBD = ThisWorkbook.Sheets("BD")
critere1 = feuilleBD.Range("G2").Value
critere2 = feuilleBD.Range("D2").Value
Set plageRecherche = feuilleForm.Range("C:C")
For Each cellule In plageRecherche.Cells
If cellule.Value = critere1 Then
If cellule.Offset(0, 1).Value = critere2 Then
Set ligneTrouvee = cellule.EntireRow
' Faire quelque chose avec la ligne correspondante
MsgBox "La ligne correspondante a été trouvée à la ligne " & ligneTrouvee.Row
Exit Sub
End If
End If
Next cellule
MsgBox "Aucune ligne correspondante n'a été trouvée."
End SubJ'ai ajouté Exit Sub après avoir trouvé la ligne correspondante, si vous voulez que le code continue à chercher d'autres correspondances, vous pouvez supprimer cette ligne.
Merci beaucoup pour la correction ! je penserais a prendre seulement le critère et pas sa valeur la prochaine fois