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-E] : Traiter des fichiers excel se trouvant dans un dossier en particulier


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 32
    Points : 27
    Points
    27
    Par défaut [VBA-E] : Traiter des fichiers excel se trouvant dans un dossier en particulier
    Bonjour,

    Désolé si la question a deja été posée, je n'ai pas trouvé.

    Je cherche un début de macro qui par exemple ouvre tour à tour tous les fichiers excel se trouvant dans un même dossier. J'ai essayé de créer le code mais ca plante à chaque fois

    Merci à vous

    Geoffray

  2. #2
    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
    et ces fichiers tu les ouvre pour les modifier .?

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonsoir

    ci joint un exemple qui boucle et ouvre tous les classeurss d'un repertoire


    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
    Sub boucleClasseursRepertoire()
    Dim Fichier As String, Chemin As String
    Dim Wb As Workbook
     
    '---lister les fichiers du répertoire ---
    Chemin = "C:\Documents and Settings\michel\dossier"
    Fichier = Dir(Chemin & "\*.xls")
     
        Do
            'ouverture de chaque classeur
            Set Wb = Workbooks.Open(Chemin & "\" & Fichier)
            '
            '
            'la macro à executer dans chaque classeur ...
            '
            '
            'fermeture des classeurs
            'mettre False pour que les modifs ne soient pas enregistrées
     
            Wb.Close True
        Fichier = Dir
        Loop Until Fichier = ""
     
    End Sub


    bonne soiree
    michel

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 32
    Points : 27
    Points
    27
    Par défaut
    Merci pour le code Michel. Pour te répondre bbil en fait j'ai besoin d'ouvrir environ 80 fichiers excel pour ensuite les enregistrer en csv. Je teste ta macro dès que je peux Michel je suis d'apéro Merci en tout cas

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    rebonsoir

    Si tu dois convertir beaucoup de classeurs en csv : cet exemple permet d'effectuer l'opération sans ouvrir tous les fichiers.
    Dans cette procedure toutes les feuilles Excel sont supposées etre nommées "Feuil1"



    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
    Sub boucleClasseursFermesRepertoire()
    'Necessite d'activer la reference Microsoft ActiveX Data Object 2.x Library
    '
    Dim Rs As ADODB.Recordset
    Dim xConnect As String, xSql As String
    Dim Fichier As String, Chemin As String, Feuille As String
     
    '---lister les fichiers du répertoire ---
    Chemin = "C:\Documents and Settings\michel\dossier\general\excel"
    Fichier = Dir(Chemin & "\*.xls")
     
    'Tous les classeurs du repertoire doivent contenir
    'une feuille portant ce nom
    Feuille = "Feuil1"
     
        Do
            xConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
            Chemin & "\" & Fichier & ";" & "Extended Properties=Excel 8.0;"
     
            xSql = "SELECT * FROM [" & Feuille & "$];"
     
            Set Rs = New ADODB.Recordset
            Rs.Open xSql, xConnect, adOpenForwardOnly, adLockReadOnly, adCmdText
     
            Open _
            Chemin & "\" & Left(Fichier, Len(Fichier) - 4) & ".csv" For Output As #1
     
            Do Until Rs.EOF
                'adaptez le séparateur
                'Print #1, Rs.GetString(, 500, vbTab, vbCrLf, "");
                Print #1, Rs.GetString(, 600, ";", vbCrLf, "");
            Loop
            Close #1
     
            Rs.Close
            Set Rs = Nothing
     
        Fichier = Dir
        Loop Until Fichier = ""
     
    End Sub


    bonne soiree
    michel

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 32
    Points : 27
    Points
    27
    Par défaut
    Vraiment bien ce code. Peux tu me dire la différence entre :
    'Print #1, Rs.GetString(, 500, vbTab, vbCrLf, "");
    Print #1, Rs.GetString(, 600, ";", vbCrLf, "");

    Dans mon cas je convertis un fichier xls en cvs de manière traditionnelle.

    Merci

    Geoffray

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour

    Les 5 arguments de la la methode GetString:

    1. adClipString définit le format du recordset :le format est de type chaîne de caracteres.
    2. le nombre d'enregistrements à récupérer .Par défaut tous les enregistrements sont récupérés .
    3. le délimiteur de colonnes.
    4. le délimiteur d'enregistrements.
    5. indique comment représenter des valeurs nulles .



    bonne journée
    michel

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 32
    Points : 27
    Points
    27
    Par défaut
    Merci Michel. J'ai fait tourner la macro aujourd'hui, un jeu d'enfant

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

Discussions similaires

  1. [Toutes versions] Récupérer le nom des fichiers de type JPG dans un dossier
    Par solmyr16 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/08/2014, 15h00
  2. [AC-2002] Boucle pour importer et traiter des fichiers excel dans un dossier
    Par Tinien dans le forum VBA Access
    Réponses: 9
    Dernier message: 02/06/2010, 11h59
  3. Réponses: 1
    Dernier message: 06/02/2009, 17h58
  4. lire le nom des fichiers qui se trouvent dans un dossier
    Par foufoulol dans le forum Langage
    Réponses: 6
    Dernier message: 05/05/2008, 11h38
  5. [VBA]comment masquer des fichiers excel au démarrage d'une macro?
    Par alex.a dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/04/2007, 15h33

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