Bonjour à tous,
J'ai une nouvelle fois besoin des spécialistes Excel.
Je bute sur la fonction find en vba, je vous explique mon problème.
Dans le fichier joint extremement simplifié, j'ai 2 onglets (Onglet 1 = Report avec 1 bouton pour activer la macro "Find" / Onglet 2 = feuille masquée Listes => base de référence)
Dans 1 cellule de la colonne A de "Report", si je saisis MTW5 tout fonctionne car cette valeur est présente dans la colonne B de la feuille "Listes".
Mais dans 1 cellule de la colonne A de "Report", si je saisis MTW5 A ou MTW5A ou MTW5 (A), j'ai le message d'erreur pour me signaler que cette donnée n'existe pas dans la colonne B de la feuille "Listes".
Cependant je ne devrais pas avoir de message car j'ai utilisé LookIn:=xlValues, LookAt:=xlPart dans le Find.
Les plages sont des plages dynamiques
Voici le code de ma macro où je ne vois pas mon erreur ( typage variables....) et je vous joins le fichier exemple en PJ.
Quelle est mon erreur ?
Et merci pour votre aide.
J'ai une nouvelle fois besoin des spécialistes Excel.
Je bute sur la fonction find en vba, je vous explique mon problème.
Dans le fichier joint extremement simplifié, j'ai 2 onglets (Onglet 1 = Report avec 1 bouton pour activer la macro "Find" / Onglet 2 = feuille masquée Listes => base de référence)
Dans 1 cellule de la colonne A de "Report", si je saisis MTW5 tout fonctionne car cette valeur est présente dans la colonne B de la feuille "Listes".
Mais dans 1 cellule de la colonne A de "Report", si je saisis MTW5 A ou MTW5A ou MTW5 (A), j'ai le message d'erreur pour me signaler que cette donnée n'existe pas dans la colonne B de la feuille "Listes".
Cependant je ne devrais pas avoir de message car j'ai utilisé LookIn:=xlValues, LookAt:=xlPart dans le Find.
Les plages sont des plages dynamiques
Voici le code de ma macro où je ne vois pas mon erreur ( typage variables....) et je vous joins le fichier exemple en PJ.
Quelle est mon erreur ?
Et merci pour votre aide.
VB:
Option Explicit
Dim ws As Worksheet
Dim dernLignVC As Integer
Dim lastRow As Integer
Dim celTemoinBatch As Range
Dim valeurTemoinBatch As String
Dim temoinBatch As Range
Dim valTemoinBatch As Double
Dim maPlage As Range
Sub chercherVerifier()
Set ws = Sheets("Report")
Sheets("Listes").Visible = xlSheetVisible
Sheets("Listes").Unprotect
dernLignVC = Sheets("Listes").Range("B65536").End(xlUp).Row
lastRow = ws.Range("A65536").End(xlUp).Row
Set maPlage = Sheets("Listes").Range("B2:B" & dernLignVC)
For Each celTemoinBatch In ws.Range("A2:A" & lastRow)
valeurTemoinBatch = celTemoinBatch
Set temoinBatch = maPlage.Cells.Find(What:=valeurTemoinBatch, LookIn:=xlValues, LookAt:=xlPart)
If temoinBatch Is Nothing Then
MsgBox "Attention ce témoin n'est pas présent " & valeurTemoinBatch & " sur la feuille 'Listes' cachée. Vérifier vos données.", vbOKOnly + vbInformation, "Erreur témoin"
Sheets("Listes").Protect
Sheets("Listes").Visible = xlSheetHidden
ws.Select
celTemoinBatch.Select
Set temoinBatch = Nothing
Set ws = Nothing
Set maPlage = Nothing
End
End If
valTemoinBatch = celTemoinBatch.Offset(, 1).Value
Select Case valTemoinBatch
Case temoinBatch.Offset(, 3) To temoinBatch.Offset(, 2)
Case Else
celTemoinBatch.Offset(, 3) = "1"
End Select
Next celTemoinBatch
Set maPlage = Nothing
Set temoinBatch = Nothing
Set ws = Nothing
Sheets("Listes").Protect
Sheets("Listes").Visible = xlSheetHidden
End Sub