Atteindre date du jour

Bonjour

Est-ce que quelqu'un de sympa peux me filer un petit coup de pouce svp ?

J'ai besoin d'un code qui me permet d'atteindre la date du jour dans mon fichier. Sélection de la cellule contenant la date du jour ou bien la cellule adjacente à la date du jour. Colonne D ou E.

Macro que j'appellerai par un bouton commande.

Voir mon fichier en PJ.

Par avance, merci de votre aide.

Bonjour Marinekali,

Avec l'enregistreur de macros que vous devriez penser à utiliser, vous pouvez obtenir du code
qu'il faut ensuite variabiliser et optimiser

Voici ce que vous pouvez faire

Sub AtteindreAujourdhui()
  Dim DateDuJour As Date
  Dim CelluleDuJour As Range
  ' Récupérer la date du jour
  DateDuJour = Date
  ' Rechercher la cellule contenant la date du jour
  Set CelluleDuJour = Range("D:D").Find(DateDuJour, LookIn:=xlValues, LookAt:=xlWhole)
  ' Vérifier si la cellule a été trouvée
  If Not CelluleDuJour Is Nothing Then
      ' Sélectionner la cellule contenant la date du jour
      CelluleDuJour.Select
  Else
      MsgBox "La date du jour n'a pas été trouvée dans la colonne D."
  End If
End Sub

A+

Bonjour Bruno

Merci pour votre aide; je vais tester ça

Bien cordialement.

Bruno.

Votre code tourne impeccable.

Mais malgré tout le message box s'affiche pour dire que la date du jour n'est pas trouvée. Alors qu'elle figure bien dans la colonne D de mon tableau.

Est-ce-que cela vient du fait qu'il est mis en forme avec la fonction "mettre sous forme de tableau" ? Du coup je me demande si il ne cherche pas en dehors du tableau. (?)

Qu'en dites vous ?

Comment est-ce possible de résoudre ça svp si c'est bien ça le problème ?

Une fois la date trouvée et sélectionnée, puis-je décaler la sélection à la cellule adjacente à droite, colonne C (Volume) qui devra faire l'objet d'une saisie manuelle par l'utilisateur ? Comment faire ?

Encore merci de l'aide que vous pourrez m''apporter.

Belle journée à vous.

MK

Bonjour,

Sans donnée confidentielle SVP

bonjour.

il y a un fichier dans mon post initial.

merci

Re,

Oui, mais avec celui là le code fonctionne

Bonjour …

Le tableau se nommant TB :

Sub AtteindreAujourdhui(): Application.Goto [TB].Find(Date): End Sub

Nota : la date figure dans la liste et il n'y a pas de doublons prévus dans ce cas !

Bruno

Ah bon, ça fonctionne chez vous parce que moi ça ne sélectionne pas de date et je fais l'essai sur le même classeur que celui que je vous ai envoyé. J'ai placé votre code dans un module.

C'est étrange ! Une idée ?

Voir capture d'écran.

image

Bonjour à tous,

Ah bon, ça fonctionne chez vous parce que moi ça ne sélectionne pas de date

Ton tableau se nomme Tableau1 et non TB,

Application.Goto [Tableau1].Find(Date)

Chez moi, les 2 solutions fonctionnent,

Cordialement,

MarineKali,

Si j'en crois votre capture d'écran, vous êtes sur Mac

Bruno

Ah bon, ça fonctionne chez vous parce que moi ça ne sélectionne pas de date et je fais l'essai sur le même classeur que celui que je vous ai envoyé. J'ai placé votre code dans un module.

C'est étrange ! Une idée ?

Voir capture d'écran.

image

Ceci explique cela

Sans conviction essayez peut-être ceci

Sub AtteindreAujourdhui()
  Dim DateDuJour As String
  Dim CelluleDuJour As Range
  ' Récupérer la date du jour au format américain
  DateDuJour = "#" & Format(Date, "mm/dd/yyyy") & "#"
  ' Rechercher la cellule contenant la date du jour
  Set CelluleDuJour = Range("D:D").Find(DateDuJour, LookIn:=xlValues, LookAt:=xlWhole)
  ' Vérifier si la cellule a été trouvée
  If Not CelluleDuJour Is Nothing Then
      ' Sélectionner la cellule contenant la date du jour
      CelluleDuJour.Select
  Else
      MsgBox "La date du jour n'a pas été trouvée dans la colonne D."
  End If
End Sub

A+

Alors Messieurs (BrunoM45, Ordonc, Xorsankukai)

Je ne. désespère pas je vais y arriver ! c'est comme ça qu'on apprend, hein ?!

Alors après m'être arrachée les cheveux toute la sainte journée avec ça, je reviens vers vous car j'ai encore besoin de vos lumières, oh combien précieuses !

@BrunoM45 --> Oui effectivement, je suis sur MAC à la maison et donc ça ne fonctionne pas. Même avec votre dernière proposition avec le format de date américain.

Toutefois j'ai testé sur mon PC portable Windows et là je confirme que vos deux codes s'exécutent à merveille sur le fichier initialement transmis. Aussi bien celui de Bruno que de Ordonc. Et c'est le principal car le fichier sera utilisé sur PC uniquement au quotidien ! Ouf ! J'y suis presque !

Pourquoi presque ?

Parce que j'essaie de transposer vos codes dans le fichier final (je vous avais envoyé initialement un fichier allégé..) et là ça ne fonctionne plus..même sur PC !

Truc de dingue !!Quelle idiote, j'aurai dû mettre ce fichier là dès le départ..

Alors que pour moi la structure est quasi identique, le tableau s'appelle aussi Tableau1, qu'il est aussi sur la feuil1 du classeur et que les colonnes de départ sont les mêmes ! Il y a juste plus de colonnes que dans le fichier initialement transmis. Mais vu que dans vos codes respectifs il n'y a pas de notion de variables de lignes ou de colonnes, je ne vois pas où est le problème cette fois. C'est d'ailleurs pour éviter ce genre de déconvenue que j'utilise la "Mise sous forme de tableau".

@Bruno, ça restera une énigme pour moi que ça fonctionne sur PC mais pas MAC sur ma 1ère version de fichier ! mais le principal étant que ça fonctionne sur PC pour le moment et SURTOUT sur le classeur final.Aussi, si vous voulez bien jeter un oeil expert et me dire où le bas blesse cette fois ?

Encore merci à vous Bruno et à tous ceux qui contribuent à faire vivre ce forum ! C'est chouette cette communauté !

C'est sur le module 4 (macro de Bruno) et sur le module 5 (macro de Ordonc)

qui ne fonctionne pas sur le classeur de destination final et sur PC.

image

Re,

Pourquoi d'après vous cela ne fonctionne pas

Fichier exemple

image

Fichier final

image

Et oui... Excel et surtout le VBA n'aime pas le changement de format de date

Mettez le format "jj/mm/aaaa" et vous verrez

A+

Bon Bruno, vous êtes au top ! C'était donc ça !! Un format de date ! dire que j'ai passé la journée là dessus !

Alors effectivement, je confirme qu'en mettant mes dates au format date courte d'Excel, tout fonctionne bien. Super bien, même.

SAUF, que j'aurai souhaité garder mon format de date personnalisée car il est important de visualiser le nom du jour.

Alors je me suis dit que j'allais tenter d'adapter votre code avec le format de date américain en transposant mon format personnalisé français à savoir

JJJ JJ MMM A mais ça ne passe pas !

Une idée de ce qu'on peut faire car j'imagine que c'est possible aussi de sélectionner la date du jour avec un format personnalisé. Non ?

Et comment faire pour décaler d'une cellule vers la droite après sélection de la date du jour, là où l'utilisateur devra saisir...(si j'arrive à livrer...lol)

J'ai déjà, beaucoup appris avec vous today. Merci.

Bien à vous.

Bonsoir,

Peut-être en convertissant la date en "Long"? (après tout, une date, c'est juste un nombre...)

Application.Goto Cells(Application.Match(CLng(Date), Range("D:D"), 0), "D").Offset(, 1)

Bonne soirée

Re,

Alors dans ce cas là, on peut faire beaucoup plus simple que mon précédent code

Sub AtteindreAujourdhui()
  Dim Cel As Range
  For Each Cel In Range("TBSPS[Date]")
    If Cel.Value = Date Then
      Cel.Select: Exit For
    End If
  Next Cel
End Sub

Sinon ça fonctionne aussi avec le code de cousinhub que je salue

A+

Re...

Bonsoir…

J’avais proposé un nom de tableau simple TB alors qu’on trouve dans le dernier fichier donné TBSPS.

En le gardant il faut aussi le garder dans la macro !

Sub AtteindreAujourdhui() : Application.Goto [TBSPS].Find(Date) :End Sub

En passant par le nom Tableau1, tu vois, Marinekali, ce qu'il te reste à faire .

Bruno (salut), la mise en forme importe peu même avec ce code (original modifié* mais pas testé avec le Mac)

Sub AtteindreAujourdhui()
  Dim R As Range
  Set R = Range("D:D").Find(Date)
  If Not R Is Nothing Then
     R.Select
  Else
     MsgBox "La date du jour n'est pas dans la colonne D !", "", "Oups… "
  End If
End Sub

Nota : attention, il faut connaître des noms (courants) comme Date donc éviter d’en rajouter inutilement avec

 ...
Dim DateDuJour As Date
DateDuJour = Date
...

* je privilégie des noms courts (R va bien avec Range, non ?)

Bonsoir,

Re...

Bonsoir…

J’avais proposé un nom de tableau simple TB alors qu’on trouve dans le dernier fichier donné TBSPS.

En le gardant il faut aussi le garder dans la macro !

Sub AtteindreAujourdhui() : Application.Goto [TBSPS].Find(Date) :End Sub

En passant par le nom Tableau1, tu vois, Marinekali, ce qu'il te reste à faire .

Bruno (salut), la mise en forme importe peu même avec ce code (original modifié* mais pas testé avec le Mac)

Sub AtteindreAujourdhui()
  Dim R As Range
  Set R = Range("D:D").Find(Date)
  If Not R Is Nothing Then
     R.Select
  Else
     MsgBox "La date du jour n'est pas dans la colonne D !", "", "Oups… "
  End If
End Sub

Nota : attention, il faut connaître des noms (courants) comme Date donc éviter d’en rajouter inutilement avec

 ...
Dim DateDuJour As Date
DateDuJour = Date
...

* je privilégie des noms courts (R va bien avec Range, non ?)

Avant d'affirmer, tu pourrais essayer?

As-tu téléchargé son fichier?

As-tu essayé tes 2 codes?

Et tu confirmes que ça fonctionne?

En tout cas, chez moi, PC Win11, Excel 2021, j'ai soit un "la date du jour n'est pas....", soit un beau "fu*k"

Le principe d'un forum n'est pas seulement de mettre en avant les "détails" et ou "erreurs" dans les codes des autres, mais surtout de proposer des solutions qui "Fonctionnent"...

A bon entendeur

PS, quelle idiotie, ce "R" qu'on trouve parfois dans quelques codes de certains questionneurs dans les "ByVal R as Range" des évènements....

Je suis scotchée ! Admirative !

je ne doutais pas en venant sur le forum hier soir que je trouverai une solution à mon problème.

Je sais pour être passée quelques fois qu'il y'a du level !! Mais au-delà de vos connaissances/compétences vous êtes bienveillants, pédagogues, ultra-réactifs !

Tout est nickel pour moi. J'ai beaucoup appris. Vraiment.

J'ai plein de bout de codes différents que je garderai precieusement pour des utilisations futures que j'adapterai selon le contexte..

Une mention particulière pour BrunoM45 qui a suivi mon post depuis le début.

Merci de votre contribution Messieurs.

Je vous adore.

Marinekali

Une élève en progression et un membre content (e).

Au plaisir de vous recroiser.

Rechercher des sujets similaires à "atteindre date jour"