Rechercher : dans
Par :

VBA Excel Modification de la date en fonction

Dernière réponse le 12 sep 2007 à 08:51:41 a.dequidt, le 6 sep 2007 à 09:30:53 
 Signaler ce message aux modérateurs

Salut,

Je cherche a ce qu'a l'ouverture de mon classeur, si celui ci possede le nom "logiciel_offre.xls", on affecte aux cellules C12 et D13 la date d'aujourdhui:


Private Sub Workbook_Open()

Dim ToDay As Date
If ActiveWorkbook.Name = "Logiciel_offres_v8.xls" Then
Range("C12:E12").Select
ActiveCell.FormulaR1C1 = "=TODAY()"
Range("D13").Select
ActiveCell.FormulaR1C1 = "=TODAY()"
End If
End Sub


Et je voudrais qu'a l'ouverture d'une coipe de ce fichier, la date ne soit pas celle d'aujourd'hui mais celle de la création de ce fichier

Configuration: Windows 2000
Internet Explorer 6.0

Meilleures réponses pour « VBA Excel Modification de la date en fonction » dans :
VBScript - Les fonctions de date et de temps VoirLes fonctions de date et de temps Fonction Description Date Retourne la date du système DateAdd(interval, number, date) Ajoute un intervalle de temps (interval) à une...

1

Papou93, le 6 sep 2007 à 20:49:46

Bonjour a.dequidt,

J'ai déjà répondu à cette question dans ton post Aide pour VBA sous Excel Aide pour VBA Excel du 04/09/2007.

Il s'agit bien de la même question, non ?

Cordialement.

Répondre à Papou93

2

a.dequidt, le 7 sep 2007 à 08:42:29

En fait cette solution ne marche pas, mais j'ai pensé a autre chose....


Je m'explique.

En C12 et D13, la date d'aujourd'hui via la fonction =AUJOURDHUI()
en M1, la date de l'ancienne ouverture via une copie de la date a la fermeture

J'aimerai créer une boite de dialogue a l'ouverture du fichier, qui informerai l'utilisateur de la date de l'ancienne ouverture, et lui laisserai le choix de la date, soit la date de l'ancienne ouverture soit la date

Répondre à a.dequidt

3

 Papou93, le 12 sep 2007 à 08:51:41

Bonjour a.dequidt,

Voici la solution qui me paraît la plus simple :

Private Sub Workbook_Open()
With Sheets("feuil1").[m1]
If Not IsDate(.Value) Then .Value = Date: Exit Sub
Select Case .Value
Case Is = Date
Exit Sub
Case Else
R = MsgBox("La date actuelle du fichier est : " & .Value & vbCrLf & _
"Voulez-vous la remplacer par la date du jour ?", vbYesNo + vbQuestion, "Date fichier")
If R = vbYes Then .Value = Date
End Select
End With
End Sub


Je m'explique :

A l'ouverture du classeur, le programme teste la valeur contenue dans la cellule M1 : si elle est vide, ou contient autre chose qu'une date, alors M1 est mise à jour avec la date du jour.
Si M1 contient la date du jour, on sort du programme sans rien changer.
Si M1 contient une date antérieure à la date du jour, une boîte de dialogue propose une mise-à-jour qu'on est libre d'accepter ou non.
Enfin, il suffit d'entrer la formule [=M1] dans les cellules C12 et D13.

NB : remplaces "feuil1" par le nom de ta feuille.
[m1] est l'équivalent de range("m1") et c'est plus simple à écrire.

Espérant avoir été utile.

Cordialement.

Répondre à Papou93