Fonction Find et Date

Bonjour, je souhaiterais définir un range variable qui sera par la suite copié/collé, et variant selon la date du jour. Voilà ce que j'ai écrit pour le moment:

Private Sub JoursGlissants()

Dim Today As Date

Dim Cible As Range

Dim Plage As Range

Today = Date

Set Cible = Sheets("Detail").Cells.Find(What:=Today, LookAt:=xlWhole)

MsgBox Cible.Value

End Sub

Je n'arrive même pas à afficher la valeur de ma variable Cible. De plus la date d'aujourd'hui n'existe même pas dans ma feuille et pour l'instant l'erreur n'apparait qu'au niveau du MsgBox.

Pour le reste du code, j'aimerais utiliser les fonctions column pour extraire la colonne de ma cible et ensuite rows.count.end pour atteindre la dernière ligne de mon tableau. Seule le deuxième membre de mon Range devra varier, la première cellule en haut à gauche sera fixée.

Merci d'avance pour votre aide.

Yvan

Bonsoir,

ben find renvoi nothing si la date n'existe pas ... il faut tester cela et agir en conséquence pour le cas où la date n'existe pas :

(...)
Set Cible = Sheets("Detail").Cells.Find(What:=Today, LookAt:=xlWhole)

If Not Cible Is Nothing Then
    MsgBox Cible.Value
Else
 MsgBox "date : " & Date & " introuvable"
End If
(..)

Bonsoir,

xlWhole ne présente d'intérêt que dans le cas de chaînes.

lookin:= xlValues est un peu plus adéquat pour chercher une date.

Normal que l'erreur n'apparaisse qu'au niveau MsgBox, Find ne déclenchant pas d'erreur, tester est quasi toujours indispensable, comme l'a dit Pierre.jy.

j'aimerais utiliser les fonctions column

Column est une Propriété, pas une Fonction. Savoir qui est quoi évite beaucoup d'erreurs.

Et pour ce qui suit, apprendre un peu de syntaxe n'est pas un luxe.

Et l'indentation, connais pas non plus !

Bon courage tout de même, t'es pas au bout...

Bonjour, merci pour vos réponses. En testant la fonction find avec la date d'aujourd'hui présente dans la feuille, elle fonctionnait correctement. Voilà le code que j'ai réussi à écrire et qui fonctionne pour le moment:

Private Sub Workbook_Open()

Dim Today As Date
Dim Cible As Range
Dim OffSet As Integer
Dim Plage As Range
Dim DernLigne As Long

'Désactive le rafraichissement de l'écran

    Application.ScreenUpdating = False

'Active la Feuille Détail

    Sheets("Détail").Activate

'Défini la date du Jour

    Today = Date

'Trouve la cellule contenant la date du jour

Set Cible = Sheets("Détail").Cells.Find(What:=Today, LookAt:=xlValue)

'Défini la dernière ligne non vide de la colonne "E"

    DernLigne = Range("E" & Rows.Count).End(xlUp).Row

'Décale cette colonne du chiffre indiquée

    OffSet = Cible.Column - 3

'Défini la plage de données variable en fonction de la cellule cible

Set Plage = Range(Cells(4, 5), Cells(DernLigne, OffSet))

'Copie la plage de données et colle uniquement les valeurs

    Plage.Copy
    Plage.PasteSpecial xlPasteValues

'Active la cellule A1 et déselectionne la plage de données

    Range("A1").Select
    Application.CutCopyMode = False

'Active la Feuille "Registre du Personnel" et réactive le rafraichissement de l'écran

    Sheets("Registre du Personnel").Activate
    Application.ScreenUpdating = True

End Sub

Bonne journée.

Rechercher des sujets similaires à "fonction find date"