[Excel 2007] Pb avec Application.Dialogs(xlDialogSaveAs)
4 réponses
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
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
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
Bonjour,
"FFO" <FFO@discussions.microsoft.com> a écrit dans le message de news:
48A392B0-8E7D-445C-A60F-6244925459F8@microsoft.com...
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
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