IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Macro "enregistrer sous en pdf" + "déplacer en renommant" [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 52
    Points : 13
    Points
    13
    Par défaut Macro "enregistrer sous en pdf" + "déplacer en renommant"
    Bonjour à toute la communauté.

    Tout d'abord je vous présente mes excuses pour ce énième sujet à propos de macro utilisant des fonctions apparemment simplistes pour un puriste.
    De même, je tiens à informer que ce sujet est posté après avoir passé pas mal de temps sur notre "ami" google et même sur ce forum. Malgré tout, sans succès (sinon le sujet n'aurait aucun intérêt).

    Venons justement au vif du sujet avec ses joyeux problèmes.

    En gros, j'aimerai créer une macro qui permettrait à la fois de créer une sauvegarde en pdf du fichier excel (tout le classeur, pas uniquement une feuille) en cours vers un dossier de destination tout en modifiant son nom à partir de cellules.
    A vrai dire ce problème est réglé.

    En plus de la première requête, j'aimerai que le fichier en question (ouvert donc, si on utilise la macro) soit déplacé vers un autre dossier de destination (différent de celui dans lequel se trouve le fichier actuel et différent du dossier de destination de la sauvegarde pdf) avec un nouveau nom qui lui aussi dépendra de cellules. Le fichier d'origine devra aussi être supprimé après le transfert.

    Je ne sais pas si c'est assez clair.

    Voici le code que j'utilise actuellement et qui ne fonctionne pas, bien entendu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Sub PDF()
     
    Dim Fichier As String, Chemin As String, NouveauChemin As String, Fichiert As String
     
    Fichier = "C:\Users\t\Desktop\pdf\" & "_" & [B2].Value & "_" & [B1].Value & "_" & Format(Date, "yyyymmdd")
    Chemin = "C:\Users\t\Desktop\"
    NouveauChemin = "C:\Users\t\Desktop\test01\"
    Fichiert = [B2].Value & "_" & [B1].Value & "_" & Format(Date, "yyyymmdd") & ".xls"
     
    ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Fichier, _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        ignorePrintAreas:=False, OpenAfterPublish:=False
     
    Kill NouveauChemin & Fichiert
    Name Chemin & Fichiert As NouveauChemin & Fichiert
    Kill Chemin & Fichiert
     
    Application.Quit
     
    End Sub
    Merci beaucoup pour vos éventuelles solutions.

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2011
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 212
    Points : 334
    Points
    334
    Par défaut
    Bonjour,

    Tu ne peux pas déplacer/supprimer un fichier qui est en cours d'utilisation et qui contient la macro qui s’exécute...
    Pourquoi ne peux-tu pas enregistrer directement le fichier au bon endroit ?
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 52
    Points : 13
    Points
    13
    Par défaut
    En effet je pourrai ne faire que deux simples sauvegardes mais le problème c'est que j'aimerai que le fichier d'origine soit supprimé une fois les sauvegardes réalisées.

    En gros, dans le dossier A, le fichier d'origine.
    Dans le dossier B, le fichier en pdf
    Dans le dossier C, le fichier en xls

    Et une fois que le fichier d'origine est fermé, il est supprimé du dossier A (tout en étant sauvegardé dans les dossiers B et C).

    Tout ça pour faciliter une tâche répétitive et qui survient (trop) souvent. (et aussi un peu par fainéantise)

    PS: je comprends que le fichier ne puisse être supprimé lorsqu'il est ouvert, c'est pour ça que j'ai fais en sorte qu'il se ferme une fois la macro terminée.

    En tout cas merci pour ta réponse

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2011
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 212
    Points : 334
    Points
    334
    Par défaut
    Que représente le fichier d'origine ?
    Si c'est un fichier EXCEL, tu peux passer par un modèle qui contient les macros et ensuite tu le fermes sans l'enregistrer...
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 52
    Points : 13
    Points
    13
    Par défaut
    le fichier d'origine est bien un fichier excel.
    Le soucis c'est surtout de savoir si je peux faire tout ça en restant sur le fichier à déplacer. En fait les fichiers sont créés par client. Et lorsque toutes les données sont entrées, il faut normalement fermer le fichier en question, le déplacer dans un dossier puis créer une sauvegarde pdf dans un autre dossier.

    Dit comme ça c'est tout bête et ça ne prend que 1 minute mais multiplié par 100, tout en sachant que je n'ai pas spécialement de temps à accorder pour cette action, je pensais créer une macro pour combler tout ça.
    Autre problème qui se pose: d'autres personnes ont accès aux fichiers et doivent réaliser la même action or ces personnes sont moins compétentes que moi en informatique (et mon niveau n'est pas merveilleux comme vous pouvez le constater). Donc ajouter un autre fichier pour lancer les macro risquent de les embêter plus qu'autre chose.

    Après j'ai vu sur internet la fonction name. Pourrait-elle me servir? Sachant que je n'ai pas réussi à l'utiliser convenablement.

    EDIT: sinon je passe par la fonction save et la suppression se fera en manuel, comme tu l'as indiqué.

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2011
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 212
    Points : 334
    Points
    334
    Par défaut
    Ben en fait, je viens de tester la solution ci-dessous et elle fonctionne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test()
     
        Dim OldFile As String
        Dim fs As Scripting.FileSystemObject
        Dim f As Scripting.File
     
        OldFile = ThisWorkbook.Name
        ThisWorkbook.SaveAs Filename:="Toto.xlsm" 'Le nom de ton nouveau fichier...
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set f = fs.GetFile(OldFile)
        f.Delete
     
    End Sub
    Il ne te reste plus qu'à l'adapter pour toi.
    (dans mon cas et pour ce test, je n'ai pas gérer les répertoires des fichiers ni de gestion d'erreur...)

    Remarques : tes fichiers contiennent des macros et doivent donc être dans un format qui les prend en charge.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 52
    Points : 13
    Points
    13
    Par défaut
    Tout d'abord merci pour ton implication GastonLagaffe25 mais j'ai un petit soucis.

    Après avoir copié ton code et l'avoir retranscrit sur le fichier dont il est question, et bien... ça ne fonctionne pas.
    Bien entendu je n'ai rien changé au code pour pouvoir le tester tel quel (mises à part les informations de dossiers destinataires et autres personnalisations, j'imagine que le code devrait fonctionner, non?)

    Le message d'erreur qu'il m'indique est "erreur de compilation: Type défini par l'utilisateur non défini', en surlignant la ligne "Dim fs As Scripting.FileSystemObject".

    Je te présente d'avance mes excuses pour ma noob attitude.

    PS: concernant ta remarque, je travaille sur un tableur excel de 2007, donc il ne devrait pas y avoir de soucis concernant le fonctionnement de macro. Ou alors je suis encore plus à la ramasse que je ne le pensais (à moins que tu ne fasses références à la sauvegarde en pdf. Si oui, il s'avère que c'est un fichier qui justement ne doit plus être modifié et qui doit être lisible par un logiciel particulier)

  8. #8
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, il faudrait fonctionner en Late binding et non Early, sinon il te faudra cocher les références manquantes ( sous VBA menu Outils/Références ). A lire.Te renseigner aussi sur Name ... As ...

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 52
    Points : 13
    Points
    13
    Par défaut
    Merci beaucoup à vous deux, et principalement à toi GastonLagaffe25.

    A partir de ce que vous m'avez fourni comme information, je devrais pouvoir m'en sortir.

  10. #10
    Membre averti
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2011
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 212
    Points : 334
    Points
    334
    Par défaut
    Kiki29 à raison: il faut activer la référence "Microsoft Scripting Runtime" dans VBE comme il l'a indiqué !
    menu Outils/Références
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  11. #11
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, pas forcément : on développe en Early binding et on déploie en Late binding, surtout si on est dans un environnement hétérogène.

  12. #12
    Membre averti
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2011
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 212
    Points : 334
    Points
    334
    Par défaut
    Citation Envoyé par kiki29 Voir le message
    Salut, pas forcément : on développe en Early binding et on déploie en Late binding, surtout si on est dans un environnement hétérogène.
    Et bien merci kiki29 !
    Je ne connaissais pas cette méthode.

    PI: une fiche sur le sujet
    http://mhubiche.developpez.com/vba/f...endre/binding/

    Et ici le code en Late binding (corrige moi kiki29 si ce n'est pas correct !)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub test()
     
        Dim OldFile As String
        Dim fs As Object 'Scripting.FileSystemObject
        Dim f As Object  'Scripting.File
     
        OldFile = ThisWorkbook.Name
        ThisWorkbook.SaveAs Filename:="Toto2.xlsm" 'Le nom de ton nouveau fichier...
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set f = fs.GetFile(OldFile)
        f.Delete
        Set f = Nothing
        Set fs = Nothing
     
    End Sub
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  13. #13
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 52
    Points : 13
    Points
    13
    Par défaut
    Débat intéressant même si ton premier jet, gastonlagaffe, eut fonctionné (une fois et sur une seule machine, mais c'est déjà pas mal).
    Maintenant il me place des "erreurs de type 53" avec "fichier introuvable" en pointant vers la fonction "Set f = fs.GetFile(OldFile)".

    Amusant en tout cas..

    Et je viens de lire l'article proposé sur le Early binding et le Late binding mais je ne vois pas comment l'utiliser à bon escient.

    En tout cas, toujours en plein test et si jamais quelque chose sort de mon petit crâne, je vous le ferai savoir.

    EDIT: j'ai modifié un peu le code de départ pour obtenir ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Sub PDF()
     
    Dim fichier0 As String
    Dim fichier1 As String
    Dim fichier2 As String
     
    fichier0 = ThisWorkbook.Name
    fichier1 = "C:\Users\ths\Desktop\pdf\" & "_" & [B2].Value & "_" & [B1].Value & "_" & Format(Date, "yyyymmdd")
    fichier2 = "C:\Users\ths\Desktop\test01\" & "_" & [B2].Value & "_" & [B1].Value
     
    ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=fichier1, _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        ignorePrintAreas:=False, OpenAfterPublish:=False
     
    Name fichier0 As fichier2
     
    Application.Quit
     
    End Sub
    Le soucis c'est qu'il me place aussi une erreur concernant encore un fichier introuvable (erreur 53) sur la partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Name fichier0 As fichier2
    . Euh... pourquoi? (sinon le fichier pdf est bien créé et là où je veux)

    Autre chose: ce code a fonctionné une fois en remplaçant "fichier0" par le lien et le nom du fichier excel, en fermant le fichier d'origine et le "supprimant" ou plutôt le déplaçant. Mais ça ne m'intéresse qu'à moitié puisque le code doit comprendre le nom du fichier en cours qui varie pour chaque client et non un titre défini, d'où le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichier0 = ThisWorkbook.Name

  14. #14
    Membre averti
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2011
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 212
    Points : 334
    Points
    334
    Par défaut
    Je pense qu'il faut que tu vérifies le nom / l’existence des fichiers que tu veux manipuler...
    Tous les problèmes que tu cites précédemment semble venir de ce même problème.

    Remarque:
    Chez moi, le dernier exemple que je t'ai envoyé fonctionne sans erreur sans utiliser de référence. Il faut juste bien l'adapter.
    Je n'ai pas compris ce que tu trouves amusant...
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  15. #15
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 52
    Points : 13
    Points
    13
    Par défaut
    Ne t'inquiète pas, GastonLagaffe, il n'y a aucune insulte. Par "amusant", il fallait comprendre "intéressant, enrichissant" voire "excitant" dans le sens où tout ceci me permet d'avancer dans mes connaissances de manière plus instructive car intéractive.

    Ceci dit, comme tu le cites, le problème doit provenir du nom des fichiers ou quelque chose du genre. Mais j'ai beau vérifier, l'erreur ne me saute pas aux yeux.
    Je vais continuer sur cette voie en tout cas puisque tu me confirmes que les problèmes doivent venir de ça.

    Merci beaucoup.

  16. #16
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par grogus Voir le message
    ...
    Le soucis c'est qu'il me place aussi une erreur concernant encore un fichier introuvable (erreur 53) sur la partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Name fichier0 As fichier2
    . Euh... pourquoi? (sinon le fichier pdf est bien créé et là où je veux)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichier0 = ThisWorkbook.Name
    ..
    Bonsoir,

    pour ton erreur 53, cela doit-être du au fiat que ton nom de fichier n'est pas complet, il manque le chemin ... et peu-être l'extension

    ensuite comme cela t'as déjà été dis plus haut tu ne peu pas renommer un fichier ouvert .. et ThisWorkBook est bien ouvert puisqu'il s'agit du classeur contenant ton code !

  17. #17
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 52
    Points : 13
    Points
    13
    Par défaut
    Bon, il est temps de jeter l'éponge.

    Comme vous l'avez tous dit/sous entendu, impossible de renommer un fichier déjà ouvert (ou de le déplacer, etc.) donc ça bloque le tout. Un peu comme un serpent qui se mord la queue.

    Dommage. J'étais même parti sur un vieux saveas mais le fichier ouvert reste toujours dans le dossier (logique d'ailleurs). Pareil en essayant de passer par des delete avec du scripting en tout genre mais bien entendu: fonctionne pas mieux.

    En tout cas je tiens sincèrement à tous vous remercier pour votre aide et suivi.


    [EDIT] Pour le coup, comment clore le sujet? Mettre un "résolu" tromperait de futures recherches, non?

  18. #18
    Membre averti
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2011
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 212
    Points : 334
    Points
    334
    Par défaut
    Juste une petite précision:
    Pourquoi n'utilises-tu pas la méthode et le code (testé) que je t'ai donnée ?
    Dans ce cas, tu peux bien enregistres ton fichiers EXCEL où et sous le nom final que tu souhaites (puisque tu déplaces le fichier actif et tu peux donc dans ce cas continuer à exécuter son code), tu génères ton PDF et puis tu supprimes le fichier initial EXCEL (qui n'est plus utilisé donc c'est possible)...

    Effectivement, si tu utilises:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Name fichier0 As fichier2
    Cela ne fonctionne pas car comme on te le dit, tu essayes de renommer fichier0 via le gestionnaire de fichier Windows alors qu'il est toujours ouvert !

    Si tu utilises correctement ces infos, ton problème doit être résolu !
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  19. #19
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 52
    Points : 13
    Points
    13
    Par défaut
    En fait, GastonLagaffe, le problème n'est pas que je ne veux pas utiliser ton code mais que.... honte sur moi... je n'arrive pas à le faire fonctionner. Il y a quelque chose qui me dépasse mais ton code me donne cette erreur: "erreur d'exécution '53' : fichier introuvable" pour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set f = fs.GetFile(OldFile)
    Et cela quel que soit le chemin et nom du fichier d'origine (ou extension) (et la référence "Microsoft Scripting Runtime" est bien cochée).

    Une petite question qui me tiraille: cette erreur peut-elle provenir du fait que je ne suis pas sur un compte windows administrateur? Question sûrement idiote puisque la sauvegarde est tout de même créée (seule la suppression du fichier d'origine ne s'effectue pas).

    Pourtant ce n'est pas faute de me renseigner à propos de tous les paramètres/variables/autres que tu utilises dans ton code, GastonLagaffe.

  20. #20
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Bonjour,

    pour l'erreur 53 c'est le même problème que précédemment voir mon message qui s'applique aussi au code à GastonLagaffe25 :
    Citation Envoyé par bbil
    pour ton erreur 53, cela doit-être du au fiat que ton nom de fichier n'est pas complet, il manque le chemin ... et peu-être l'extension

    ensuite comme cela t'as déjà été dis plus haut tu ne peu pas renommer un fichier ouvert .. et ThisWorkBook est bien ouvert puisqu'il s'agit du classeur contenant ton code !
    ThisWorkBook.name ne te renvois pas le nom complet du fichier ... ( il te faut le répertoire et peu-être l'extension ...)

    etcomme dit précédemment tu ne peu pas effacer un fichier ouvert ..
    et donc le code à GastonLagaffe25:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    OldFile = ThisWorkbook.Name
        ThisWorkbook.SaveAs Filename:="Toto2.xlsm" 'Le nom de ton nouveau fichier...
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set f = fs.GetFile(OldFile)
        f.Delete
    n'est pas meilleur que le tiens ....il est même plus lourd car il utilise inutilement la librairie FileSystemObject pour faire une chose que VB sait faire directement sans bibliothèque supplémentaire..



    Je pense que tu dois te poser des questions sur l'organisation de ton projet : pourquoi dois-tu renommer et déplacer le fichier excel contenant ta macro...?

    ne serait'il pas plus simple séparer tes données de ton code en plaçant ton code dans un autre classeur ( voir macro complémentaire par exemple..) ainsi tu peu faire toutes les actions souhaitées sur ton fichier données...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2007] Améliorer ma macro "enregistrer sous"
    Par Gualino dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/07/2011, 18h50
  2. [OpenOffice][Tableur] [calc] macro "enregistrer sous"
    Par chegerg dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 24/03/2009, 06h00
  3. macro enregistrer sous
    Par ericdev67 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/02/2008, 18h43
  4. Macro "enregistrer sous et mise à jour"
    Par Jonathan Raucy dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/01/2008, 09h37
  5. Macro enregistrer sous
    Par lara008 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/08/2007, 14h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo