Problème d'enregistrement

Bonjour tout le monde.

voici le code vba d'enregistrement qui me pose problème ("colonne est défini comme un worksheet plus haut") :

Dim Path, File As String

Path = "G:\TEAM COMPTA\factures extérieures\CDS PASTEUR\"
File = "Facture CDS PASTEUR - " & Format(Now, "Mmmm yy") & ".xlsm"

ThisWorkbook.SaveCopyAs Filename:=Path & File

colonne.Activate
ActiveWorkbook.Close Savechanges:=False
Application.Quit

Le souci est le suivant : le ficher que j'enregistre est présent en lieu et place voulus, au format excel, mais je ne peux ouvrir ledit fichier, le texte suivant s'affichant :

sub

Pourtant, après avoir vérifier l'exécution de chaque partie du Sub pas à pas, tout se passait comme il fallait. J'ai voulu faire en sorte que suite à l'application de ce Sub, on enregistre une copie car je veux garder le fichier initial qui sert d'appui au Sub intact (comme un patron, somme : on l'ouvre, on lance la procédure, on le referme sans le sauvegarder lui)

Pouve-zvous m'aider à comprendre où se situe le souci svp ?

D'avance, je vous en remercie

Bonjour,

Et si tu enregistres en précisant le format?

ThisWorkbook.SaveCopyAs Filename:=Path & File, FileFormat:=xlOpenXMLWorkbookMacroEnabled

Peut-être?

Bonjour et merci de votre prompt retour. Alors cCela ne change absolument rien, le même message d'alerte s'ouvrant. Une autre idée ? Peut-être que pour "Excel 2010" la syntaxe diffère ?

ps : pour parfaire mon apprentissage en visual basic, en quoi il aurait pu être nécessaire de préciser une seconde fois le format, vu qu'il est déjà spécifié dans le string "File" ?

RE-,

La précision est nécessaire, cela évite d'enregistrer un fichier xls en xlsx sans conversion, par exemple. (du moins, je le crois.... )

Et si tu enlèves le ".xlsm" à la fin de la définition de File?

File = "Facture CDS PASTEUR - " & Format(Now, "Mmmm yy")
ThisWorkbook.SaveCopyAs Filename:=Path & File, FileFormat:=xlOpenXMLWorkbookMacroEnabled

Peut-être?

re!

Avec ou sans, cela ne change rien, que je laisse ou non l'extension, et ça m'affiche ceci en plus:

capture

Bonjour

Tu m'as mis le doute (j'utilise cette commande pour sauvegarder mes comptes...)

J'ai fait un essai en partant d'un fichier text.xlsx et j'avais le même message que toi...

j'ai enregistré ce fichier en xlsm et oh! miracle plus d'erreur...

A+ François

Salut fanfan.

Mon fichier initial, servant à lancer le sub donc, est bien enregistré au format".xlsm" de base, donc je ne vois pas... Le nouveau fichier que tu créé donc dans ton exemple, est-il possible de l'ouvrir après création ?

capture 2

VBA ne connait pas l'argument "fileformat" ?

Bonjour à tous,

VBA connait FileFormat, mais pas pour la procédure SaveAsCopy d'un Workbook, en revanche SaveAs connait:

https://docs.microsoft.com/fr-fr/office/vba/api/excel.workbook.saveas

Je pense qu'en précisant FileName et FileFormat cette méthode devrait marcher. Comme le nom du fichier sera différent de l'actuel, ça devrait en effet créer une copie. A tester donc.

ça donnerait:

Dim chemin as String, nomFichier As String

chemin = "G:\TEAM COMPTA\factures extérieures\CDS PASTEUR\"
nomFichier = "Facture CDS PASTEUR - " & Format(Now, "Mmmm yy")

ThisWorkbook.SaveAs FileName:=chemin & nomFichier, FileFormat:=xlOpenXMLWorkbookMacroEnabled

colonne.Activate
ActiveWorkbook.Close Savechanges:=False 'Pas sûr que cette ligne de code soit encore utile
Application.Quit

Au passage j'ai rajouté "as String" pour Path, car sans ça c'était de type Variant, rien qui n'empêche la macro de fonctionner, juste une petite correction pour la rigueur.

J'ai aussi renommé les variables au cas où, parce que Path et File ça peut vouloir dire autre chose pour VBA, je préfère éviter les ambigüités.

Bonjour

Oui le nouveau fichier s'ouvre très bien.

On va faire un essai enregistre ton fichier initial au format xlsb (binaire)

et remplace ta macro par celle ci

Sub enreg()
Dim chemin, fichier As String
chemin = ActiveWorkbook.Path & "\"
fichier = "Facture CDS PASTEUR - " & Format(Now, "Mmmm yy") & ".xlsb"
ThisWorkbook.SaveCopyAs Filename:=chemin & fichier
End Sub

A+ François

Ah! je comprends, oui. En effet, le seul paramètre que "reconnait" workbook.SaveCopyAs est "FileName". De plus, le fichier pattern reste effectivement en tout point identique à son ouverture, auquel cas il aurait fallu créer une copie de celui-ci avant modification je suppose.

Par contre, "Path" avait bien été défini comme un objet string, en même temps que "File". Vu que path et file partagent le même type, je pensais pouvoir les déclarer ainsi, erreur du coup ?

Dim Path, File As String

Sinon, j'ai donc rectifié selon tes indications indiqué, et voici ce qui se passe quand j'ouvre le fichier nouvellement créé : que j'active ou non les macros, le nouveau fichier est vide. Même chose si je l'enregistre en tant que".xlsx", fileformat:=xlOpenXMLWorkbook (ou 51).

capture 3 capture 3bis

On a progressé, mais vers un fichier vide???

Une autre idée du coup ? Au pire, je pourrais faire créer un nouveau fichier vierge en fin de Sub où je le souhaite, et copier coller le feuillet voulu dedans, fermer le pattern sans enregistrement, et enregistrer les modifs du nouveau fichier...

N'utilise pas des variables qui ont le nom de commande excel ou alors var_path, var_file

A+ François

ça m'ouvre l'application Excel, mais pas le fichier en fait.

Ah,

c'est peut-être les paramètres de sécurité de ton entreprise qui posent problème? Pourquoi "Archive" est coché dans les propriétés du fichier que tu montres?

De mon côté ça marche bien pourtant, un nouveau fichier est enregistré à partir du premier et j'arrive à l'ouvrir

Dans VBA, faire :

Dim a, b, c, d as Integer

Ne veut pas dire, a, b, c et d sont des Integer, ça va plutôt lire:

a est Variant, b est Variant, c est Variant, d est Integer:

image

Les variables ont été modifiées comme proposé. Avec l'extention ".xslb", cela se fait très bien. Mais le format changeant, si plus tard je dois travailler dessus, cela posera-t-il problème ?

Non. l'avantage des fichiers binaire c'est qu'ils sont moins gros. Sinon les fonctions sont les même

Mais est ce que ça marche?

A+ François

Les variables ont été modifiées comme proposé. Avec l'extention ".xslb", cela se fait très bien. Mais le format changeant, si plus tard je dois travailler dessus, cela posera-t-il problème ?

Et est-ce qu'en modifiant les variables, mais avec une autre extension ça fonctionne?

Je travaille sur un réseau partagé, le but étant d'automatiser bon nombre d'activités par mes collègues par le biais de procédures Excel. Ainsi, à tous les postes informatiques identifiés et autorisés, ces tâches pourront être accomplies. Alors j'ai travaillé et enregistré sur mon bureau, pour faire le test et en changeant les chemins d'accès, sans résultat.

capture 1

Le fait de changer les variables n'est pas impactant, le même problème persévérant : le fichier ne peut être ouvert...

Rechercher des sujets similaires à "probleme enregistrement"