VBA - Ouvrir un classeur et pointer sur la date du jour

Bonsoir tout le monde,

Je suis en train de créer un classeur comprenant des feuilles de pointage horaires (je me suis d'ailleurs déjà fait aider aujourd'hui pour additionner automatiquement des heures, enfin bref). En voici un extrait:

img 20230918 221443

Je souhaiterais ajouter encore deux choses dans mon classeur:

1. Lors de l'ouverture du classeur, pointer automatiquement la ligne comportant la date du jour.

2. Avoir un "bouton" qui me ramène à la ligne comportant la date du jour lorsque je me ballade dans le classeur.

J'ai fait un peu de VB il y a longtemps mais ma mémoire me fait défaut.

Je pense devoir tout reprendre à zéro mais j'ai la volonté d'apprendre =).

Merc d'avance pour vos retours.

Bonsoir

Utilise le gestionnaire d'événements Workbook_Open dans le module ThisWorkbook pour effectuer cette tâche. Voici un exemple de code VBA qui le fait :

Private Sub Workbook_Open()
    Dim ws As Worksheet
    Dim targetDate As Date
    Dim rng As Range

    ' Spécifiez la date cible (date du jour)
    targetDate = Date

    ' Spécifiez la feuille de calcul où vous souhaitez rechercher la date
    Set ws = ThisWorkbook.Sheets("NomDeLaFeuille")

    ' Recherchez la date dans une colonne spécifique, par exemple, colonne A
    Set rng = ws.Columns("A").Find(What:=targetDate, LookIn:=xlValues, LookAt:=xlWhole)

    If Not rng Is Nothing Then
        ' Si la date est trouvée, sélectionnez la ligne entière
        rng.EntireRow.Select
    End If
End Sub

Ajoute un bouton de formulaire dans ta feuille de calcul pour revenir à la ligne de la date du jour. Voici comment faire :

  • Clique sur l'onglet "Développeur"
  • Dans l'onglet "Développeur", clique sur "Insérer" dans le groupe "Contrôles".
  • Sélectionne le bouton de formulaire (il ressemble à un bouton).
  • Dessine un bouton dans ta feuille de calcul.
  • Lorsque tu créer le bouton, un assistant de création de macro devrait s'ouvrir. Sélectionne "Créer une nouvelle macro" et attribuez-lui un nom, par exemple, "RevenirALaDateDuJour".
  • Clique sur "OK" pour fermer l'assistant de création de macro.
  • Double-cliquer sur le bouton pour ouvrir l'éditeur VBA et ajoute le code suivant :
  • Sub RevenirALaDateDuJour()
        Dim ws As Worksheet
        Dim targetDate As Date
        Dim rng As Range
    
        ' Spécifiez la date cible (date du jour)
        targetDate = Date
    
        ' Spécifiez la feuille de calcul où vous souhaitez rechercher la date
        Set ws = ThisWorkbook.Sheets("NomDeLaFeuille")
    
        ' Recherchez la date dans une colonne spécifique, par exemple, colonne A
        Set rng = ws.Columns("A").Find(What:=targetDate, LookIn:=xlValues, LookAt:=xlWhole)
    
        If Not rng Is Nothing Then
            ' Si la date est trouvée, sélectionnez la ligne entière
            rng.EntireRow.Select
        End If
    End Sub

Bonsoir,

Il est toujours plus facile de travailler sur un fichier que sur une image

Un fichier EXCEL anonymisé permettrait aux intervenants de répondre plus précisément à ta question.

Slts

Bonjour messieurs,

Merci pour vos retours.

Après plusieurs tentatives, je n'ai pas réussi à obtenir le résultat attendu.

Pour info, mon classeur est prévu pour l'année 2024 mais j'ai fait l'essai en basculant sur l'année 2023 et cela ne fonctionne pas (et je n'ai aucun message de débogage pourtant).

Je me permets donc de vous joindre le fichier.

Voici un exemple comme il n'y a pas de date du jour dans ton classeur j'ai mis la date du jour sur la première date de colonne A2. Ensuite a toi de personnaliser tes boutons (onglet développeur>mode création) tu pourras changer leur caption (nom du bouton) couleur police.... dans les propriétés. Et idem en mode création déplacer redimensionner ton bouton.

Dans ThisWorkbook il y a ce code et les deux autres codes dans Feuille AS et EB

Private Sub Workbook_Open()
    With Worksheets("AS")
        .Activate
        .Columns(1).Find(Date).Select
    End With
End Sub

Une autre version avec un des dates de 2023 avec un code plus plus complet qui va gérer l'erreur au cas ou il y a pas la date du jour et gérer le =AUJOURDHUI() .

Bonjour par curiosité et pour savoir aussi faire, comment peut on faire lorsque c'est une recherche horizontale et verticale, en navigant sur internet et différent forum, il y a la réponse pour un cas ou l'autre mais je n'ai rien trouvé qui cumule les deux (dans une plage de données ici de B3 : AF7)

d'avance merci

27date.xlsm (8.62 Ko)

Bonjour par curiosité et pour savoir aussi faire, comment peut on faire lorsque c'est une recherche horizontale et verticale, en navigant sur internet et différent forum, il y a la réponse pour un cas ou l'autre mais je n'ai rien trouvé qui cumule les deux (dans une plage de données ici de B3 : AF7)

d'avance merci

Merci d'ouvrir un nouveau sujet la prochaine fois

Sub TrouverDateDuJourDansFeuille()
    Dim ws As Worksheet
    Dim currentDate As Date
    Dim cell As Range

    ' Spécifiez la feuille de travail à utiliser
    Set ws = ThisWorkbook.Sheets("Feuil1")

    ' Obtenez la date du jour
    currentDate = Date

    ' Parcourez toutes les cellules de la feuille
    For Each cell In ws.UsedRange
        If cell.Value = currentDate Then
            ' Sélectionnez la cellule contenant la date du jour
            cell.Select
            Exit Sub ' Sortez de la boucle une fois que la date est trouvée
        End If
    Next cell

    ' Si la date du jour n'a pas été trouvée, affichez un message
    MsgBox "La date du jour n'a pas été trouvée dans la feuille 'AS'.", vbExclamation, "Date non trouvée"
End Sub

@Stepaustras, merci beaucoup d'avoir pris le temps de m'aider, la version n°2 est top. Excellente soirée !

Merci et bonne soirée NordAlsacien67

Oupsss je ne pensais qu'un nouveau sujet était nécessaire, désolé.

en tout cas merci beaucoup @Stepaustras pour le retour, je vais garder et regarder le code qui chez moi m'indique une erreur d'exécution '1004' la méthode select de la classe Range a échoué.

par rapport à la ligne

' Sélectionnez la cellule contenant la date du jour
cell.Select

Bonjour trueblood, chez moi ça fonctionne

68date-test.xlsm (15.68 Ko)

Merci @stepaustras avec le fichier ça fonctionne aussi. alors qu'en rajoutant le code dans le fichier ça ne voulait pas..

en tout cas ça fonctionne, merci pour la disponibilité et l'efficacité.

Ok, il y a deux façons de procéder soit tu mets une macro dans un module avec un bouton en forme comme j'ai fais pour toi ou alors mettre le code légèrement différent dans le code la feuille et ajouter un contrôle activeX en bouton comme j'ai fait pour NordAlsacien67

Rechercher des sujets similaires à "vba ouvrir classeur pointer date jour"