Bonjour à toutes et à tous,
j'ai un souci avec, je pense, une variable qui ne se remet pas à zéro entre deux lancements de procédures
J'ai dû déclarer une variable en Public car la réponse est utilisée dans d'autres procédures (même si dans le présent exemple, ça paraît simpliste)
Quand j'ouvre le fichier et lance Reporting(), j'ai bien l'enchainement des 2 questions : type de reporting et type d'impression
Je passe par des do loop pour être sûr que l'utilisateur fournisse une réponse
MAIS si je relance la procédure dans la foulée (c'est-à-dire sans avoir fermé puis rouvert le fichier), alors la question sur le type d'impression est zappée …
ou plus exactement, xl reprend en mémoire la précédente réponse …
Je ne sais pas comment remettre à zéro la variable PapierOuEcran … (mais je pensais que c'était automatique !)
Quelqu'un a-t-il une idée comment faire pour rendre la 2ème question sur l'impression systématique ?
Merci d'avance pour vos lumières
ici mon code
j'ai un souci avec, je pense, une variable qui ne se remet pas à zéro entre deux lancements de procédures
J'ai dû déclarer une variable en Public car la réponse est utilisée dans d'autres procédures (même si dans le présent exemple, ça paraît simpliste)
Quand j'ouvre le fichier et lance Reporting(), j'ai bien l'enchainement des 2 questions : type de reporting et type d'impression
Je passe par des do loop pour être sûr que l'utilisateur fournisse une réponse
MAIS si je relance la procédure dans la foulée (c'est-à-dire sans avoir fermé puis rouvert le fichier), alors la question sur le type d'impression est zappée …
ou plus exactement, xl reprend en mémoire la précédente réponse …
Je ne sais pas comment remettre à zéro la variable PapierOuEcran … (mais je pensais que c'était automatique !)
Quelqu'un a-t-il une idée comment faire pour rendre la 2ème question sur l'impression systématique ?
Merci d'avance pour vos lumières
ici mon code
Code:
Option Explicit
Public PapierOuEcran As Variant ' car utilisée dans de nombreuses autres sub() disséminées
Sub Reporting()
Dim ReponseTypeReporting As Variant
Do Until ReponseTypeReporting = "c" Or ReponseTypeReporting = "C" Or ReponseTypeReporting = "p" Or ReponseTypeReporting = "P"
ReponseTypeReporting = Application.InputBox("Saisissez le type de reporting souhaité : p=partiel, c=complet", Type:=2) ' type=2 force réponse alpha
Loop
Do Until PapierOuEcran = 1 Or PapierOuEcran = 2
PapierOuEcran = Application.InputBox("Impression papier = 1 ou impression écran = 2", Type:=1) ' type=1 force saisie numérique
Loop
If ReponseTypeReporting = "p" Or ReponseTypeReporting = "P" Then
Call b3_reporting ' et dans cette b3_reporting, on utilise réponse contenue dans variable PapierOuEcran
MsgBox "Je lance le traitement partiel" ' uniquement pour contrôler ce qui se passe ...
Else
Call b4_reporting ' et dans cette b4_reporting, on utilise réponse contenue dans variable PapierOuEcran
MsgBox "Je lance le traitement complet" ' uniquement pour contrôler ce qui se passe ...
End If
End Sub
' ...
' ...
' ...
' ... tout un tas de procédures ...
' ...
' ...
' ...
Sub b3_reporting()
' ... instructions
MsgBox "Traitement b3"
' If PapierOuEcran = 1 Then
' ActiveSheet.PrintOut
' Else
' ActiveSheet.PrintPreview
' End If
End Sub
Sub b4_reporting()
' ... instructions
MsgBox "Traitement b4"
' If PapierOuEcran = 1 Then
' ActiveSheet.PrintOut
' Else
' ActiveSheet.PrintPreview
' End If
End Sub