Aide pour améliorer macro "InputBox" et "MsgBox"

Bonsoir à tous

Je souhaite améliorer la macro ci-après car je ne sais comment coder le InputBox lorsque je sélectionne "ANNULER" idem pour MsgBox. Il est peut-être possible de faire mieux mais je suis limité en connaissances. Si quelqu'un peut me commenter la macro afin de me la rendre plus compréhensible. D'avance merci.

'---------------------------
'ENREGISTRE COPIE FACTURE
'---------------------------
Sub ENREGISTREFACTURE()
'
Dim Chemin As String

'"K2" Valeur se trouvant dans la Facture c'est le chemin où sera enregistré une copie de
'la facture "D:\FACTURES\"
'"H10" Nom du fichier qui correspond au numéro de facture
DEBUT:

DossierCellule = Range("K2").Value
Nomdossier = Application.InputBox("Tapez l'année :", "Dossier FACTURES ...")
NomFichier = Range("H10").Value & ".xlsm"
Chemin = DossierCellule & Nomdossier & "\"

If Nomdossier = "" Then
MsgBox "Veuillez entrez l'année pour continuer ..."
GoTo DEBUT
Else

'Sauve le document avec le nom indiqué en "K2" soit numéro de facture

If Dossier(Chemin) = True Then
ThisWorkbook.SaveCopyAs Chemin & NomFichier
Else

If MsgBox("Le dossier n'existe pas..." & Chr(10) & Chr(10) & "Souhaitez vous le créer ?", vbYesNo) = vbYes Then
MkDir (Chemin)

ThisWorkbook.SaveCopyAs Chemin & NomFichier

Exit Sub
End If
End If
End If

MsgBox "Votre classeur a bien été sauvegardé."

End Sub

Edit modo : code mis entre balises, merci de faire attention

Bonsoir Pigneau,

En retour, si Annulation lors du MSGbox

'---------------------------
'ENREGISTRE COPIE FACTURE
'---------------------------
Sub ENREGISTREFACTURE()
'
Dim Chemin As String

'"K2" Valeur se trouvant dans la Facture c'est le chemin où sera enregistré une copie de
'la facture "D:\FACTURES\"
'"H10" Nom du fichier qui correspond au numéro de facture
DEBUT:

DossierCellule = Range("K2").Value
Nomdossier = Application.InputBox("Tapez l'année :", "Dossier FACTURES ...")
NomFichier = Range("H10").Value & ".xlsm"
Chemin = DossierCellule & Nomdossier & "\"

If Nomdossier = "" Then
MsgBox "Veuillez entrez l'année pour continuer ..."
GoTo DEBUT
Else

'Sauve le document avec le nom indiqué en "K2" soit numéro de facture

If Dossier(Chemin) = True Then
ThisWorkbook.SaveCopyAs Chemin & NomFichier
Else

If MsgBox("Le dossier n'existe pas..." & Chr(10) & Chr(10) & "Souhaitez vous le créer ?", vbYesNo) = vbYes Then
MkDir (Chemin) Else Exit sub 'Quitte la procédure si touche annuler

ThisWorkbook.SaveCopyAs Chemin & NomFichier

Exit Sub
End If
End If
End If

MsgBox "Votre classeur a bien été sauvegardé."
End sub

Bonsoir X Cellus

Merci pour la rapidité de ta réponse.

J'ai encore un problème sur le InputBox du début car lorsque je fais ANNULER il m'affiche le dernier message "Le dossier n'existe pas... Souhaitez vous le créer.

Comment puis-je contourner le problème

D'avance merci

Suite,

Quand tu indiques Annulation tu le fais sur l'InputBox ?

Car sur le MsgBox c'est OUI ou NON.

suite,

Dans le cas ou l'annulation se fait sur l'inputbox.

Cela revient à une chaine nulle donc comme si tu ne rentrais pas l'année. Et donc ce sera retour au début.

Il faudrait plutôt inscrire le mot fin ce qui permettrait de sortir de la procédure sans toucher au bouton Annnuler.

DossierCellule = Range("K2").Value
Nomdossier = Application.InputBox("Tapez l'année :", "Dossier FACTURES ...")
If Nomdossier = "fin" then exit sub

If Nomdossier = "" Then
MsgBox "Veuillez entrez l'année pour continuer ..."

NomFichier = Range("H10").Value & ".xlsm"
Chemin = DossierCellule & Nomdossier & "\"

Pour le MSGBOX en fin de macro le problème est régler. Par contre pour l'Intput, j'ai bien testé en tapant "FIN" dans le champ qui me sort de la boucle mais comme je cherche également de mon côté, lorsque la macro démarre je mets par défaut l'année en cours par défaut qui est récupérer en X3. Cela donne cela

Sub ENREGISTREFACTURE()
'
Dim Chemin As String

'"K2" Valeur se trouvant dans la Facture c'est le chemin où sera enregistré une copie de
'la facture "D:\FACTURES\"
'"H10" Nom du fichier qui correspond au numéro de facture
DEBUT:

DossierCellule = Range("K2").Value
Nomdossier = Application.InputBox("Tapez l'année :", "Dossier FACTURES ...", Range("X3").Value)
If Nomdossier = "FIN" Then Exit Sub

NomFichier = Range("H10").Value & ".xlsm"
Chemin = DossierCellule & Nomdossier & "\"

................................

En faisant comme tu me l'indiques je perds le bénéficie de la valeur par défaut et c'est embêtant. Si tu as une idée, je suis preneur.

Merci

Bonjour Pigneau et

Une petite présentation ICI serait la bienvenue

Je vous invite vivement à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum et notamment :

  • Joignez (si possible) un fichier pour augmenter vos chances d'obtenir de l'aide en cliquant sur le bouton Fichier de l'éditeur. Si votre fichier est trop lourd ou contient des données personnelles, créez une version allégée de votre fichier avec juste assez d'informations pour permettre de comprendre votre problème. Dans tous les cas, ne postez JAMAIS de fichiers avec des informations personnelles ou confidentielles (cet utilitaire peut vous aider à les retirer).

Et également

  • Pour plus de lisibilité, utilisez la fonctionnalité pour insérer vos codes VBA (et si possible aussi pour vos formules Excel).

Merci d'y faire attention SVP

Cordialement

Bonjour BrunoM45,

Merci pour vos conseils. Pour la présentation c'est fait et j'ai pris à nouveau connaissance de la CHARTE.

Désolé pour les désagréments.

Bonjour X Cellus,

J'ai passé une bonne partie de ma soirée afin de trouver une solution à mon petit problème. Apparemment il n'y a pas vraiment de solution à mon problème en ce qui concerne Application.IntputBox sauf de créer un Userform permettant de paramétrer le bouton Annuler. Je testerai cette solution mais je dois d'abord rechercher un peu plus d'information sur les Userform afin d'adapter mon code à celui-ci.

Cela dit, votre petite astuce du paramètre "FIN" est une bonne solution qui j'espère sera provisoire mais elle m'arrange bien pour le moment.

Encore merci pour votre aide.

Bonjour Pigneau,

Parfois il y a du provisoire qui dure longtemps...

Mais si un jour une solution t'apparaît. N'hésites pas à relancer ton fil pour la partager.

Je n'hésiterai à partager

Rechercher des sujets similaires à "aide ameliorer macro inputbox msgbox"