[VBA] Macro GetSaveAsFilename Gestion Erreurs

  • Initiateur de la discussion Initiateur de la discussion Allergique
  • 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 !

Allergique

XLDnaute Junior
Bonsoir,

J'ai une macro pour enregistrer un fichier avec la fonction GetSaveAsFilename

Lorsque le nom de fichier est déjà existant, une fenêtre de demande de confirmation d'écrasement s'affiche avec les choix Oui, Non, Annuler.

Lorsque je clique sur Non ou Annuler, la macro se met en erreur. Pour corriger les erreurs j'ai ajouté un saut qui règle le problème de la touche "Non".
A cause de ce saut, si je clique sur Annuler il me redemande le nom de fichier en boucle.

Comment peut-on programmer une variable qui donne l'état True ou False des touches Oui, Non et Annuler?

Voici le code de ma macro:
Code:
Sub enregistrement()

Dim nom

nom = Application.GetSaveAsFilename(InitialFileName:=ActiveWorkbook.Name, filefilter:=" Classeur Microsoft Excel,*.xls", FilterIndex:=2, Title:="Enregistrer Sous")

If nom = False Then
    Exit Sub
End If

On Error GoTo correction
ActiveWorkbook.SaveAs Filename:=nom
Exit Sub

correction:
nom = Application.GetSaveAsFilename(filefilter:=" Classeur Microsoft Excel,*.xls", FilterIndex:=1, Title:="Enregistrer Sous")
Resume

End Sub

Merci pour votre aide
 
Dernière édition:
Re : [VBA] Macro GetSaveAsFilename Gestion Erreurs

Bonsoir Allergique, BERRACHED said, le Forum,

Une façon de faire :
Code:
[COLOR=NAVY]Sub[/COLOR] enregistrement()
[COLOR=NAVY]Dim[/COLOR] nom
    [COLOR=NAVY]Do[/COLOR]
        nom = Application.GetSaveAsFilename(InitialFileName:=ActiveWorkbook.Name, filefilter:=" Classeur Microsoft Excel,*.xls", FilterIndex:=2, Title:="Enregistrer Sous")
        [COLOR=NAVY]If[/COLOR] nom = [COLOR=NAVY]False Then Exit Sub
    Loop Until[/COLOR] Dir(nom) = ""
    ActiveWorkbook.SaveAs Filename:=nom
[COLOR=NAVY]End Sub[/COLOR]

Said, es-tu sûr que le lien que tu proposes traite du même sujet que celui-ci ?

Cordialement,
 
Re : [VBA] Macro GetSaveAsFilename Gestion Erreurs

Salut Said,

J'ai consulté le sujet dont tu m'as donné le lien, mais je ne trouve pas la réponse à ma question. Ils parlent de supprimer les alertes, ou de le créer une seule fois et après y faire référence.

J'ai cherché pas mal de temps sur les sujets concernant cette fonction, mais je n'en ai pas trouvé qui parlent d'un problème d'erreur avec la touche Annuler.

Si il est possible de renvoyer l'état True/False des touches de la fenêtre d'avertissement le problème serait facilement réglé

a+
 
Re : [VBA] Macro GetSaveAsFilename Gestion Erreurs

Re,

Cher Said, pour que je t'excuse encore faudrait-il qu'il y ait un reproche dans mon post précédent.

Au plaisir de te croiser également.

Cordialement,


PS: au fait, le "m" de mDF, ce n'est pas Maitre.
 
Re : [VBA] Macro GetSaveAsFilename Gestion Erreurs

Salut,myDearFriend!

Non certes il y'a pas eu de reproches je reconnais ! mais par respect a toi et je te considéré comme l'un des imminents de ce domaine que j'aime tant normalement je devrais pas intervenir c'est comme ca que je suis éduquer

Cordialement
 
Re : [VBA] Macro GetSaveAsFilename Gestion Erreurs

Re, Salut myDearFriend,

Je n'avais pas vu ta réponse parce que je répondais à Said!

Ta solution fonctionne bien, donc c'est parfait.

Juste pour comprendre, dans la boucle Loop until, pourquoi excel n'affiche pas de message d'avertissement comme quoi le fichier est déjà existant?
Aussi, je n'ai pas compris le fonctionnement de la fontion Dir...

Peux-tu me donner quelques précisions stp?
 
Re : [VBA] Macro GetSaveAsFilename Gestion Erreurs

Re,

Soit LeChemin, le chemin complet d'un fichier quelconque.

Dir(LeChemin) te donnera "" (chaine de longueur nulle) si LeChemin (et donc, le fichier) n'existe pas.

Code:
[COLOR=NAVY]Do[/COLOR]
[COLOR=GREEN]'...[/COLOR]
[COLOR=NAVY]Loop Until[/COLOR] Dir(nom) = ""
tourne donc en boucle jusqu'à ce que le chemin complet proposé n'existe pas déjà (ce qui signifie qu'aucun fichier ne sera écrasé ainsi)

Par ailleurs, ce n'est pas la méthode GetSaveAsFilename qui déclenche le message d'avertissement si le fichier existe déjà, mais la méthode SaveAs qu'il y a après...

Cordialement,
 
Dernière édition:
Re : [VBA] Macro GetSaveAsFilename Gestion Erreurs

Re Said,

Je n'avais pas vu ton dernier post....

Salut,myDearFriend!

Non certes il y'a pas eu de reproches je reconnais ! mais par respect a toi et je te considéré comme l'un des imminents de ce domaine que j'aime tant normalement je devrais pas intervenir c'est comme ca que je suis éduquer

Cordialement
Pas de problème Said.
Ici, mise à part DavidXLD ou PascalXLD, ni moi, ni personne d'autre n'est en droit de te reprocher d'intervenir. Je n'ai tout simplement pas compris le rapport entre le lien que tu donnais et le présent sujet (si ce n'est qu'on y parle effectivement de GetSaveAsFilename).
Si je t'ai froissé, je te prie de m'en excuser, ce n'était pas mon intention.

Cordialement,
 
Re : [VBA] Macro GetSaveAsFilename Gestion Erreurs

Salut,myDearFriend!

tu m'a pas compris je sais que nuls ne pourra m'interdire d'intervenir mais vous Didier je te considéré comme une Référence en la matière ça me fait un grand plaisir de te croiser et je suis honorer de ta présence je le dit du profond de mon cœur sans aucune hésitation a le répéter encore une fois

Cordialement Cher Maitre
 
- 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

Réponses
3
Affichages
589
Réponses
2
Affichages
884
Retour