Bonsoir,
Savez-vous pourquoi ma macro ne fonctionne pas ?
- J'indique une cible : "date du jour"
- Je précise une plage : "Toutes les dates de l'année"
- J'utilise une boucle qui vérifie cellule après cellule dans la plage jusqu'à trouver la cible
- Je sélectionne et déplace l'affichage sur la cellule.
En pas à pas, je constate que la fonction find ne trouve pas de résultat ; donc résultat = nothing donc rien ne se fait.
Le code :
Private Sub CommandButton1_Click()
Dim cible As String, a As Integer, rec As Range, tbl As Range, lcpl As Long
With ActiveSheet
lcpl = .Cells(1, .Columns.Count).End(xlToLeft).Column + 3
t = .Cells(4, 3)
t1 = .Cells(4, lcpl)
'cible = Left(CDate(Now), 10)
cible = DateSerial(Year(Now), Month(Now), Day(Now))
Set tbl = .Range(.Cells(4, 3), .Cells(4, lcpl))
For a = 3 To lcpl
Set rec = tbl.Find(cible, LookIn:=xlValues)
If Not rec Is Nothing Then
rec.Select
ActiveWindow.ScrollRow = Selection.Row
ActiveWindow.ScrollColumn = Selection.Column
Exit For
End If
Next a
End With
End Sub
Je joins un document de test
Si vous avez une solution pour trouver sans faire de boucle je suis preneur !
Edit : Je pense que le plus rapide pourrait être de faire une recherche avec Application.match et la valeur recherchée directement modifiée dans le code VBA, à chaque recherche, mais ça demanderait de relancer VBA à chaque fois.
Bonne soirée !