je cherche à faire apparaitre une box au démarrage d'excel me demandant si
je souhaite exécuter la les macros qui se charge tout seul au démarrage ou
travailler sans les macros? (le tout avec un timer de 3 secondes).
Mon problème se situe donc dans la création du timer, et comment si réponse
"oui" continuer l'éxécution du VBA et si "non" comment éviter l'éxécution.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
anomymousA
bonjour,
je ne suis pas sur d'avoir absolument compris ce que tu veux. Je te signale qu'à l'ouverture d'un fichier Excel , si tu as des macros dans ce fichier, l'application te demande d'elle-même si tu veux exécuter les macros ou pas sauf si le fichier est un .xla déclaré dans les macros complémentaires ou bie que la sécurité Macros est au niveau bas s'il s'agit d'un fichier .xls. C'est une précaution élémentaire que te signale l'application pour éviter que tu recoives unemacro qui s'exécute sans que tu le saches et qui te colle un virus.
Ceci dit, j'ai interprété ta demande à ma sauce. Ce que je te propose est alors la chose suivante. Tu crées un fichier Excel que tu enregistreras en Macro complémentaire ( .xla) et que tu déclareras dans Excel comme étant une macro complémentaire (par Outils/Macros complémentaires/Parcourir) .
l'exemple que je te donne fait la chose suivante: A l'ouverture d'Excel, il apparait un Userform dont j'ai enlevé la croix de fermeture pour obliger l'utilisateur à utiliser les bouton "Continuer" (identifié sur le userform comme CommandButton1) ou le boutons "Arrêter" (identifié sur le userform comme CommandButton2). Si l'utilisateur clique sur le bouton Continuer, on agit sur le controle "Sécurité des Macros" et on le passe au niveau bas ce qui implique que désormais la session d'Excel n'a plus de sécurité macros, donc que quelque soit le fichier que tu ouvres ensuite les macros s'exécuteront sans même te poser la question. Attention , il faut bien que tu prennes conscience de ce fait. De + si jamais une quelconque procédure dans le courant de la session Excel se plante et que tu ne la réinitialises pas ou que tu utilises Application.enableventsúlse et que tu oublies de le remettre à true ou bien voire qu'Excel lui-même se plante (quoiuque pour ce dernier item j'en sois moins sur) , la session d'Excel sera fermée avec le niveau de sécurité bas bien que dans l'exemple que je te communique j'ai pris la précaution de remettre la sécurité à Moyen lors de la fermeture du.xla (quand tu quittes Excel)
Bon reprenons. SI l'utilisiteur clique sur Continuer le niveau de sécurité des macros passe à Bas, s'il clique sur Arreter, le niveau de sécurité des macros reste à ce qu'il était. Si au bout de 5 secondes l'utilisateur n'a rien fait, le programme renvoie le message "le temps imparti est écoulé.les macros ne seront pas exécutées" et le niveau de sécurité des macros reste à ce qu'il était.
Pour utiliser le programme, Il faut que tu crées un Userform avec 2 boutons de commandes (voir texte ci-dessus pour savoir quel commandbutton correspond à continuer ou arreter) et un label avec du texte pour expliquer ce que tu souhaites que l'utilisateur fasse.
Dans le module du userform tu écris les instructions suivantes
'déclarations API nécessaires pour empêcher l'affichage de la 'croix de fermeture du userform
Private Declare Function GetWindowLongA Lib "user32" _ (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLongA Lib "user32" _ (ByVal hwnd As Long, ByVal nIndex As Long, _ ByVal dwNewLong As Long) As Long
Private Declare Function FindWindowA Lib "user32" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Sub CommandButton1_Click()
ThisWorkbook.StopIt = True ThisWorkbook.arret = False Unload Me Call ThisWorkbook.suiteprog
End Sub
Private Sub CommandButton2_Click()
ThisWorkbook.StopIt = True ThisWorkbook.arret = True Unload Me Call ThisWorkbook.suiteprog
End Sub
Private Sub UserForm_Initialize() 'empêche l'affichage de la croix de fermeture en utilisant les API 'déclarées en début de module
Dim hwnd As Long hwnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", _ "X", "D") & "Frame", Me.Caption) SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF
End Sub
Dans le module Thisworkbook de ton fichier .xla tu écris
If StopIt = True Then Else MsgBox "le temps imparti est écoulé.les macros ne seront pas exécutées" End If
On Error GoTo 0
End Function Sub suiteprog()
If arret = True Then MsgBox "vous avez décidé de ne pas exécuter les macros" Else MsgBox "vous avez décidé d'exécuter les macros" On Error Resume Next With Application .SendKeys ("{TAB}+%b+{TAB}+{ENTER}") .CommandBars.FindControl(ID:627).Execute End With On Error GoTo 0 End If
End Sub
Voilà, tu peux adapter ce code en fonction de ce que tu souhaites réellement.
A+
Bonjour à tous,
je cherche à faire apparaitre une box au démarrage d'excel me demandant si je souhaite exécuter la les macros qui se charge tout seul au démarrage ou travailler sans les macros? (le tout avec un timer de 3 secondes). Mon problème se situe donc dans la création du timer, et comment si réponse "oui" continuer l'éxécution du VBA et si "non" comment éviter l'éxécution.
merci d'avance :)
bonjour,
je ne suis pas sur d'avoir absolument compris ce que tu veux. Je te signale
qu'à l'ouverture d'un fichier Excel , si tu as des macros dans ce fichier,
l'application te demande d'elle-même si tu veux exécuter les macros ou pas
sauf si le fichier est un .xla déclaré dans les macros complémentaires ou bie
que la sécurité Macros est au niveau bas s'il s'agit d'un fichier .xls.
C'est une précaution élémentaire que te signale l'application pour éviter
que tu recoives unemacro qui s'exécute sans que tu le saches et qui te colle
un virus.
Ceci dit, j'ai interprété ta demande à ma sauce. Ce que je te propose est
alors la chose suivante.
Tu crées un fichier Excel que tu enregistreras en Macro complémentaire (
.xla) et que tu déclareras dans Excel comme étant une macro complémentaire
(par Outils/Macros complémentaires/Parcourir) .
l'exemple que je te donne fait la chose suivante:
A l'ouverture d'Excel, il apparait un Userform dont j'ai enlevé la croix de
fermeture pour obliger l'utilisateur à utiliser les bouton "Continuer"
(identifié sur le userform comme CommandButton1) ou le boutons "Arrêter"
(identifié sur le userform comme CommandButton2).
Si l'utilisateur clique sur le bouton Continuer, on agit sur le controle
"Sécurité des Macros" et on le passe au niveau bas ce qui implique que
désormais la session d'Excel n'a plus de sécurité macros, donc que quelque
soit le fichier que tu ouvres ensuite les macros s'exécuteront sans même te
poser la question. Attention , il faut bien que tu prennes conscience de ce
fait.
De + si jamais une quelconque procédure dans le courant de la session Excel
se plante et que tu ne la réinitialises pas ou que tu utilises
Application.enableventsúlse et que tu oublies de le remettre à true ou bien
voire qu'Excel lui-même se plante (quoiuque pour ce dernier item j'en sois
moins sur) , la session d'Excel sera fermée avec le niveau de sécurité bas
bien que dans l'exemple que je te communique j'ai pris la précaution de
remettre la sécurité à Moyen lors de la fermeture du.xla (quand tu quittes
Excel)
Bon reprenons. SI l'utilisiteur clique sur Continuer le niveau de sécurité
des macros passe à Bas, s'il clique sur Arreter, le niveau de sécurité des
macros reste à ce qu'il était. Si au bout de 5 secondes l'utilisateur n'a
rien fait, le programme renvoie le message "le temps imparti est écoulé.les
macros ne seront pas exécutées" et le niveau de sécurité des macros reste à
ce qu'il était.
Pour utiliser le programme, Il faut que tu crées un Userform avec 2 boutons
de commandes (voir texte ci-dessus pour savoir quel commandbutton correspond
à continuer ou arreter) et un label avec du texte pour expliquer ce que tu
souhaites que l'utilisateur fasse.
Dans le module du userform tu écris les instructions suivantes
'déclarations API nécessaires pour empêcher l'affichage de la
'croix de fermeture du userform
Private Declare Function GetWindowLongA Lib "user32" _
(ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLongA Lib "user32" _
(ByVal hwnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Declare Function FindWindowA Lib "user32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub CommandButton1_Click()
ThisWorkbook.StopIt = True
ThisWorkbook.arret = False
Unload Me
Call ThisWorkbook.suiteprog
End Sub
Private Sub CommandButton2_Click()
ThisWorkbook.StopIt = True
ThisWorkbook.arret = True
Unload Me
Call ThisWorkbook.suiteprog
End Sub
Private Sub UserForm_Initialize()
'empêche l'affichage de la croix de fermeture en utilisant les API
'déclarées en début de module
Dim hwnd As Long
hwnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", _
"X", "D") & "Frame", Me.Caption)
SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF
End Sub
Dans le module Thisworkbook de ton fichier .xla tu écris
If StopIt = True Then
Else
MsgBox "le temps imparti est écoulé.les macros ne seront pas exécutées"
End If
On Error GoTo 0
End Function
Sub suiteprog()
If arret = True Then
MsgBox "vous avez décidé de ne pas exécuter les macros"
Else
MsgBox "vous avez décidé d'exécuter les macros"
On Error Resume Next
With Application
.SendKeys ("{TAB}+%b+{TAB}+{ENTER}")
.CommandBars.FindControl(ID:627).Execute
End With
On Error GoTo 0
End If
End Sub
Voilà, tu peux adapter ce code en fonction de ce que tu souhaites réellement.
A+
Bonjour à tous,
je cherche à faire apparaitre une box au démarrage d'excel me demandant si
je souhaite exécuter la les macros qui se charge tout seul au démarrage ou
travailler sans les macros? (le tout avec un timer de 3 secondes).
Mon problème se situe donc dans la création du timer, et comment si réponse
"oui" continuer l'éxécution du VBA et si "non" comment éviter l'éxécution.
je ne suis pas sur d'avoir absolument compris ce que tu veux. Je te signale qu'à l'ouverture d'un fichier Excel , si tu as des macros dans ce fichier, l'application te demande d'elle-même si tu veux exécuter les macros ou pas sauf si le fichier est un .xla déclaré dans les macros complémentaires ou bie que la sécurité Macros est au niveau bas s'il s'agit d'un fichier .xls. C'est une précaution élémentaire que te signale l'application pour éviter que tu recoives unemacro qui s'exécute sans que tu le saches et qui te colle un virus.
Ceci dit, j'ai interprété ta demande à ma sauce. Ce que je te propose est alors la chose suivante. Tu crées un fichier Excel que tu enregistreras en Macro complémentaire ( .xla) et que tu déclareras dans Excel comme étant une macro complémentaire (par Outils/Macros complémentaires/Parcourir) .
l'exemple que je te donne fait la chose suivante: A l'ouverture d'Excel, il apparait un Userform dont j'ai enlevé la croix de fermeture pour obliger l'utilisateur à utiliser les bouton "Continuer" (identifié sur le userform comme CommandButton1) ou le boutons "Arrêter" (identifié sur le userform comme CommandButton2). Si l'utilisateur clique sur le bouton Continuer, on agit sur le controle "Sécurité des Macros" et on le passe au niveau bas ce qui implique que désormais la session d'Excel n'a plus de sécurité macros, donc que quelque soit le fichier que tu ouvres ensuite les macros s'exécuteront sans même te poser la question. Attention , il faut bien que tu prennes conscience de ce fait. De + si jamais une quelconque procédure dans le courant de la session Excel se plante et que tu ne la réinitialises pas ou que tu utilises Application.enableventsúlse et que tu oublies de le remettre à true ou bien voire qu'Excel lui-même se plante (quoiuque pour ce dernier item j'en sois moins sur) , la session d'Excel sera fermée avec le niveau de sécurité bas bien que dans l'exemple que je te communique j'ai pris la précaution de remettre la sécurité à Moyen lors de la fermeture du.xla (quand tu quittes Excel)
Bon reprenons. SI l'utilisiteur clique sur Continuer le niveau de sécurité des macros passe à Bas, s'il clique sur Arreter, le niveau de sécurité des macros reste à ce qu'il était. Si au bout de 5 secondes l'utilisateur n'a rien fait, le programme renvoie le message "le temps imparti est écoulé.les macros ne seront pas exécutées" et le niveau de sécurité des macros reste à ce qu'il était.
Pour utiliser le programme, Il faut que tu crées un Userform avec 2 boutons de commandes (voir texte ci-dessus pour savoir quel commandbutton correspond à continuer ou arreter) et un label avec du texte pour expliquer ce que tu souhaites que l'utilisateur fasse.
Dans le module du userform tu écris les instructions suivantes
'déclarations API nécessaires pour empêcher l'affichage de la 'croix de fermeture du userform
Private Declare Function GetWindowLongA Lib "user32" _ (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLongA Lib "user32" _ (ByVal hwnd As Long, ByVal nIndex As Long, _ ByVal dwNewLong As Long) As Long
Private Declare Function FindWindowA Lib "user32" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Sub CommandButton1_Click()
ThisWorkbook.StopIt = True ThisWorkbook.arret = False Unload Me Call ThisWorkbook.suiteprog
End Sub
Private Sub CommandButton2_Click()
ThisWorkbook.StopIt = True ThisWorkbook.arret = True Unload Me Call ThisWorkbook.suiteprog
End Sub
Private Sub UserForm_Initialize() 'empêche l'affichage de la croix de fermeture en utilisant les API 'déclarées en début de module
Dim hwnd As Long hwnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", _ "X", "D") & "Frame", Me.Caption) SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF
End Sub
Dans le module Thisworkbook de ton fichier .xla tu écris
If StopIt = True Then Else MsgBox "le temps imparti est écoulé.les macros ne seront pas exécutées" End If
On Error GoTo 0
End Function Sub suiteprog()
If arret = True Then MsgBox "vous avez décidé de ne pas exécuter les macros" Else MsgBox "vous avez décidé d'exécuter les macros" On Error Resume Next With Application .SendKeys ("{TAB}+%b+{TAB}+{ENTER}") .CommandBars.FindControl(ID:627).Execute End With On Error GoTo 0 End If
End Sub
Voilà, tu peux adapter ce code en fonction de ce que tu souhaites réellement.
A+
Bonjour à tous,
je cherche à faire apparaitre une box au démarrage d'excel me demandant si je souhaite exécuter la les macros qui se charge tout seul au démarrage ou travailler sans les macros? (le tout avec un timer de 3 secondes). Mon problème se situe donc dans la création du timer, et comment si réponse "oui" continuer l'éxécution du VBA et si "non" comment éviter l'éxécution.