Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VbCancel InputBox et err 1004

  • Initiateur de la discussion Initiateur de la discussion alexane
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

alexane

XLDnaute Occasionnel
Bonjour
J'ai une inputbox pour récupérer le nombre d'impression voulue par l'utilisateur qui fonctionne sauf quand on clique sur Annuler : bug (1004)
Voila le code :
var1 = InputBox("Combien de copies à imprimer ?", "Nb d'impression", 1)
ActiveSheet.PrintOut copies:=var1

J'ai essayé de mettre une condition mais ça fonctionne pas plus :
var1 = InputBox("Combien de copies à imprimer ?", "Nb d'impression", 1)
If var1 = vbCancel OR var1 <1 Then
Exit Sub
Else: ActiveSheet.PrintOut copies:=var1
End If
Qqn peut-il m'expliquer ou est mon erreur (est ce parce que vbCancel prend la valeur 2 et si oui comment s'en sortir ?)
Cordialement
 
Re : VbCancel InputBox et err 1004

Bonjour Alexane

essaye peut être ainsi :

Code:
Dim var1 As Variant
var1 = InputBox("Combien de copies à imprimer ?", "Nb d'impression", 1)
If var1 <> "" And var1 > 0 Then ActiveSheet.PrintOut copies:=var1

bon après midi
@+
 
Re : VbCancel InputBox et err 1004

Merci bcp ça marche impec
en attendant j'avais mis :
var1 = InputBox("Combien de copies à imprimer ?", "Nb d'impression", 1)
On Error GoTo erreurann
ActiveSheet.PrintOut copies:=var1
erreurann:
If Err = 1004 Then Stop

mais je suis pas sûre que la syntaxe soit très exacte
Cordialement
 
Re : VbCancel InputBox et err 1004

Bonsoir à vous,


il faut utiliser la méthode Application.InputBox pour pouvoir gérer le bouton 'Annuler' :
:
Code:
Sub Test_V04()
    Dim Donnee As Variant
    
    Donnee = Application.InputBox("Saisissez une valeur:", "Le titre")
    
   'Intercepte l'utilisation du bouton "Annuler" et la croix de fermeture.
   If VarType(Donnee) = vbBoolean Then
        MsgBox " opération annulée"
        Exit Sub
    End If
    
    MsgBox Donnee
End Sub

bonne soirée
michel
 
Re : VbCancel InputBox et err 1004

Re, Bonsoir Michel🙂 ,

Aarf Michel, tu as sans aucun doute raison pour le choix de la méthode, mais à priori, sauf erreur de ma part, dans le code que j'ai donné j'arrive à intercepter la croix ou le bouton "annuler"... Quelque chose doit m'échapper, te souhaitant une bonne soirée.
@+
 
Re : VbCancel InputBox et err 1004

bonsoir cher Pierrot ... ;o)

à priori, sauf erreur de ma part, dans le code que j'ai donné j'arrive à intercepter la croix ou le bouton "annuler"...

Je n'en disconvient pas ... ;o)

L'avantage de la méthode Application.InputBox réside simplement dans la possibilité de définir un type de donnée à renvoyer en résultat, et dans un même temps, renvoyer une donnée type booléen qui va indiquer si la croix de fermeture ou le bouton Annuler ont été utilisés.


bonne soirée
michel
 
Re : VbCancel InputBox et err 1004

Bonjour Alexane, Michel

Merci Michel pour ta réponse et ton explication, j'avais mal interprété ton intervention... Je pensait qu'il y avait une faille dans mon code que je n'avais pas décelé... Ce qui aurait été fort possible...
Encore merci et bravo🙂 pour ce qui tu fais ici et ailleurs...

Bonne journée
@+
 
Re : VbCancel InputBox et err 1004

Bonjour, j'ai une macro avec le code suivant et je ne sais pourquoi la macro continue à s'executer lorsque je clique sur le bouton Annuler ou sur la croix de la Input box !! Auriez-vous une idée ?
Je ne sais pas si ça peut aider mais elle est aussi relier à une autre macro qui joue le role de timing.
Merci d'avance pour votre aide

Sub Majcel()

Dim name As String
Dim Trend As Variant

i = i + 1
If i = 694 Then i = 2
Cells(56081, 5) = Sheets("Countries").Cells(i, 6)

Compteur
Sheets("Data").Cells(56081, 9).FormulaR1C1 = _
"=CONCATENATE(RC[-8],"" "",RC[-4],"" "",RC[-3])"
name = Sheets("Data").Cells(56081, 9).Value
Sheets("Countries").Cells(i, 8).Value = name
Trend = InputBox("Look at the graph and Up, Down or OK", "Sales Trend")
If Trend = vbBoolean Then
Exit Sub
Else
Sheets("Countries").Cells(i, 9).Value = Trend
End If

End Sub
 
Re : VbCancel InputBox et err 1004

Bonjour Michel

tu compares ta variable "trend" à une constante "vbBoolean " qui renvoie la valeur 11, donc si tu ne renseignes pas 11 dans ton "inputbox", le test ne sera pas positif...

Code:
If Trend = vbBoolean Then
Exit Sub

modifie peut être en t'inspirant des codes fournis dans les messages ci-dessous.

bonne fin d'après midi
@+
 
Re : VbCancel InputBox et err 1004

Je ne vois pas du tout.
En fait c'est assez compliqué car j'aimerais avoir la possibilité de laisser vide la variable trend, donc appuyer sur entrée (de la Inputbox), ce qui revient à avoir "" tout comme Annuler. N'existe t'il pas un code avec VbCancel ? (si j'appuie sur annuler je quitte absolument la macro) ? En tout cas merci pour ton aide.
ps: maintenant j'ai : If Trend = "" Then Exit Sub mais la macro ne s'arrête toujours pas.
 
Re : VbCancel InputBox et err 1004

Re

le code ci-dessous fonctionne chez moi

Code:
Dim Trend As Variant
Trend = InputBox("Look at the graph and Up, Down or OK", "Sales Trend")
If Trend = "" Then
Exit Sub
Else
Sheets("Countries").Cells(i, 9).Value = Trend
End If

si bouton annuler, quitte la procédure....

Attention dans ton code tu utilises une variable "name", c'est un mot réservé vba, déconseillé de l'utiliser ainsi...

bonne soirée
@+
 
Re : VbCancel InputBox et err 1004

Bonjour Pierrot et autres Excel logueur : en fait je comprend que la macro ne s'arrêtais pas avec Exit Sub car elle est reliée à une autre petite sub "Sub Compteur" dont le code est ici bas ! J'ai toutefois réussi à le faire en la renvoyant au code "Sub StopCompteur" ci-dessous. Un autre Internaute (Soenda) m'a également proposé une autre solution que je souhaite partagé :
If Trend = vbNullString Then
Exit Sub
Else

MERCI A VOUS TOUS POUR VOTRE COLLABORATION !


Sub Compteur()
temps = Now + TimeValue("00:00:07") 'Ici 7 secondes
Application.OnTime temps, "MajCel"
End Sub

Sub StopCompteur()
On Error Resume Next
Application.OnTime temps, "MajCel", , False
i = 0
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

D
Réponses
2
Affichages
1 K
D
G
Réponses
1
Affichages
846
Y
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…