Macro qui se lance à l'ouverture avec msg.box "oui/non"

Bonjour à tous,

sous Excel 2010.

J'ai un fichier avec une macro qui se lance automatiquement dès son ouverture.

J'aimerai intégrer au début de cette macro un message box qui permettrai de choisir si OUI on souhaite poursuivre la macro ou si NON on veut l’arrêter et à ce moment si NON il y a un GoTo qui renvoi direct à la fion de la macro.

De plus, Il faudrait qu'en choix par défaut, en l'absence de réponse au bout de 60secondes, le OUI se valide automatiquement et que la macro se lance donc.

Explication :

C'est un fichier qui se lance tout seul via une tache planifiée Windows pour que la mise à jour se fasse dans la nuit.

Seulement quand je dois ouvrir le fichier pour l'utiliser du coup la macro se lance et j'en ai pour 25 min ou tout est bloqué. Évidement je n'arrive pas à interrompre avec ECHAP (et je ne sais pas pourquoi), le fichier et trop important certainement et cela fait tout planter. ( CTRL MAJ PAUSE ne marche pas non plus)

Donc ma question est la seule solution je pense.

MERCI à tous

Il y a toujours une dizaine de façons de faire quelque chose:

En voilà quelques unes

1)

Supposons que ta macro s'appelle "toto"

Private Sub Workbook_Open()
    Set objShell = CreateObject("WScript.Shell")
    X = objShell.Popup("Voulez vous executer la macro?", 60, "Titre", vbYesNo) 'le 60 est le nombre de secondes d'attente
    Select Case X
    Case vbYes
        Call toto
    Case vbNo
        MsgBox "Canceled"
    Case Else
        Call toto
    End Select
End Sub

2)

Quand tu ouvres un fichier en appuyant sur shift les macros évenementielles s'inhibent

3)

Tu peux aussi tester l'heure à l'ouverture, si elle correspond à l'heure de la planification, lancer la macro, sinon ne pas la lancer

FORMIDABLE

ce code est parfait

merci

Re bonjour

J'ai voulu utiliser le meme code dans un autre fichier

j'ai donc placé ce code dans "thisworkbook" en remplaçant évidement par le bon nom de sub.

si on clic sur oui => la fonction se lance

Si non => la fonction est "canceled"

mais lorsque on te touche rien cad l'option else => il ne se passe rien, même après que le laps de temps indiqué soit écoulé.

Comment expliqué cela ?

merci

Je ne vois que l'option que tu aies mal recopié le code..

voici un copier coller en l'état :

Private Sub Workbook_Open()

Set objShell = CreateObject("WScript.Shell")

X = objShell.Popup("Voulez vous executer la maj ?", 10, "Mise à Jour", vbYesNo)

Select Case X

Case vbYes

Call maj

Case vbNo

MsgBox "MAJ Canceled"

Case Else

Call maj

End Select

End Sub

Elle marche chez moi... As tu deux workbooks_open dans ton thisworkbook ? As tu un MAC ?

non j'ai qu'un seul woorkbook open et j'ai un pc

en revanche, j'ai les deux fichiers avec ce meme code ouvert en meme temps, je vais essayer de fermer l'autre et recommencer. meme si je doute que ça change...


malheureusement rien ne se passe.

Mais peux tu m'expliquer , du moement ou on demande yes ou no, comment il peut y avoir une troisieme possibilité qui enclenche la macro en l'absence de réponse ?

en gros, il n'y a pas de case "else" donc...?

X = objShell.Popup("Voulez vous executer la maj ?", 10, "Mise à Jour", vbYesNo)

Le 10 veut dire que si au bout de 10 secondes tu n'as pas choisi yes ou no alors ce n'est ni yes ni no.

ok je me doutais de cette réponse.

je viens de me rendre compte qu'en fait j'ai un pb au niveau de ce timming, c'est la box temporaire qui ne se ferme jamais donc la décision else ne peut pas prendre le relais...

peu importe la duree que je met, la box reste toujours visible


c'est bien ça, la box temporaire ne se ferme jamais,

meme avec ce code tout simple elle reste ouverte

CreateObject("Wscript.Shell").Popup "blabla", 3, "blabla ", vbExclamation

En regardant sur le net il parait que ça ne marche pas parfois pour certains pc... sans plus d'explications..

Voilà un petit bypass

Private Sub Workbook_Open()
Select Case Popup("Voulez vous executer la maj ?", 10, "Mise à Jour", _
        vbInformation + vbOKCancel + vbDefaultButton2)
    Case -1
       call maj
    Case vbOK
      call maj
    Case vbCancel
      MsgBox "MAJ Canceled"
      exit sub
  End Select
End Sub

Ca dans un module

Function Popup(ByVal Prompt As String, _
    Optional ByVal SecondsToWait As Integer = 0, _
    Optional ByVal Title As String = "", _
    Optional ByVal Buttons As VbMsgBoxStyle = vbOK) As VbMsgBoxResult
  'Show a popup and wait some seconds, returns -1 if the user has not made a selection.
  '  Solve the problem that wss.Popup doesn't close some times when called directly from VBA
  Dim fso As Object 'FileSystemObject
  Dim wss As Object 'WshShell
  Dim TempFile As String
  On Error GoTo ExitPoint
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set wss = CreateObject("WScript.Shell")
  With fso
    TempFile = .BuildPath(.GetSpecialFolder(2).Path, .GetTempName & ".vbs")
    With .CreateTextFile(TempFile)
      .WriteLine "Set wss = CreateObject(""WScript.Shell"")" & vbCrLf & _
        "i = wss.Popup(""" & Prompt & """," & SecondsToWait & ",""" & Title & _
        """," & Buttons & ")" & "" & vbCrLf & _
        "WScript.Quit i"
      .Close
    End With
  End With
  Popup = wss.Run(TempFile, 1, True)
  fso.DeleteFile TempFile, True
ExitPoint:
End Function

Comment dire : IMPECCABLE !!

je ne comprend rien à tout ça mais ça marche parfaitement

merci

Rechercher des sujets similaires à "macro qui lance ouverture msg box"