OVH Cloud OVH Cloud

Boite de message "Etes vous sur ?"

13 réponses
Avatar
13Hubert
Re-bonjour à tous !

Je poursuis invariablement l'amélioration de mon fichier Excel...

Ce fichier doit être réinitialisé en fin d'année...
Pour ce faire, toutes les cellules de saisie de toutes les feuilles seront
effacées par une macro...
J'ai bien créé la macro qui va bien. Avec l'enregistreur, c'est facile...
J'ai affecté cette macro à un bouton nommé "Nouvelle année"...
Ma question est que je voudrais m'assurer que mon utilisateur du moment ne
provoque pas la réinitialisation par inadvertance donc comment faire pour que
:
1/ une boite de message lui demande s'il est certain de vouloir tout effacer
avec un bouton OUI et un bouton NON...
2/ il ait la possibilité, AVANT l'effacement, d'enregistrer le fichier sous...

Voilà.
Je sais pouvoir compter sur vous, j'ai déjà testé X fois vos connaissances !
;-)

Merci beaucoup

Hubert
--
...from Marseille !

3 réponses

1 2
Avatar
Youky
cela n'est pas bon
rep = MsgBox("Attention ! Vous allez effacer vos données ! Etes-vous
certain(e) de vouloir continuer ?", vbYesNoCancel) 'demande confirmation
Là c'est bon (aprés le Etes-vous il manquait un espace et le _ )
rep = MsgBox("Attention ! Vous allez effacer vos données ! Etes-vous _
certain(e) de vouloir continuer ?", vbYesNoCancel) 'demande confirmation

Tu peux aussi supprimer la ligne Dim rep qui cause pb
Youky

"13Hubert" a écrit dans le message de
news:
Ha... Petit problème...

J'ai appliqué le code fourni par les sympathiques Pounet95 et Michel
(mbfac)
que j'ai adapté comme il m'a été proposé, mais VBA stoppe devant une
erreur...

Voici le code modifié à ma petite sauce :

---------------------------------------------------------
Sub Nouvelle_Année()
'
' nouv_année Macro
' Macro enregistrée le 06/01/06 par Hubert
'
'
Dim rep As VbMsgBoxResult

rep = MsgBox("Attention ! Vous allez effacer vos données ! Etes-vous
certain(e) de vouloir continuer ?", vbYesNoCancel) 'demande confirmation

If rep = vbNo Then Exit Sub

'OK, initialiser
ActiveWorkbook.SaveAs "Ancienne version" & ActiveWorkbook.Name

'procédure d'initialisation

Range("B6:D8,B9,D9").Select
Range("D9").Activate
Selection.ClearContents

Sheets(Array("JANVIER", "FEVRIER", "MARS", "AVRIL", "MAI", "JUIN",
"JUILLET", "AOUT", _
"SEPTEMBRE", "OCTOBRE", "NOVEMBRE", "DECEMBRE")).Select
Sheets("JANVIER").Activate
Range("B17:G81").Select
Selection.ClearContents
Range("A17").Select
Application.Run "Suivi_BJ_MISSION_2006.xls!Délégations"

End Sub
---------------------------------------------------------

Voici le message d'erreur :

Erreur de compilation
Type ActiveX non géré dans Visual Basic

Et le système fige la sélection sur la ligne
Dim rep As VbMsgBoxResult

Alors j'ai bien essayé de comprendre ce qu'il (VBA) me voulait, mais je
n'ai
rien compris !!! Je ressemble à une poule qui a trouvé un cure-dent...


Au secours !
Et merci encore

Hubert
--
...from Marseille !



Bonjour,

Quelque chose comme ceci ( à adapter bien sûr )

Sub Nouvelle_Année()
Dim rep As VbMsgBoxResult

'demande confirmation
rep = MsgBox("Etes-vous certain(e) de vouloir initialiser ?",
vbYesNo)
If rep = vbNo Then Exit Sub

'OK, initialiser
ActiveWorkbook.SaveAs "Ancien" & ActiveWorkbook.Name

'procédure d'initialisation
' ton code
End Sub

Bonne journée
--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)





Avatar
Alain CROS
Bonjour.

XL97 n'aime pas VbMsgBoxResult
à remplacer par Long.

Alain CROS
Avatar
Pounet95
Bonjour,
Qu'est-ce qui cause problème dans cette ligne ? le vbMsgBoxResult ?
Cela voudrait dire qu'il n'existe qu'en XL2000 !

Et que se passe-t-il si dans le module où se trouve la procédure il y a en
en-tête Option Explicit ?
AMHA, mais c'est une question de bonne habitude qui permet de voir les
erreurs de frappe ( entre autre ).
Et si le type vbMsgBoxResult n'est pas reconnu, qu'à cela ne tienne, on peut
aussi utiliser
String ou Integer et tester la réponse en fonction ( voir aide de msgbox )

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"Youky" a écrit dans le message de news:
43be83dc$0$20147$
cela n'est pas bon
rep = MsgBox("Attention ! Vous allez effacer vos données ! Etes-vous
certain(e) de vouloir continuer ?", vbYesNoCancel) 'demande confirmation
Là c'est bon (aprés le Etes-vous il manquait un espace et le _ )
rep = MsgBox("Attention ! Vous allez effacer vos données ! Etes-vous _
certain(e) de vouloir continuer ?", vbYesNoCancel) 'demande confirmation

Tu peux aussi supprimer la ligne Dim rep qui cause pb
Youky

"13Hubert" a écrit dans le message de
news:
Ha... Petit problème...

J'ai appliqué le code fourni par les sympathiques Pounet95 et Michel
(mbfac)
que j'ai adapté comme il m'a été proposé, mais VBA stoppe devant une
erreur...

Voici le code modifié à ma petite sauce :

---------------------------------------------------------
Sub Nouvelle_Année()
'
' nouv_année Macro
' Macro enregistrée le 06/01/06 par Hubert
'
'
Dim rep As VbMsgBoxResult

rep = MsgBox("Attention ! Vous allez effacer vos données ! Etes-vous
certain(e) de vouloir continuer ?", vbYesNoCancel) 'demande confirmation

If rep = vbNo Then Exit Sub

'OK, initialiser
ActiveWorkbook.SaveAs "Ancienne version" & ActiveWorkbook.Name

'procédure d'initialisation

Range("B6:D8,B9,D9").Select
Range("D9").Activate
Selection.ClearContents

Sheets(Array("JANVIER", "FEVRIER", "MARS", "AVRIL", "MAI", "JUIN",
"JUILLET", "AOUT", _
"SEPTEMBRE", "OCTOBRE", "NOVEMBRE", "DECEMBRE")).Select
Sheets("JANVIER").Activate
Range("B17:G81").Select
Selection.ClearContents
Range("A17").Select
Application.Run "Suivi_BJ_MISSION_2006.xls!Délégations"

End Sub
---------------------------------------------------------

Voici le message d'erreur :

Erreur de compilation
Type ActiveX non géré dans Visual Basic

Et le système fige la sélection sur la ligne
Dim rep As VbMsgBoxResult

Alors j'ai bien essayé de comprendre ce qu'il (VBA) me voulait, mais je
n'ai
rien compris !!! Je ressemble à une poule qui a trouvé un cure-dent...


Au secours !
Et merci encore

Hubert
--
...from Marseille !



Bonjour,

Quelque chose comme ceci ( à adapter bien sûr )

Sub Nouvelle_Année()
Dim rep As VbMsgBoxResult

'demande confirmation
rep = MsgBox("Etes-vous certain(e) de vouloir initialiser ?",
vbYesNo)
If rep = vbNo Then Exit Sub

'OK, initialiser
ActiveWorkbook.SaveAs "Ancien" & ActiveWorkbook.Name

'procédure d'initialisation
' ton code
End Sub

Bonne journée
--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)









1 2