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 :

Vérification et création d'un dossier [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Responsable BE
    Inscrit en
    Août 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Responsable BE
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2014
    Messages : 20
    Par défaut Vérification et création d'un dossier
    Bonjour à tous,

    J'avais posté l'année dernière une demande sur le même sujet mais dont les réponses ne m'ont pas totalement correspondu.
    Après quelques mois d'abandon sur cette macro, faute de temps, je reviens vers vous avec une nouvelle approche qui sera plus simple je pense.

    J'ai un fichier répertoriant l'ensemble de nos projets lignes par lignes, je l'ai tout d'abord modifié en y créant un tableau ce qui permet plus de possibilités et qui me retirent beaucoup de problème. J'ai ensuite créer dans mon classeur une feuille dédiée à la création du dossier pour simplifier les choses.

    Pour exposer le problème simplement :
    J'ai une case (exemple C8) qui reprend une liste déroulante
    En dessous j'ai deux cases d'info (D8,E8 ) qui se remplient par RECHERCHEV via C8
    En dernier j'ai une case (F8) qui se remplie par CONCATENER via C8, D8 et E8.
    Jusqu'ici rien de compliqué.

    Maintenant j'aurais besoin d'un module VBA qui me permettent de tester l'existence d'un dossier dont le nom est dans la cellule F8. Si il existe, je voudrais une MsgBox "le dossier existe déjà", si il n'existe pas, le créer et MsgBox "le dossier a été créé".
    La particularité, c'est que le dossier doit être créé par copie d'un dossier témoin et le nom sera celui déterminé dans la case F8.
    Dernière précision importante, le dossier parent est sur un serveur et comporte le fichier excel, le dossier témoin et les dossiers créés donc il faut une spécification "ThisWorkBook.Path" si je ne me trompe pas.

    Bon j'espère avoir été clair et qu'une âme charitable puisse me solutionner mon problème.

    Merci d'avance,

    Jok3rnoir

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Le but de ce forum n'est pas de fournir du code gratuit prêt à l'emploi. Ceci dit, c'est une question ambigüe. En principe, un fichier Excel est un classeur et un dossier c'est ce qui s'appelait avant un répertoire, c'est-à-dire une portion d'un disque dur où on enregistre des fichiers. Quoi qu'il en soit, on peut tester l'existence d'un dossier ou d'un classeur de différentes façons:

    1) un piège à erreurs qui va traiter l'erreur qu'une instruction Dir, va inévitablement provoquer avec un fichier ou un dossier inexistant:

    Sub Machin
    on error goto piègeerreur
    du code
    exit sub
    :piègeerreur
    select case err
    case un numéro
    case un autre numéro
    end select
    resume
    end sub

    Ou encore, on utilise la bibliothèque externe FileSystèmeObject.

    Je coupe là, la batterie est à la veille de se mettre en grève.

  3. #3
    Expert confirmé
    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
    Par défaut
    Salut, qqch du genre ( à adapter à ton contexte) devrait suffire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Option Explicit
     
    Sub Test()
    Dim sDossier As String
        sDossier = ThisWorkbook.Path & "\" & "Essai"
        CreationDossier sDossier
    End Sub
     
    Private Sub CreationDossier(sChemin As String)
    Dim FSO As Object
        Set FSO = CreateObject("Scripting.FileSystemObject")
        If Not FSO.FolderExists(sChemin) Then FSO.CreateFolder (sChemin)
        Set FSO = Nothing
    End Sub
    Pour la copie de dossier tu as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FSO.CopyFolder Source, Destination

  4. #4
    Membre averti
    Homme Profil pro
    Responsable BE
    Inscrit en
    Août 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Responsable BE
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2014
    Messages : 20
    Par défaut
    Merci pour vos réponses,

    Je ne chercher pas un code prêt à l'emploi, je cherche un coup de pouce sur cette solution et aussi des explications sur la vba avec les exemples. Je souhaite comprendre la logique de programmation pour savoir me débrouiller par la suite

    clementmarcotte : peux tu me détailler la vba que tu cité dans ton message ?

    kiki29 : Merci pour le code, je vais tester ça en espérant trouver comment adapter au mieux à mon contexte.

    A bientôt,

  5. #5
    Membre averti
    Homme Profil pro
    Responsable BE
    Inscrit en
    Août 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Responsable BE
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2014
    Messages : 20
    Par défaut
    Je n'arrive pas à utiliser ta macro kiki29. Le dossier "Essai" se crée bien dans mon dossier ou se trouve mon fichier excel mais le fait de tester la présence je n'y arrive pas.
    Pourrais tu m'expliquer comment, avec quelles formules et quel moyen je peux faire cela :
    1 - créer un dossier
    2 - tester l'existence
    3 - copier un dossier
    4 - nommer un dossier en fonction d'une cellule

    Une explication sur chaque point me permettrait de créer les différentes choses les comprendre et ensuite les compiler pour composer mon code final.

    Malgré plusieurs sites je trouve pas d'explication concrète qui me permette de comprendre ce que j'écris comme code.
    Je commence à saisir deux trois trucs à force mais cela reste encore du chinois lol

    Merci beaucoup d'avance à la personne qui pourra m'expliquer tout ça.

  6. #6
    Expert confirmé
    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
    Par défaut
    Salut, tu as tous les éléments sous les yeux, le code est suffisamment explicite et simple pour une compréhension rapide, après tu peux lire et assimiler : Manipulation des fichiers en VBA.

    Autrement dit qqch du genre ( avec gestion d'erreurs minimaliste )
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Option Explicit
     
    Sub Test()
    Dim sDossier As String, sDossierSource As String
    Dim sNom As String
     
        sNom = Feuil1.Range("B5")
        sDossierSource = "E:\PDFs\PDFs 17 Juin"
     
        If NomFichierValide(sNom) Then
            sDossier = ThisWorkbook.Path & "\" & sNom
            CreationDossier sDossier, sDossierSource
        Else
            Feuil1.Range("B5").Select
            MsgBox "Nom de Dossier : " & sNom & " invalide"
        End If
    End Sub
     
    Private Sub CreationDossier(sChemin As String, sDossier As String)
    Dim FSO As Object
        Set FSO = CreateObject("Scripting.FileSystemObject")
        If Not FSO.FolderExists(sDossier) Then
            MsgBox "Dossier Source : " & sDossier & " inexistant"
            Set FSO = Nothing
            Exit Sub
        End If
        If Not FSO.FolderExists(sChemin) Then
            FSO.CreateFolder (sChemin)
            FSO.CopyFolder sDossier, sChemin
        End If
        Set FSO = Nothing
    End Sub
     
    Private Function NomFichierValide(sChaine As String) As Boolean
    Dim i As Long
    Const CaracInterdits As String = """*/:<>?[\]|"
        NomFichierValide = True
        If Len(sChaine) = 0 Then
            NomFichierValide = False
            Exit Function
        End If
        For i = 1 To Len(CaracInterdits)
            If InStr(sChaine, Mid$(CaracInterdits, i, 1)) > 0 Then
                NomFichierValide = False
                Exit Function
            End If
        Next i
    End Function

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

Discussions similaires

  1. [XL-2010] Vérification et création de dossier
    Par Jok3rnoir dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 09/09/2014, 17h21
  2. création d'un dossier
    Par salseropom dans le forum C
    Réponses: 5
    Dernier message: 16/06/2006, 08h44
  3. Réponses: 3
    Dernier message: 30/05/2006, 12h07
  4. Réponses: 21
    Dernier message: 09/04/2006, 23h13
  5. Récuperez la date de création d'un dossier
    Par @dinsx dans le forum C++Builder
    Réponses: 4
    Dernier message: 19/07/2005, 09h42

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