[VBA] Macro GetSaveAsFilename Gestion Erreurs

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:

myDearFriend!

XLDnaute Barbatruc
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,
 

Allergique

XLDnaute Junior
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+
 

BERRACHED said

XLDnaute Accro
Re : [VBA] Macro GetSaveAsFilename Gestion Erreurs

Salut,Allérgique,Mdf

Cher Maitre Didier tu m'excuse si j'ai un peux anticiper mais il m'a sembler que c'étais le même sujet

toujours un plaisirs de te croiser cher Didier
 

myDearFriend!

XLDnaute Barbatruc
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.
 

BERRACHED said

XLDnaute Accro
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
 

Allergique

XLDnaute Junior
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?
 

myDearFriend!

XLDnaute Barbatruc
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:

myDearFriend!

XLDnaute Barbatruc
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,
 

BERRACHED said

XLDnaute Accro
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
 

Allergique

XLDnaute Junior
Re : [VBA] Macro GetSaveAsFilename Gestion Erreurs

Salut,

C'est plus clair pour moi, merci pour vos explications et pour votre aide

a+
 
Haut Bas