[VBA] Sélectionner date du jour dans planning

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 !

14cibler-date.xlsm (20.08 Ko)

Bonjour

a mon avis ta macro ne fonctionne pas parce que ton nombre de colonnes est faux

remplace

lcpl = .Cells(1, .Columns.Count).End(xlToLeft).Column + 3

par

lcpl = .Cells(4, .Columns.Count).End(xlToLeft).Column

tes datas sont en ligne 4

A plus sur le forum

re

sinon plus simple

Dim a As Integer, lcpl As Long, cible As String
Sheets("feuil1").Activate
lcpl = Feuil1.Cells(4, Columns.Count).End(xlToLeft).Column
cible = DateSerial(Year(Now), Month(Now), Day(Now))
For a = 3 To lcpl
    If Cells(4, a).Value = cible Then
        Cells(4, a).Select
        Exit For
    End If
Next a

A plus sur le forum

Bonjour,

Merci pour l'aide !

Effectivement je me compliquait la tâche encore ^^'

Après test, votre macro fonctionne très bien dans mon document de travail.

Bonne journée !

Rechercher des sujets similaires à "vba selectionner date jour planning"