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 :

VBA Création dossier + enregistrement fichier


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2024
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2024
    Messages : 4
    Par défaut VBA Création dossier + enregistrement fichier
    Bonjour à tous et à toutes

    Je suis confronté à un soucis sur Excel avec une maccro.
    J'ai cherché et cherché, j'ai vu le sujet traité mainte fois mais jamais je n'ai réussi à adapter un code trouvé pour le faire fonctionné mon usage.

    J'ai un fichier excel avec 2 onglets.
    sur l'onglet 1 "Devis" je voudrais qu'en cliquant sur un bouton et en activant la maccro :

    - Il se créer un dossier dans un répertoire défini. Le nom du dossier à creer prend le nom de la cellule N8
    Exemple :
    Le repertoire est : C:\Users\Dell\Desktop\RFC\01 - DEVIS
    Si le nom de la cellule N8 est "Devis Mr Machin" alors le dossier à creer sera "Devis Mr Machin" et le repertoire sera C:\Users\Dell\Desktop\RFC\01 - DEVIS\Devis Mr Machin

    - Une fois le dossier crée, le fichier excel s'enregistre dans le dossier (en reprenant l'exemple, le fichier s'enregistre dans le dossier C:\Users\Dell\Desktop\RFC\01 - DEVIS\Devis Mr Machin et prend le nom de la cellule N8.xls

    Le code que j'ai fait "fonctionne"
    Seulement, le dossier se créer bien, mais le fichier s'enregristre dans le repertoire de base (C:\Users\Dell\Desktop\RFC\01 - DEVIS\) et non dans le dossier crée (Devis Mr Machin)

    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
    Sub Nouveau_dossier_test()
    Const Repert As String = "C:\Users\Dell\Desktop\RFC\01 - DEVIS\"
     
    Dim Sousrep, sPath
    Dim chemin As String
     
    Sousrep = Range("N8").Text
    sPath = Repert & Sousrep
     
    If Len(Dir(sPath, vbDirectory)) = 0 Then
    MkDir sPath
    End If
     
     
    ActiveWorkbook.SaveCopyAs sPath & Range("N8").Value & ".xls"
    End Sub
    Merci beaucoup pour votre aide !
    Très bonne soirée

  2. #2
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 265
    Billets dans le blog
    2
    Par défaut
    Bonsoir,

    il manque un "\"
    Je pense aussi qu'il vaudrait mieux enregistrer en xlsx ou xlsm

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.SaveCopyAs sPath & "\" & Range("N8").Value & ".xls"

  3. #3
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2024
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2024
    Messages : 4
    Par défaut
    Bonjour tototiti2008,

    Merci pour votre reponse,
    j'ai modifié le code en ajoutant le "" et modifiant en .xlsx

    j'ai maintenant un message d'erreur :

    erreur d'execution 1004
    le nom du fichier ou le chemin d'accès n'existe pas


    le dossier se créer bien pourtant lui


  4. #4
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 265
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Que contient N8 ?
    Que vaut sPath ?
    Si vous souhaitez pouvoir comprendre ce qui cloche, ce sont des informations à vérifier

  5. #5
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2024
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2024
    Messages : 4
    Par défaut
    Re,

    Dans la cellule N8 je vais chercher le texte de la cellule K6 et C19 n8 =K6 & " " & C19
    K6 etant le numero de devis
    et C19 l'intitulé



    sPath est la "combinaison" de Repert & Sousrep
    Repert étant l'adresse du dossier dans lequel je veux que le nouveau dossier soit créer
    Sousrep étant le nom du dossier à créer dans Repert

    merci

  6. #6
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 265
    Billets dans le blog
    2
    Par défaut
    Re,

    Est-ce que ça signifie que ça vous a permis de trouver l'erreur ?

  7. #7
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2024
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2024
    Messages : 4
    Par défaut
    Re,

    Non pas trouvé

    hormis que le dossier à créer et le fichier à enregistrer dedans ai le même nom (avec l'extension .xlsx pour fichier) je ne vois pas :S

  8. #8
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 265
    Billets dans le blog
    2
    Par défaut
    essayez d'ajouter une ligne MsgBox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Msgbox sPath & "\" & Range("N8").Value & ".xlsx"
    avant d'enregistrer
    Range sans précision va lire dans la feuille active, est-ce que c'est la bonne feuille qui est activée ?

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Par défaut
    Hello,

    Je propose une approche moderne via la librairie FSO, ce qui t'éviteras les pieges classiques des delimiteurs de dossier / fichier dans un chemin,
    FSO les prend en charge pour toi:
    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
    Public Sub Nouveau_dossier_test()
        Const Repert As String = "C:\Users\Dell\Desktop\RFC\01 - DEVIS"
     
        Dim Fso As Object    '// Scripting.FileSystemObject
        Set Fso = CreateObject("Scripting.FileSystemObject")
     
        Dim Sousrep As String
        Sousrep = Range("N8").Text
     
        Dim Path As String
        Path = Fso.BuildPath(Repert, Sousrep)
     
        If Not (Fso.FolderExists(Path)) Then
            Fso.CreateFolder Path
        End If
     
        ThisWorkbook.SaveCopyAs Fso.BuildPath(Path, Range("N8").Value & ".xlsx")
    End Sub
    Notes supplémentaires:
    - Pense a typer correctement toutes tes variables.
    - La notation hongroise est à bannir.
    - Utilise des références explicites plutôt que des références dépendantes du contexte (tout ce qui est Active...).

Discussions similaires

  1. [VBA-E] enregistrement fichier txt - date
    Par Lnmex dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 23/05/2024, 17h38
  2. [XL-2007] Vérifier , créer dossier, enregistrer fichier.
    Par HIGGUINS dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/07/2012, 17h36
  3. [VBA-E] probleme enregistrement fichier pour VBA excel
    Par hamster. dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/04/2007, 19h52
  4. [VBA][Excel] Ouverture Enregistrement fichier
    Par mulanzia2003 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 31/07/2006, 11h38
  5. [VBA-A]Parcours d'une arborescence dossiers et fichiers
    Par sidneyvba dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/03/2006, 16h58

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