Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Enregistrer seulement si modifs

  • Initiateur de la discussion Schmail
  • Date de début
S

Schmail

Guest
Bonsoir le Forum

J'ai un classeur qui contient des formules à base de SI et de ET.

Qd je ferme ce classeur sans y avoir apporter de modifs, Xl me demande qd même de l'enregistrer.

J'aimerai qu'XL me le demande que si la valeur en A10 change.

Mon Pb : Comment faire en VBA pour qu'XL se "souvienne" de la valeur de A10 à l'ouverture du classeur


D'avance merci et bonne Soirée
 
Y

Yo

Guest
Salut,
Tu peux essayer ça :

Dim ValeurA10 As Variant

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Cells(10, 1) <> ValeurA10 Then
ActiveWorkbook.Save
ActiveWorkbook.Close False
Else
ActiveWorkbook.Close False
End if
End Sub

Private Sub Workbook_Open()
ValeurA10 = Cells(10, 1)
End Sub


En resume, ça stocke la valeur de la cellule A10 à l'ouverture du classeur
Quand tu fermes, le classeur, si la valeur a change, il sauvegarde le classeur.
Sinon , il ferme le classeur sans le fermer.
Je te mets un exemple en piece jointe.
 

Pièces jointes

  • EnregSiModifA10.xls
    20.5 KB · Affichages: 51
L

LaurentTBT

Guest
Bonsoir à tous.

Yo, peux-tu m'aiguiller un peu?
Je croyais que pour qu'une variable conserve sa valeur après la fin d'une procédure, il fallait la déclarer avec le mot Static.

Or ta solution prouve que ce n'est pas nécessaire: La valeur de la variable ValeurA10 est initialisée par la procédure Workbook_Open, mais n'est pas perdue à la fin de cette procédure, bien qu'elle n'ait pas été déclarée STATIC.

Bref, je n'y comprends plus rien sur cette histoire de variable STATIC.Merci de bien vouloir m'éclairer
 
Y

Yo

Guest
Re-Salut,

La variable ValeurA10 est n'est declarée dans aucune des fonctions. Elle est declarée avant toute les fonctions.
Comme ça, elle est utilisable par toutes les fonctions qui sont en dessous.

Bon courage.
 
L

LaurentTBT

Guest
Merci pour cette réponse rapide.

J'avais mal compris cette logique de durée de vie des variables. Je pensais qu'elles perdaient systématiquement leur valeur.

Maintenant, cela m'ouvre de sacrés opportunités. Je ne serai plus obligé de passer par une feuille intermédiaire d'excel où je mettais temporairement des données dont j'avais besoin entre procédures!

On en apprend tous les jours avec XLD.

Mille mercis et bien le bonsoir à tous.
 
Z

zon

Guest
Bonsoir à tous,



Si j'ai bien compris, il faut utiliser Static Variable as ...

Quand on ne veut pas qu'une autre procédure puisse changer la valeur de Variable=>il y a qu'à l'intérieur de la procédure où est déclarée Variable en static qu'on pourra changer sa valeur alors qu'avec Dim Variable elle est réinitialisée à chaque lancement de la procédure qui la contient.


Yo a raison comme il définit ValeurA10 en haut du module, on pourra s'en servir dans les procédures de ce module thisworbook.

Pour pouvoir utiliser une variable dans plusieurs modules alors on utilise Public en haut d'un module.
 
R

Rolling_Stones_are_The_Best

Guest
Bonjour ce fil,

Just for the fun...

Je ne fais toujours que passer...

Mais avec ce "remix de démo", vous trouverez de quoi faire la distinction entre les Variables Publiques dans tout le projet, celles publiques au sein du module, et celles Statics...




En France => 5/7 => Marseille Stade Vélodrome (60000), 7/7 Paris Palais Omnisports Bercy (17000), 9/7 Paris Stade de France (80000), 11/7 Paris Olympia (2400)

En Belgique => 7/9 = Werchter (60000)

@+Thierry
 

Pièces jointes

  • USF_Start_Me_Up.zip
    23.8 KB · Affichages: 16
@

@+Thierry

Guest
Re CouCou ce Fil

Tiens surppris qu'il n'y ait pas eu de commentaires ou de questions... Sur l'utilisation de Variable Static...

Bon ben alors plus de problème


Vous aurez interro bientôt !!


@+Thierry
 
L

LaurentTBT

Guest
Bonjour, bonsoir ou bonne nuit à tous

Salut Thierry.

Je profite de mes insomnies (chaleur, décallage horaire...) pour me pencher enfin sur ta super démo.

Bon, je pense avoir compris, j'attends donc l'interro de pied ferme.

J'ai juste eu du mal à trouver où tu avais défini X1, X2, X3, X4 et IORR que je pensais être des constantes, comme GAUCHE. Je viens juste de comprendre que tu avais en fait utilisé des labels placés hors du cadre de l'Userform. Y a-t-il une raison précise pour cette méthode?

En tout cas, merci encore à tous les participants de ce fil pour les explications...

@ demain
 
@

@+Thierry

Guest
Bonjour Laurent, Zon, Schmail, Yo, Les fans des Rolling Stones ! et le Forum

Pour te répondre Laurent, le fait d'utiliser les labels cachés pour mettre mon blah blah blah, est ce que j'appelle une astuce de base pour tout ce qui est password...

Je l'ai appliqué ici ,simplement pour éviter de surcharger mon code avec mon texte vu qu'il est long. J'aurai pu utiliser des cellules dans une feuille veryhidden aussi, mais c'est une de mes habitudes d'utiliser des labels que l'on peut utiliser directement avec leur nom (X1, X2...) c'est pratique et le code est d'autant plus lisible sans tout un pavé de blah blah blah entrecoupé de " & _ & "

Souvent dans mes démos, je mets, comme çà, des petits plus.

Bon Week End à tous et toutes


 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…