[Excel 2007] Pb avec Application.Dialogs(xlDialogSaveAs)

Le
Jerry Khann
Bonjour,

Sous Excel 2007,
j'ai une macro VBA stockée dans PERSONAL.XLSB que je lance
via un bouton dans la barre de lancement rapide:

Sub EnregistrementRapide()
NomDuFichierFinal = "PourVoir.xls"
NomAProposer = "D:A_Sauver" & NomDuFichierFinal
etat = Application.Dialogs(xlDialogSaveAs).Show(NomAProposer, xlExcel8)
If etat = True Then
NomCompletDuFichierApres = ActiveWorkbook.FullName
MsgBox ("La sauvegarde au format Excel 2003 de " & (Chr(13) &
Chr(10)) & (Chr(13) & Chr(10)) _
& NomCompletDuFichierApres & (Chr(13) & Chr(10)) & (Chr(13) &
Chr(10)) _
& "s'est bien déroulée.")
End If
End Sub

Si je lance cette macro depuis un nouveau fichier,
j'ai bien la boîte de dialogue préremplie avec le bon répertoire,
le bon nom de fichier et le bon format (Excel 2003).

Mais si je lance cette macro depuis un fichier que j'ai ouvert
en double-cliquant dessus dans un répertoire quelconque,
la boîte de dialogue contient le bon nom de fichier et le bon format,
mais avec le répertoire d'origine du fichier sur lequel j'ai double-cliqué!

Pourriez-vous me guider pour résoudre ce problème?

Merci d'avance

--
Jerry Khann

Adresse invalide: retirer le bouchon _O_ et .invalid
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
FFO
Le #18936121
salut à toi

Essaies de rajouter en début de code ces 2 lignes :

ChDrive ("D")
ChDir ("D:A_Sauver")

Peut être du mieux
Dis moi !!!!
Jerry Khann
Le #18936351
Bonsoir

et merci de ta réponse rapide.

"FFO"
salut à toi

Essaies de rajouter en début de code ces 2 lignes :

ChDrive ("D")
ChDir ("D:A_Sauver")



Malheureusement cela ne change rien.

En fait, tout se passe comme si le "ActiveWorkbook.Path"
était prioritaire sur toutes les autres instructions.

Il faudrait pouvoir changer ce "ActiveWorkbook.Path"
avant d'ouvrir la dialogbox.

A suivre ...

--
Jerry Khann

Adresse invalide: retirer le bouchon _O_ et .invalid
FFO
Le #18940251
Rebonjour à toi

Je te propose ton code modifié ainsi :

NomDuFichierFinal = "PourVoir.xls"
etat = Application.GetSaveAsFilename("D:A_Sauver" & NomDuFichierFinal)
If etat <> False Then
ActiveWorkbook.SaveAs Filename:=etat
NomCompletDuFichierApres = ActiveWorkbook.FullName
MsgBox ("La sauvegarde au format Excel 2003 de " & (Chr(13) & Chr(10)) &
(Chr(13) & Chr(10)) _
& NomCompletDuFichierApres & (Chr(13) & Chr(10)) & (Chr(13) & Chr(10)) _
& "s'est bien déroulée.")
End If

Je l'ai testé il fonctionne

Fais des essais et dis moi !!!!!
Jerry Khann
Le #18941711
Bonjour,

"FFO"
Rebonjour à toi
Je te propose ton code modifié ainsi :



[snip]

Je l'ai testé il fonctionne
Fais des essais et dis moi !!!!!



Effectivement, cela fonctionne ... presque!
Il faut traiter l'erreur en cas de réponse "Non" ou "Annuler"
en cas de fichier existant déjà avec le même nom.
Il doit être modifié ainsi:

NomDuFichierFinal = "PourVoir.xls"

NomDuFichierApres = Application.GetSaveAsFilename( _
InitialFileName:=NomAProposer, _
Title:="Enregistrer au format Excel 2003")
If VarType(NomDuFichierApres) = vbBoolean Then
MsgBox "Annulé"
Else
On Error GoTo UneErreur
ActiveWorkbook.SaveAs Filename:=NomCompletDuFichierApres _
, FileFormat:=xlExcel8
MsgBox ("La sauvegarde au format Excel 2003 de " _
& (Chr(13) & Chr(10)) & (Chr(13) & Chr(10)) _
& NomDuFichierApres _
& (Chr(13) & Chr(10)) & (Chr(13) & Chr(10)) _
& "s'est bien déroulée.")
End If
UneErreur:
If Err.Number = 1004 Then
MsgBox "Erreur : " & Err.Number & vbLf & Err.Description
End If

Je voulais utiliser "Application.Dialogs(xlDialogSaveAs)"
pour avoir quasi le même code sous Excel et sous Word.

Mais apparement c'est un BUG connu.

Merci,
A+

--
Jerry Khann

Adresse invalide: retirer le bouchon _O_ et .invalid
Publicité
Poster une réponse
Anonyme