Date fixe sur sauvegarde

Bonjour
J’aurais besoin d’aide
Quand j’ouvre mon document “DEVIS” j’ai programmé la date =(AUJOURDHUI)
Quand je fais la sauvegarde de ce document j’aimerais que la date reste fixe.
Peut-on faire que la formule se supprime au moment de la SVG?
Ou avez-vous une autre idée?
Merci pour votre réponse
Danyk01

Salut

Dans le Thisworkbook de ton classeur mets ce code :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Sheets(“Feuil1”).Range(“A1”).Value = Sheets(“Feuil1”).Range(“A1”).Value
End Sub

La formule =(AUJOURDHUI) est supposé être en cellule A1 de l’onglet “Feuil1”
A adapter ce code pour un autre contexte
Attention la formule est remplacé systématiquement par la date qu’elle donne à chaque enregistrement du classeur
Il est possible de rajouter une confirmation avant cette action

A voir

Merci FFO
Je vais essayer ce soir, je ne suis pas dispo cet aprèm
A+

Salut FFO
Oui ça marche mais la formule disparaît également sur ma matrice
Je t’explique
1-J’ai un document DEVIS (matrice) avec des liens avec des documents annexes (Client, fournisseurs, matières etc…) Documents annexes que j’utilise également pour d’autres documents : par ex Commande fournisseurs etc…
2- ma matrice à une date avec la formule =(AUJOURD’HUI) tout est OK
3- sur cette matrice j’ai un bouton pour sauvegarder le devis au nom du client, dans un autre fichier OK
4- Quand j’ouvre la matrice pour faire un nouveau devis la date du jour et le nouveau N° apparaît OK
5- je renseigne le nom du client
6- je clique sur le bouton (ligne 3) pour sauvegarder le devis au nom du client
7- je ferme la matrice, tout se remet à 0.
C’est à ce moment que la cellule date doit rester avec la formule =(AUJOURD’HUI) et dans le document sauvegardé la date doit rester fixe.
8- Si j’ouvre le devis à partir du fichier dans lequel il est sauvegardé, je dois retrouver la date de création.
Dis-moi si j’étais clair dans mon explication
Merci à toi

Si la formule disparait dans ta Matrice c’est tu que tu provoques un enregistrement concernant son document
Seule solution pour distinguer les enregistrements c’est une confirmation par boîte de dialogue de la suppression ou non de la formule
Enregistrement de la Matrice pas de suppression
Enregistrement du devis suppression
Avec le code modifié ainsi :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If MsgBox(“Voulez vous supprimer la formule =(AUJOURD’HUI) ?”, vbYesNo) = vbYes Then
Sheets(“Feuil1”).Range(“A1”).Value = Sheets(“Feuil1”).Range(“A1”).Value
End If
End Sub

J’espère ta solution

FELICITATION

Tu es un AS
Ca fonctionne, en effet ça me demande si je veux supprimer la formule
C’est Super

Merci beaucoup
Danyk01

Juste pour savoir
Pourrais tu m’expliquer ton code VBA dans les détails?
Ca me permettrais d’apprendre

Pas simple d aborder VBA par les procédures événementielles celle ci est activée au moment de l enregistrement du classeur concerné on le trouve dans le début de la première ligne de code :
Private Sub Workbook_BeforeSave
BeforeSave veut dire avant sauvegarde
Tu devrais faire une recherche sur internet pour en connaître toutes les subtilités avec ce mot clé
Donc avant l enregistrement j interroge l utilisateur par l intermédiaire d une boîte de dialogue et 2 boutons pour formuler sa réponse un bouton oui un bouton non matérialisé par la ligne de code :
If MsgBox(“Voulez vous supprimer la formule =(AUJOURD’HUI) ?”, vbYesNo) = vbYes
MsgBox boîte de dialogue
Voulez vous supprimer la formule =(AUJOURD’HUI) ? Le message dans la boîte de dialogue
vbYesNo les 2 boutons oui et non
Si l utilisateur utilise le bouton oui :
= vbYes
J execute la ligne de code qui suit :
Sheets(“Feuil1”).Range(“A1”).Value = Sheets(“Feuil1”).Range(“A1”).Value
Qui veut dire la cellule A1 de la feuille Feuil1 à pour valeur la valeur de la cellule A1 de la feuille Feuil1
Ce qui a pour conséquence de remplacer la formule par sa valeur
Ce traitement donc ne se réalise que si l utilisateur a répondu oui à la boîte de dialogue matérialisé par le If et le End If en début et fin de code

Voilà pour les explications

Bonne soirée

OK Je bloque sur “ByVal”
Quand l’utiliser?

Cherche sur internet avec ce mot clé :
Private Sub Workbook_BeforeSave
Tu auras tout ce que tu recherches sur le sujet
Le domaine est vaste de plus tu auras toutes les procédures événementielles avec leur domaine d application
Je reste à disposition si besoin

Merci FFO
Je suis entrain de rechercher
A bientôt

En fouinant j ai trouvé cette explication :

Byval (Visual Basic)

Spécifie qu’un argument est passé par valeur, de sorte que la procédure ou propriété appelée ne peut pas modifier la valeur d’une variable sous-jacente à l’argument dans le code appelant.Si aucun modificateur n’est spécifié, ByVal est la valeur par défaut.

J espère que cela t éclaire

Bonne soirée

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.