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 Excel : ouvrir plusieurs fichiers


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 35
    Points : 7
    Points
    7
    Par défaut Macro Excel : ouvrir plusieurs fichiers
    Bonjour, je suis novice en macro sous Excel. Je doit automatiser une ouverture de fichier avec une macro réalisé sous Excel.
    Je m'explique, je dispose de 30 fichier nommé "Truc00", jusqu'à "Truc29", je doit automatiser l'ouverture de ces fichiers en réalisant des opérations sur chacun des fichiers. Voici le code que j'ai tappé :
    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
     
    Sub Macro1()
     
    For i = 0 To 3
     
    Directory = "D"
    NomFichier = "DATA"
    Extension = ".CSV"
     
     
    NomFichierTexte = Directory & File_name & "0" & Trim(Str(i)) & Extension
     
    Directory = "D"
     
     
    NomFichierTexte = Application.GetOpenFilename("*Fichiers Visual Basic (*.s1),*.s1*")
     
     
    ChDir "d:\Documents and Settings\t0106841\Mes documents\doc CPF\boite antenne 2008\Matrice [S]\P4F15\bande HF\Fouet 5m  S2P\paramétre"
    Workbooks.OpenText Filename:= _
        NomFichierTexte, Origin:=xlWindows _
        , StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=True, Comma:=True, _
        Space:=True, Other:=False, OtherChar:="!", FieldInfo:=Array(Array(1, 1), _
        Array(2, 1), Array(3, 1), Array(4, 1))
     
     
    NomFichierTexteCSV = Left(NomFichierTexte, Len(NomFichierTexte) - 3) & ".csv"
     
     
    ActiveWorkbook.SaveAs Filename:= _
        NomFichierTexteCSV, FileFormat:=xlCSV, _
        CreateBackup:=False
     
    Next i
     
    ActiveWindow.Close
     
     
    End Sub
    Voilà merci pour votre aide

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonsoir,


    Une astuce, ce code permet de boucler sur chaque fichier 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
     
    Dim Fso As Object
    Dim FsoRepertoire As Object
    Dim FsoFichier As Object
     
    Dim strRepertoire As String
     
    strRepertoire = ThisWorkbook.Path & "\Fichiers"
     
    Vide_Importation
     
     
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Set FsoRepertoire = Fso.GetFolder(ThisWorkbook.Path)
     
    'Boucle sur les fichiers du repertoire
     
    For Each FsoFichier In FsoRepertoire.Files
     
          'Ouverture du fichier et actions
     
    Next

    Bon courage

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2009
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 35
    Points : 7
    Points
    7
    Par défaut
    Bonjour, je n'ais réussi à mettre en place l'astuce que tu m'as donné, cependant, j'ai réussi à mettre autre chose en place :
    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
     
    Sub Macro1()
     
    Directory = "D"
    NomFichier = "DATA"
    Extension = ".CSV"
     
    NomFichierTexte = Directory & File_name & "0" & Trim(Str(i)) & Extension
     
     
    Directory = "D"
     
    NomFichierTexte = Application.GetOpenFilename("*Fichiers Visual Basic (*.s1),*.s1*", MultiSelect:=True)
     
    counter = 1
     
    While counter <= UBound(NomFichierTexte)
     
    Workbooks.Open Filename:=NomFichierTexte(counter), Origin:=xlWindows _
        , StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=True, Comma:=True, _
        Space:=True, Other:=False, OtherChar:="!", FieldInfo:=Array(Array(1, 1), _
        Array(2, 1), Array(3, 1), Array(4, 1))
     
     
    NomFichierTexteCSV = Left(NomFichierTexte, Len(NomFichierTexte) - 3) & ".csv"
     
     
    ActiveWorkbook.SaveAs Filename:= _
        NomFichierTexteCSV, FileFormat:=xlCSV, _
        CreateBackup:=False
     
    counter = counter + 1
    Wend
     
    ActiveWindow.Close
     
     End Sub
    Seulement lorsque je l'execute, il me dit que "StartRow" est un argument nommé introuvable.
    Quelqu'un aurait-il une solution?
    Merci

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2013
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    Bonjour,

    J'ai lu cette discussion.

    Citation Envoyé par jfontaine Voir le message
    Bonsoir,


    Une astuce, ce code permet de boucler sur chaque fichier 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
     
    Dim Fso As Object
    Dim FsoRepertoire As Object
    Dim FsoFichier As Object
     
    Dim strRepertoire As String
     
    strRepertoire = ThisWorkbook.Path & "\Fichiers"
     
    Vide_Importation
     
     
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Set FsoRepertoire = Fso.GetFolder(ThisWorkbook.Path)
     
    'Boucle sur les fichiers du repertoire
     
    For Each FsoFichier In FsoRepertoire.Files
     
          'Ouverture du fichier et actions
     
    Next

    Bon courage
    Et comment effectuer l'ouverture de fichier ? dans le champ "Filename" ci-dessous on est censé mettre directement l'objet FsoFichier ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ChDir "D:\mon_chemin\Desktop"
        Workbooks.OpenText Filename:= _
            "que mettre ici ?", Origin:=xlWindows, _
            StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
            ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=True _
            , Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _
            Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)), TrailingMinusNumbers:=True

  5. #5
    Expert éminent sénior
    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
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, pas testé le code, mais à priori FsoFichier devrait être suffisant, en imbriquant les 2 codes, même si on risque qqs surprises.

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2013
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    sinon quelle est l'utilité de la ligne 10 ?


  7. #7
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut voici simple et fonctionne tres bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub testy()
     
     
        Dim managefile As New Scripting.FileSystemObject
        Dim fichier As File
        'on parcours ton dissier
         application.displayAlerts = false
        For Each fichier In managefile.getfolder("E:\test").Files
        Application.Workbooks.Open (fichier.Path)
        Next
        application.displayAlerts= true
    End Sub

Discussions similaires

  1. Macro unique pour plusieurs fichiers excel
    Par jackbauer972 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 09/07/2007, 13h41
  2. Macro pour ouvrir un fichier excel avec des ','
    Par oliver75 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 30/05/2007, 18h08
  3. [VBA] Ouvrir plusieurs fichiers textes depuis Excel
    Par Stephane_123 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/12/2006, 17h45
  4. Réponses: 28
    Dernier message: 22/05/2006, 16h25
  5. [VBA-E]une macro unique pour plusieurs fichiers excel
    Par fanchic29 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/04/2006, 16h20

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