Erreur d’exécution '1004' - Problème d'extension
Bonjour à tous,
Je dois d'abord préciser que je suis débutant en VB. Je fais mes macros avec la fonction d'enregistrement automatique et en récupérant des morceaux de code par-ci, par-là.
Je travail sur un formulaire à faire remplir par des sous-traitants. Une fois le formulaire complété, la personne doit cliquer sur un bouton "Valider permis". Si certaines conditions ne sont pas remplies (ex: cellule devant être obligatoirement renseignées), un message s'affiche pour qu'il puisse finir de compléter le formulaire (cette partie fonctionne). Si toutes les conditions sont remplies, ça ouvre la fenêtre "save as" en préparant le nom de fichier et son extension. L'utilisateur choisi le dossier de sauvegarde et le tour doit être joué... Malheureusement, au moment de cliquer sur enregistrer, j'ai une "Erreur d'exécution '1004': Impossible d'utiliser cette extension avec le type de fichier sélectionné. Modifiez l'extension du fichier dans la zone de texte Nom du fichier ou sélectionnez un autre type de fichier dans la zone Type de fichier."
L'extension de mon formulaire est .xlsm et, suivant le code ci-dessous, je demande à enregistrer en .xlsm également.
Sub Validation()
Application.DisplayAlerts = False
If ThisWorkbook.Sheets("Feuil1").Range("CO10") <> "2" Then 'si elle est différente de 2 alors
'message à l'utilisateur
UserForm3.Show
'sortie de la procédure
ElseIf ThisWorkbook.Sheets("Feuil1").Range("CO10") = "2" Then
Application.DisplayAlerts = False
Dim Fichier As String
Dim f As String
Fichier = "PTW - " & ActiveSheet.Range("g12") & " - " & ActiveSheet.Range("G9") & " - " & ActiveSheet.Range("C24") 'Défini nom pour enregistrement
ThisWorkbook.Sheets("feuil1").Copy
f = Application.GetSaveAsFilename(Fichier, filefilter:="Microsoft Excel (*.xlsm),*.xlsm*") 'Nom de fichier préparé
ActiveWorkbook.SaveAs Filename:=f
End If
End Sub
Je ne comprends pas d'où vient le problème.
Je joins une partie du fichier concerné mais je ne sais pas si les macros vont fonctionner : en essayant sur d'autre ordinateur, j'ai eu des messages d'erreur...
Sauriez-vous m'aider à résoudre ce problème?
D'avance merci pour votre aide.
Bien cordialement.
Seb
Bonjour SebTriton et
Une petite présentation ICI serait la bienvenue
Si vous ne l'avez pas encore fait, je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum.
Concernant votre problème, je pense que cela vient de la définition du nom du fichier qui n'est pas complète,
il manque l'extension
Fichier = "PTW - " & ActiveSheet.Range("g12") & " - " & ActiveSheet.Range("G9") & " - " & ActiveSheet.Range("C24") & ".xlsm"
Merci de votre participation
Cordialement
Bonjour BrunoM45 et merci pour votre réponse rapide!
J'ai essayer de rajouter l'extension dans la définition et malheureusement, il me renvoie cette erreur 1004.
En faisant le débogage, il me surligne "ActiveWorkbook.SaveAs Filename :=f"
Je ne sais pas si le problème peut venir de là mais entre le moment où je clique sur le bouton "Valider permis" et l'ouverture de la fenêtre "Enregistrer sous", une copie du classeur apparaît avec comme nom "Classeur#" (avec #, le n° qui s'incrémente à chaque tentative). Si je clique sur "Annuler" dans la fenêtre "enregistrer sous", il me nomme le fichier "Faux.xlsx". Je ne comprends pas de où ce ".xlsx" vient.
Bien cordialement.
Bonjour,
Après avoir fait un test, il faut impérativement définir le format d'enregistrement
Sub Validation()
Dim Fichier As String, sPathFic As String
Application.DisplayAlerts = False
If ThisWorkbook.Sheets("Feuil1").Range("CO10") <> "2" Then 'si elle est différente de 2 alors
'message à l'utilisateur
UserForm3.Show
'sortie de la procédure
ElseIf ThisWorkbook.Sheets("Feuil1").Range("CO10") = "2" Then
Application.DisplayAlerts = False
Fichier = "PTW - " & ActiveSheet.Range("g12") & " - " & ActiveSheet.Range("G9") & " - " & ActiveSheet.Range("C24") 'Défini nom pour enregistrement
ThisWorkbook.Sheets("feuil1").Copy
sPathFic = Application.GetSaveAsFilename(Fichier, filefilter:="Microsoft Excel (*.xlsm),*.xlsm*") 'Nom de fichier préparé
ActiveWorkbook.SaveAs Filename:=sPathFic, FileFormat:=xlOpenXMLWorkbookMacroEnabled
End If
End Sub
A+
Bonjour,
C'est parfait, ça fonctionne.
Il m'a quand même sorti une erreur 1004 différente qui s'est résolue en remplaçant la ligne:
ActiveWorkbook.SaveAs Filename:=sPathFic, FileFormat:=xlOpenXMLWorkbookMacroEnabled
par
Call ActiveWorkbook.SaveAs(Filename:=sPathFic, FileFormat:=xlOpenXMLWorkbookMacroEnabled)
trouvé ailleurs sur le forum.
Je ne sais pas quelle différence cela fait mais ça fonctionne.
En tout cas merci beaucoup pour votre aide. Ça faisait un moment que je me cassais les dents sur ce problème.
Bonne continuation!