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 création de repertoire


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 3
    Par défaut macro création de repertoire
    Bonjour,

    J'aimerais avoir un script VB qui :
    - ouvre un fichier excel,
    - prend le nom de chaque champ de la colonne C
    - vérifie si le champ est non nul et non égal à 'comments' et
    - crée un répertoire avec le nom du champ (dans un autre répertoire que j'aurais indiqué en dur "C:/MonRep"), et
    - copie dans chacun des répertoires créé, 3 fichiers que j'aurais indiqué en dur (fic1, fic2, fic3)

    Je ne sais pas comment faire, je n'ai pas l'habitude de programmer en VB !

  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
    Bonjour pppswing, bienvenue sur le forum.
    Tu connais l'enregistreur de macro ? Tu fais ce que tu as à faire en enregistrant ta macro, tu analyses le code et s'il te manque quelque chose, tu reviens
    Pour créer un répertoire, s'il est dans le volume actif (celui du classeur actif) c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Chdir NomRep 'ou nomrep est sous la forme "C:\Mes Docs\NewRep"
    Si tu n'es pas dans le bon volume, tu dois préciser au préalable celui-ci avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ChDrive "d" 'pour passer sur D:\
    Pour ouvrir un classeur, si tu connais le répertoire, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.open Rep & "\" & Filename
    Pour parcourir une colonne, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Cell as range
    For each cell Worksheets("la feuille").Range(cells(Premiereligne, NoColonne), Cells(derniereligne, NoColonne))
         if cell <> "" and Cell <> "comments" then _
               Mkdir "C:/MonRep" & "\" & Cell 'Corrigé
    Next
    Avec ça, tu devrais pouvoir commencer
    A+

  3. #3
    Membre éclairé Avatar de tomy7
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 540
    Par défaut
    essaye la fonction : SHCreateDirectoryEx(0&, Directory, 0&)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Declare Function SHCreateDirectoryEx Lib "Shell32.dll" Alias "SHCreateDirectoryExA" _
                                                 (ByVal hwnd As Long, ByVal pszPath As String, ByVal lngsec As Long) As Long
     
    Directory = ici ton chemin
    Checkcreate = SHCreateDirectoryEx(0&, Directory, 0&)
    cette fonction ne cree le directory que si il existe pas donc si il existe pas de bug ... tout en silence comme dirait Ucfoutu ( petite de dedicace).

  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
    Tu peux aussi plus simplement tester si le répertoire existe sans déclaration aucune et sans bug non plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub test()
    NomRep = "D:\Nimportequoi"
    If Dir(NomRep) = "" Then MkDir NomRep
    End Sub
    Par contre, je t'ai dit une bêtise, pour créer un répertoire, c'est Mkdir, non Chdir
    Un fois ton répertoire créé, pour te placer dedans, si nécessaire, c'est
    A+

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 3
    Par défaut
    Hello,
    J'arrive pas à sélectionner mes cases
    j'ai une erreur incompatibilité de type à la ligne :
    For Each Cell In Columns("C:C")

    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 Macro1()
    '
    ' Macro1 Macro
    ' Macro enregistrée le 01/04/2008 par test
    '
     
     
    Dim Cell As Range
    For Each Cell In Columns("C:C")
         If Cell <> "" And Cell <> "comments" Then
                ChDir "C:\MonRep\" & Cell
         End If
    Next
     
    End Sub

  6. #6
    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
    Je viens de tester "ton" code et n'ai pas rencontré de problème.
    Puisque tu en rencontres un, j'ajouterais tout de même avant la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("LeNomDeLaFeuille").activate
    Tu dis
    A+

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut
    Citation Envoyé par pppswing Voir le message
    ...
    j'ai une erreur incompatibilité de type à la ligne :
    For Each Cell In Columns("C:C")
    ...
    Il faut t'assurer que Cell contient une valeur qui permet de créer une chaine valide pour CHDIR.

    Si Cell contient une valeur d'erreur, par exemple, tu vas planter...

    De plus, vu que tu veux utiliser la valeur de Cell, je conseille, par précaution et même si .Value est la propriété par défaut, d'utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For Each Cell In Columns("C:C")
         If Cell <> "" And Cell <> "comments" Then
                ChDir "C:\MonRep\" & Cell.Value
         End If
    Ok?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. [VBA-Excel] Macro Création Case à cocher
    Par strifer dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 21/07/2006, 10h18
  2. [VBA Excel] macro création de feuille
    Par Viper7 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 29/06/2006, 11h13
  3. création de repertoire
    Par donmamio dans le forum Langage
    Réponses: 5
    Dernier message: 25/04/2006, 15h16
  4. création de repertoire
    Par le69 dans le forum Langage
    Réponses: 11
    Dernier message: 25/03/2006, 18h11
  5. Création de repertoire...
    Par Html dans le forum Langage
    Réponses: 3
    Dernier message: 18/03/2006, 17h30

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