Problème avec SaveCopyAs

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

white-spirit

XLDnaute Occasionnel
Bonjour le Forum,

je bloque depuis qq jours sur le problème suivant:

- dans le déroulement d'une macro, je crée une copie d'une feuille pour l'enregistrer sous forme d'un classeur, en l'état de l'instant, avec la dénomination correspondante.

voici le code: ( les variables "durée" & "épreuve" sont renseignées préalablement..)

Dim nom_fichier As String
nom_fichier = "PROVISOIRE" & "_" & durée & "_" & épreuve

'définir dossier
Dim dossier As String
Range("B1").Select
dossier = ActiveCell.Text

'créer dossier s'il n'existe pas

On Error Resume Next
ChDir "ActiveWorkbook.Path & " \ " dossier"
If Err <> 0 Then
MkDir ActiveWorkbook.Path & "\" & dossier
End If

'définir chemin
Dim chemin As String
chemin = ActiveWorkbook.Path & "\" & dossier & "\" & nom_fichier

'créer la copie!
ActiveSheet.Copy
ActiveWorkbook.SaveCopyAs chemin


et c'est ici que cela se gâte, car le dossier est créé (ou existait déja), mais point de classeur Excel dedans ....!!

Je comprends d'autant moins que ceci fonctionnait parfaitement depuis 2 ans, j'ai bien sur fait d'autres évolutions dans mon appli, mais rien à ce niveau ...

J'ai cru que l'install récente de l'Add-In Open Office ( pour ouvrir des données que je reçois) était en cause --> désinstallation --> ça ne change rien...

Autre piste : j'ai aussi installé récemment DisplayFusion, gestionnaire de fenêtres, serait-ce la cause ?
Je vais essayer en le désinstallant... cependant si qq'un connait des causes de dysfonctionnement de SaveCopyAs, je suis preneur d'avis ....

Merci d'avance.

Cdlt

WS
 
Re : Problème avec SaveCopyAs

Bonjour tt le monde,

pour la remarque de Job75 au sujet du format de la durée, ce sont effectivement des hh:mm:sec, mais la transformation est déja effectuée en amont, la chaine se présente sous 02h33mn41sec, donc pas de pb de ce côté.

j'ai testé la config de Camarchepas (#14), et toujours pas d'enregistrement SaveCopyAs, et donc le même message que celui évoqué en #12.
Dans ce message il est évoqué de vérifier l'existence du dossier : c'est bon , vérifier de n'être en lecture seule : tjrs Ok, et de n'avoir certains caractères : ici ça se gate, parce qu'il y des trucs bizarres (voir message en #12). Job75, qu'en penses-tu ??

J'ai aussi remarqué une chose: si je configure le chemin d'enregistrement pour être dans le même répertoire que l'appli qui héberge la macro, l'enregistrement se fait, sinon ça marche pas... pourtant mon but était de créer (lors du test/création du "dossier") un répertoire ("dossier") pour recevoir les SaveCopyAs de ActiveSheet...

Je suis d'autant plus perplexe, que tout ça fonctionnait bien avant .. coup de bol ?

Cdlt

@WS
 
Re : Problème avec SaveCopyAs

Bonjour à tous

white-spirit
Questions
1) Quel est ton OS?
2) Est-ce que tu essaies de créer un dossier sur le lecteur C:
3) Si tu ajoutes un MsgBox pour connaitre la valeur de tes variables, elles affichent quoi?

Code:
'définir dossier
 dossier = "tonneau" 'Range("B1").Text
MsgBox dossier
'définir chemin
 Chemin = ActiveWorkbook.Path & "\" & dossier
MsgBox chemin
'définir chemin complet
 CheminEntier = Chemin & "\" & nom_fichier
MsgBox CheminEntier
 
Re : Problème avec SaveCopyAs

Bjr Staple1600,

Je suis soi sous XP Pro sp2 ou W8 (à l'instant t) et j'utilise Excel XP sur les 2.

Le lecteur que j'utilise : sur une clé USB 16Go

Pour les MsgBox, j'avais déja controlé et j'avais bien les syntaxes de chemin de sauvegarde correctes...

J'avoue ne pas comprendre ce qu'il se passe, mais je vais m'adapter pour rester dans le mm directory (comme constaté + haut).

Ne serait-ce pas aussi pour une taille de fichier ? Mon Workbook de départ (avec la macro) faite 3,5 Mo et la feuille que j'enregistre fait 956 Ko...

Affaire à suivre

Cdlt

@WS
 
Re : Problème avec SaveCopyAs

Bonjour tt le monde,

désolé pour la suite un peu tardive (W-E; belle-maman, tec....)

Pour répondre à la suggestion de Job75, voici le résultat du test .
j'ai utilisé le code suivantSheets("SaisiePassages").Range("K192").FormulaR1C1 = chemin

résultat de K192 : "G:\Chronométrage XC\Kerlabo 2014\2 H de VTT 2014 de Kerlabo \PROVISOIRE_01h50mn00sec_2 H de VTT 2014 de Kerlabo .xls"

si je poursuit la macro en laissant le SaveCopyAs avec cette syntaxe, tjrs pas d'enregistrement ...

j'ai aussi vérifié si par hasard la feuille n'est pas protégée, ce n'est pas le cas...

pour revenir à ma remarque du message #16, si je retire le niveau "dossier", cad si je SaveCopyAs dans le même répertoire que celui de l'appli (macro en cours), ça marche ! Bizarre qd même !

Vos avis et commentaires sont les bienvenus...

Cordialement.

@WS

EDIT: j'ai oublié de préciser ces détails :
ActiveWorkbook.Path : G:\Chronométrage XC\Kerlabo 2014
dossier : 2 H de VTT 2014 de Kerlabo
nom_fichier: PROVISOIRE_01h50mn00sec_2 H de VTT 2014 de Kerlabo .xls

Merci.
 
Dernière édition:
Re : Problème avec SaveCopyAs

Bonjour à tous,

Je ne vois rien d'anormal dans la chaîne 'chemin'.

Tout se passe comme si le répertoire 'dossier' n'était pas créé.

Essayez quand même ce code plus classique :

Code:
Dim nom_fichier As String
nom_fichier = "PROVISOIRE" & "_" & durée & "_" & épreuve

'définir dossier
Dim dossier As String
dossier = Range("B1").Text

'créer dossier s'il n'existe pas
On Error Resume Next
MkDir ThisWorkbook.Path & "\" & dossier
On Error GoTo 0
End If

'définir chemin
Dim chemin As String
chemin = ThisWorkbook.Path & "\" & dossier & "\" & nom_fichier

'créer la copie!
ActiveSheet.Copy
ActiveWorkbook.SaveCopyAs chemin
Attention, la cellule B1 de la feuille active ne doit pas être vide.

A+
 
Re : Problème avec SaveCopyAs

RESOLU !!!!

J'ai fini par trouver ..... c'était vicelard!

J'ai essayé de prendre une autre référence de nom de dossier autre que B1, et ça fonctionnait !

Analyse: mon contenu de B1 ( qui est une liaison d'une autre feuille) était constitué de texte + 1 espace à la fin ! C'est ça qui mettait le désordre ( j'ai remis un espace pour voir, c'est bien ça !)

Donc je vais devoir mettre qq chose pour m'assurer de controler le contenu de la chaine "dossier".

Ouf!! la raison est sauve, je devenais fou avec cette erreur ..

Cordialement MERCI à tous ceux qui se sont penchés sur mes interrogations.

Bien à vous tous

@WS
 
Re : Problème avec SaveCopyAs

Re,

Bien vu, moi aussi je découvre.

Quand on crée un dossier, les espaces au début et à la fin du nom qu'on lui donne sont supprimés...

Idem pour les noms des fichiers...

Il suffit d'essayer manuellement 🙄

A+
 
Re : Problème avec SaveCopyAs

Re Job75,

je n'ai pas compris le sens de ta réponse ...

tu dis "Quand on crée un dossier, les espaces au début et à la fin du nom qu'on lui donne sont supprimés...

Idem pour les noms des fichiers..
."

Oui c'est vrai selon moi aussi, mais ici ne serait-ce pas parce que c'est la macro qui crée le dossier ??...

A noter que cet (ces) espace(s) indésirable(s) apparaissai(en)t aussi dans la variable "épreuve", et donc dans la chaine "nom_fichier", mais du fait du rajout de ".xls" derrière, les espaces ne gênent pas (je viens de l'essayer).

Donc peut-on déduire que si Windows retire les espaces de début et fin des noms de dossiers & fichiers, ce n'est pas le cas de vba...

Qu'en penses-tu ??

Cordialement

@WS
 
Re : Problème avec SaveCopyAs

Bonjour ,

Sur certain serveurs , les espaces sont interdit dans la construction des noms de dossier, j'ai pris l'habitude de remplacer systématiquement les espaces par un _ .

De cette leçon qui dira donc qu'un espace ce n'est rien .....
 
Re : Problème avec SaveCopyAs

Re,

OK, je comprends mieux .. merci de l'éclairage.

J'ai inséré un traitement de la chaine "dossier" avec Trim.String, reconduit les espaces indésirables, et ça marche parfaitement !

Je suis obligé de faire cela parce que ce n'est pas tjrs moi qui utilise l'appli ...

A bientôt,

@WS
 
Re : Problème avec SaveCopyAs

Bonsoir, réponse à Staple1600,

excuses-moi, je n'avais pas prêté attention à ton message de 16h06...

j'ai déja répondu samedi au 2 premières questions: Windows XP Pro sp2 et lecteur : G, clé USB 16Go

pour les contenus de MsgBox:

les syntaxes étaient bonnes pour "dossier", "Chemin" & "CheminEntier", à ceci près que je ne distinguait pas l'espace qui était contenu à la fin du contenu "dossier", donc Windows créait le dossier "sans espace à la fin", mais la variable conservait l'espace et créait un chemin "inconnu" . Je l'ai découvert en essayant une autre référence pour le contenu de "dossier", et Job75 m'a expliqué le
mécanisme. Tant mieux que ça ait buggé, parce qu'au moins la logique est sauve !
J'ai rajouté l'utilisation de "Trim.String" pour nettoyer les données.

Merci encore à tt le monde pour m'avoir aidé.

Cdlt WS
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour