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 :

Saveas dans nouveau classeur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 39
    Par défaut Saveas dans nouveau classeur
    Bonjour à vous tous,

    Je voudrais pouvoir sauvegarder une copie d'une feuille d'un classeur dans un nouveau classeur et le nommer tres precisement (n°, date et heure).

    Voici mon code :

    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
    21
    22
    23
    24
    25
    Workbooks("Fiche d'intervention.xls").Worksheets("Fiche d'intervention").Copy
    
    Dim Fichier_sauvegarde As String
    Dim Chemin As String
    Dim name As String
    
    Range("C11").Value = Format(Range("B11"), "yy")
    
    If [C11] < 10 Then
    Chemin = "G:\Common\ASTREINTES\Sauvegardes\200" & [C11]
    On Error Resume Next
    MkDir Chemin
    On Error GoTo 0 ' zero
    Chemin = Chemin & "\"
    Else: Chemin = "G:\Common\ASTREINTES\Sauvegardes\20" & [C11]
    On Error Resume Next
    MkDir Chemin
    On Error GoTo 0 ' zero
    Chemin = Chemin & "\"
    End If
    
    Fichier_sauvegarde = "Fiche d'intervention n° " & [B5] & " du " & Format(Range("B11"), "dd.mm.yy") & " à " & Format(Range("B12"), "hh:mm") & ".xls"
    
    ActiveWorkbook.SaveAs Chemin & Fichier_sauvegarde
    ActiveWorkbook.Close
    Les deux lignes en rouge m'affichent des erreurs. Le dossier est crée mais le classeur ne s'enregistre pas.

    Je ne programme pas depuis longtemps et j'ai du mal à savoir d'où viennent les erreurs !

    Merci d'avance pour toute l'aide que vous pourrez m'apporter!

    Bonne journee!

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Mets un point d'arrêt sur ta ligne et regarde ce qu'il y a dans Fichier_sauvegarde, ça te donnera sans doute une indication...
    mais je remplacerais tout de même les points par des tirets dans la date dd.mm.yy -> dd-mm-yy (bien que je ne pense pas que cela ait une incidence)

    A quoi sert ta ligne
    Workbooks("Fiche d'intervention.xls").Worksheets("Fiche d'intervention").Copy
    (sans incidence, juste parce qu'elle est là )

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    A ma connaissance vous ne pouvez pas utiliser l'instruction MkDir pour créer en une seule fois répertoire et sous-répertoires.

    Il faut créer le 1er, puis le 2éme etc... (comme du temps du bon vieux DOS , dont MkDir est justement une de ses instructions).

    Par contre vous pourrez utiliser la variable "Chemin" complète pour l'enregistrement du fichier.

    MkDir, instruction


    Crée un répertoire ou un dossier.
    Syntaxe
    MkDir path
    L'argument path est une expression de chaîne définissant le répertoire ou dossier à créer. L'argument path peut préciser le lecteur. Si aucun lecteur n'est indiqué, MkDir crée le répertoire ou le dossier sur le lecteur courant.

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Hello Jacques-Jean,
    J'ai pensé que le répertoire "Chemin = "G:\Common\ASTREINTES\Sauvegardes\" existait déjà, sinon, tu as raison.
    lilou86 nous dira ça
    Bonne journée

  5. #5
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 39
    Par défaut
    Pour ouskel'n'or
    Ma ligne :
    Workbooks("Fiche d'intervention.xls").Worksheets("Fiche d'intervention").Copy
    sert à copier une feuille spécifique dans mon classeur (j'ai d'autres feuilles dans le classeur mais je ne veux récupérer et enregistrer que celle là).

    Le cran d'arrêt m'indique qu'il y a "Path/File access error".

    Et effectivement le dossier sauvegardes existe bien !

    Pour jacques_jean
    Je ne comprends pas trop ce que tu me dis (pas beaucoup d'expérience en programmation) et donc je ne vois pas ce que je dois changer! Peux-tu me donner des informations complementaires stp ?

    Merci d'avance

  6. #6
    Invité
    Invité(e)
    Par défaut
    Re,

    Voici un exemple de code. Ici j'ai décomposé ligne par ligne mais on peut bien sûr le faire avec une boucle et l'utilisation de variables ou l'utilisation par exemple de la fonction "Split" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     If [C11] < 10 Then
    chemin = "G:\Common\"
    MkDir chemin
    chemin = chemin & "ASTREINTES\"
    MkDir chemin
    chemin = chemin & "Sauvegardes\"
    MkDir chemin
    chemin = chemin & "200" & [C11] & "\"
    MkDir chemin
    End If

  7. #7
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 39
    Par défaut
    Le problème subsiste.

    Voilà ce qui se passe : lors de la création du dossier (1ère sauvegarde), le fichier n’est pas enregistré (copie créée mais non enregistrée) et qu'une fois que le dossier a été crée (sauvegarde suivante) j'ai une erreur avec le MkDir (1ère ligne où il apparait).

    Si tu as d'autres solutions à proposer n'hésite pas.

    Merci pour ton aide.

    Bonne journée.

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Citation Envoyé par lilou86
    Et effectivement le dossier sauvegardes existe bien !
    Donc, tant que le dossier ""G:\Common\ASTREINTES\Sauvegardes\" ne contient ni le répertoire "\20 & [C11]" ni "\200 & [C11]", ton code est juste pour la création de ces deux répertoires.
    S'ils existent, tu as fait ce qu'il fallait. Par contre, tu peux déplacer ton on error resume next
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    On Error Resume Next
    If [C11] < 10 Then
            Chemin = "G:\Common\ASTREINTES\Sauvegardes\200" & [C11]
            MkDir Chemin
            Chemin = Chemin & "\"
        Else
            Chemin = "G:\Common\ASTREINTES\Sauvegardes\20" & [C11]
            MkDir Chemin
            Chemin = Chemin & "\"
    End If
    On Error GoTo 0
    Citation Envoyé par lilou
    Ma ligne :
    Workbooks("Fiche d'intervention.xls").Worksheets("Fiche d'intervention").Copy
    sert à copier une feuille spécifique dans mon classeur (j'ai d'autres feuilles dans le classeur mais je ne veux récupérer et enregistrer que celle là).
    En faisant ça, tu ne copies rien. Où veux-tu coller cette feuille ? Dans un nouveau classeur ? Auquel cas il faut le créer
    puis copier la feuille et indiquer où tu veux la coller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Workbooks.Add
    Workbooks("Fiche d'intervention.xls").Worksheets("Fiche d'intervention").Copy _
    After:=ActiveWorkbook.Sheets(1)
    Ensuite, si c'est le classeur contenant la copie que tu veux enregistrer, alors tu peux mettre ton code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Fichier_sauvegarde = "Fiche d'intervention n° " & [B5] & " du " & Format(Range("B11"), "dd.mm.yy") & " à " & Format(Range("B12"), "hh:mm") & ".xls"
     
    ActiveWorkbook.SaveAs Chemin & Fichier_sauvegarde
    ActiveWorkbook.Close
    Mais je mettrais un point d'arrêt sur la seconde ligne afin de vérifier si Fichier_sauvegarde contient bien ce que tu attends
    A+

  9. #9
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 39
    Par défaut
    Excusez moi pour l'attente mais il fallait que je teste plusieurs solutions (je voulais pas vous laisser travaillés tous seuls ! lol) ! Et hélas j'ai toujours un petit soucis :

    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
    21
    22
    23
    Workbooks("Fiche d'intervention.xls").Worksheets("Fiche d'intervention").Activate
    
    Dim Fichier_sauvegarde As String
    Dim Chemin As String
    
    
    Range("C11").Value = Format(Range("B11"), "yy")
    Fichier_sauvegarde = "Fiche d'intervention n° " & [B5] & " du " & Format(Range("B11"), "dd.mm.yy") & " à " & Format(Range("B12"), "hh:mm")
    
    
    On Error Resume Next
    If [C11] < 10 Then
            Chemin = "G:\Common\ASTREINTES\Sauvegardes\200" & [C11]
            MkDir Chemin
            Chemin = Chemin & "\"
        Else
            Chemin = "G:\Common\ASTREINTES\Sauvegardes\20" & [C11]
            MkDir Chemin
            Chemin = Chemin & "\"
    End If
    On Error GoTo 0
    
    ActiveWorkbook.SaveCopyAs Chemin & Fichier_sauvegarde & ".xls"
    Si le dossier est déjà créé, il m'affiche une erreur (ce qui est compréhensible vu que le dossier existe déjà).

    Ma question est : comment faire pour que l'enregistrement s'effectue dans le dossier créé ?

    Merci pour votre patience et les efforts déployés !

    Bonne journée !

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Comme chemin est désigné, tu ne devrais pas avoir de (nouveau) problème, si
    Chemin = "G:\Common\ASTREINTES\Sauvegardes\20" & [C11], tu devrais l'enregistrer dans chemin, qu'une erreur ait été ou non générée

  11. #11
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 39
    Par défaut
    Bonjour,

    Je ne sais pas pourquoi ca ne marche toujours pas donc voici ce que je veux faire et si vous pouvez me dire comment faire ca m'aiderai beaucoup !


    J'ai un classeur ("Fiche d'intervention.xls" ) et dans ce classeur une feuille ("Fiche d'intervention" ) que je voudrais copier et enregistrer dans un nouveau classeur.

    Le classeur ("Fiche d'intervention.xls" ) est dans :
    G:\Common\ASTREINTES

    La feuille contient la date d'écriture de la fiche. J'aimerais creer un dossier par année (que le dossier se creer automatiquement lors du changement d'année) pour enregistrer mes sauvegardes dans :
    G:\Common\ASTREINTES\Sauvegardes\ + année

    et nommer mon classeur automatiquement :
    "Fiche d'intervention n° " & [B5] & " du " & Format(Range("B11" ), "dd.mm.yy" ) & " à " & Format(Range("B12" ), "hh:mm" ) & ".xls"


    Merci pour toute l'aide que vous m'avez deja apportée,

    Bonne journee!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2002] Extraction de lignes non contigües pour les copier dans nouveau classeur
    Par JerCaz dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/03/2010, 09h46
  2. copier onglets dans nouveau classeur
    Par hlander dans le forum Macros et VBA Excel
    Réponses: 29
    Dernier message: 13/02/2009, 10h29
  3. copie 6 onglets à la suite dans nouveau classeur
    Par fred792 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 09/12/2008, 23h22
  4. Réponses: 4
    Dernier message: 26/07/2007, 21h56
  5. Copie différentes sheets dans nouveau classeur
    Par benjisan dans le forum Excel
    Réponses: 12
    Dernier message: 19/07/2007, 13h46

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