1 pièce(s) jointe(s)
Excel VBA recherche de valeur de formule dates
Bonjour à tous,
Niveau débutant :
Sur un classeur 3 feuilles :
Feuille 1 : feuilles d'hébergements à remplir au jour le jour.
Feuille 2 "Base" : Suivie des entrées / Sorties + Stat
Feuille 3 "Stat" : Stat générale
Ce que je souhaite faire :
Je souhaite pouvoir modifié une entrée sur la feuille "Base" à la date donnée de la feuille 1 (en "F1") en passant par une recherche sur le range "F2" à "AI2" de la feuille "Base" (Ces cellule sont en format date et les valeur sont trouvées via formule).
Exemple : Le Dédé1 a été enregistré par erreur, l'utilisateur doit alors le supprimé.
Problème :
je n'arrive pas à trouvé une méthode de recherche ni à trouver d'où vient le problème entre le format date ou le fait de rechercher une valeur issue d'une formule...
mes deux tentatives me paraissant les plus abouties :
Via Find. :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| Sub Test1()
'déclaration des variables :
Dim Trouve As Range, PlageDeRecherche As Range
Dim Valeur_Cherchee As String, AdresseTrouvee As String
'********* à adapter ***********
'affectation de valeurs aux variables :
'on cherche le mot "Trouve"
Valeur_Cherchee = ActiveSheet.Range("F1").Value
MsgBox Valeur_Cherchee
'dans la première colonne de la feuille active
Set PlageDeRecherche = Sheets("Base").Range("I2")
'*******************************
'méthode find, ici on cherche la valeur exacte (LookAt:=xlWhole)
Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlPart, LookIn:=xlValues)
'traitement de l'erreur possible : Si on ne trouve rien :
If Trouve Is Nothing Then
'ici, traitement pour le cas où la valeur n'est pas trouvée
AdresseTrouvee = Valeur_Cherchee & " n'est pas présent dans " & PlageDeRecherche.Address
Else
'ici, traitement pour le cas où la valeur est trouvée
AdresseTrouvee = Trouve.Address
End If
MsgBox AdresseTrouvee
'vidage des variables
Set PlageDeRecherche = Nothing
Set Trouve = Nothing
End Sub |
Via Application Match :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| Sub Test2()
Dim LaDate As Date, D As Long
LaDate = ActiveSheet.Range("F1").Value
MsgBox LaDate
On Error Resume Next
With Sheets("Base")
D = Application.Match(LaDate, Sheets("Base").Range("I2"), 0)
MsgBox Sheets("Base").Range("I2").Value
If Err = 0 Then
MsgBox Range("A" & D).Address & " " & Range("A" & D).Value
Else
MsgBox "Pas trouver la date demandée"
End If
End With
End Sub |
Je vous joint aussi le fichier et d'avance merci à ceux qui se pencherons sur mon soucis...
Pièce jointe 160526