Je voulais faire une macro qui demande une confirmation de création d'une archive. J'ai mis le code suivant:
VB:
sub Creation_Archive()
dim Archive as Boolean
Archive = MsgBox("voulez-vous vraiment archiver cette feuille ?", vbYesNo, "Archive de l'année passée")
If (Archive = False) Then
Exit Sub
Else
Sheets("Suivi année en cours").Activate
Sheets.Add after:=ActiveSheet
ActiveSheet.Name = "Archive"
End If
end sub
Mais ça me retourne toujours "Archive = true", même si je clique sur "NON" dans la MsgBox. Pouvez-vous corriger mon code, car j'ai essayé plein de choses qui ne fonctionnent pas.
Merci
Scrib
Sub Creation_Archive()
If MsgBox("voulez-vous vraiment archiver cette feuille ?", 4, _
"Archive de l'année passée") <> 6 Then Exit Sub
Worksheets.Add , Worksheets("Suivi année en cours")
ActiveSheet.Name = "Archive"
End Sub
Sub Creation_Archive()
'Sheets("Suivi année en cours").Activate
If MsgBox("voulez-vous vraiment archiver cette feuille ?", vbYesNo + vbDefaultButton2, "Archive de l'année passée") = vbYes Then
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = "Archive"
End If
End Sub
Si vous exécutez le code depuis la feuille "Suivi année....", vous n'avez pas besoin d'activer cette feuille avant exécution du code
Cordialement
Edit : Mais ça me retourne toujours "Archive = true"
tu as écrit : « MsgBox vous renvoie une valeur String et pas Boolean »
euh, non : MsgBox retourne une valeur de type Integer :
les valeurs renvoyées sont celles-ci :
un booléen à 0 vaut False ; toutes les autres valeurs de ce booléen valent True ; aussi, toutes les valeurs 1 à 7 du tableau ci-dessus valent True = Vrai = -1 ; s'il y avait un retour de la valeur 0, alors il vaudrait False = Faux ; mais 0n'est jamais retourné par MsgBox.
comme scrib a utilisé en 2ème argument vbYesNo, ça affiche les 2 boutons "Oui" et "Non" ; vbYesNo = 4 ; retour possible pour ce 2ème argument 4 : vbYes OU vbNo(6 OU 7).
c'est pourquoi j'ai proposé un code VBA qui sort de la sub si le retour est différent de 6 ; ainsi, la suite de la sub (qui ajoute la feuille "Archive" à droite de la feuille "Suivi année en cours") sera exécutée seulement si l'utilisateur a cliqué sur le bouton "Oui".
j'aurais aussi pu mettre ce code VBA :
VB:
Sub Creation_Archive()
If MsgBox("voulez-vous vraiment archiver cette feuille ?", 4, _
"Archive de l'année passée") = 7 Then Exit Sub
Worksheets.Add , Worksheets("Suivi année en cours")
ActiveSheet.Name = "Archive"
End Sub
Merci pour vos précisions, je pensais que si l'on "associé" un MsgBox à une variable de type Boolean, ça pouvait fonctionner. Visiblement pas du tout.
Problème résolu.
Bonne journée
Scrib