Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

4 réponses
Avatar
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

4 réponses

Avatar
FFO
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 !!!!
Avatar
Jerry Khann
Bonsoir

et merci de ta réponse rapide.

"FFO" a écrit dans le message de news:

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
Avatar
FFO
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 !!!!!
Avatar
Jerry Khann
Bonjour,

"FFO" a écrit dans le message de news:

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