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 :

PB Loop ouverture de Workbooks (.xlsx)


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
    Implementation manager
    Inscrit en
    Mai 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Implementation manager

    Informations forums :
    Inscription : Mai 2018
    Messages : 22
    Par défaut PB Loop ouverture de Workbooks (.xlsx)
    Bonjour à tous,

    Je travaille à faire un loop de tous les fichiers excel dans un dossier.

    Problème, mon code tourne en boucle sur le même fichier (et copie donc les mêmes données à la suite).

    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 test123()
     
    Dim a As String, b As String
    Dim c As Integer, d As Integer, i As Integer, j As Integer
    Dim fichier As String
    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim wb As Workbook
     
    Set ws2 = ThisWorkbook.Worksheets("Data") 'feuille du fichier appelant
     
     
    a = "F:\ACTIVITE SERVICE\TRAITEMENT QUOTIDIEN\"
    b = "*.xls*"
     
    fichier = Dir(a & b)
     
    Do While fichier <> ""
     
    Set wb = Workbooks.Open(a & b)
    Set ws1 = wb.Worksheets("Feuil1")
     
    c = ws1.Range("A1").End(xlDown).Row 'nombre de lignes de données dans le fichier appelé
    d = ws2.Range("A10000").End(xlUp).Row 'nombre de lignes de données dans le fichier appelant
     
    For i = 2 To c ' les lignes des données à copier
    ws2.Cells(d + i - 1, 1) = ws1.Cells(i, 1) 
    ws2.Cells(d + i - 1, 2) = ws1.Cells(i, 2)
    ws2.Cells(d + i - 1, 3) = ws1.Cells(i, 3)
    Next i
     
    wb.Close
    fichier = Dir
     
    Loop 'ça loop sur le même fichier
     
    Set ws2 = Nothing
     
    End Sub
    Je trouve ça d'autant plus bizarre que mon code me paraît ressembler à tout ce que j'ai pu voir partout ailleurs.

    Si quelqu'un pouvait m'aiguiller, je lui en serait reconnaissant.

    Merci à vous.

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Tu n'utilises pas la variable "fichier" dans ta boucle.
    Tu te contentes de la renseigner mais pour le Open, tu utilises la variable "b" qui n'est pas modifiée à l'intérieur de la boucle.

    Pour débuguer un cas comme ça, vérifie tes variables.
    Par exemple, tu aurais plus placer après ton While une ligne Debug.Print fichier qui t'aurait permis de voir que le Dir() fonctionnait correctement et que ce n'était pas lui le coupable.

  3. #3
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Bonjour,

    Le code ci-dessous fonctionne chez moi:

    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
    Sub test123()
     
    Dim a As String, b As String
    Dim c As Integer, d As Integer, i As Integer, j As Integer
    Dim fichier As String
    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim wb As Workbook
     
     
    a = "D:\Mes documents\"
    b = "*.xls*"
     
    fichier = Dir(a & b)
     
    Do While fichier <> ""
     
      Set wb = Workbooks.Open(a & fichier)
      Set ws1 = wb.Worksheets("Feuil1")
     
      c = ws1.Range("A1").End(xlDown).Row 'nombre de lignes de données dans le fichier appelé
      d = ws2.Range("A10000").End(xlUp).Row 'nombre de lignes de données dans le fichier appelant
     
      For i = 2 To c ' les lignes des données à copier
        ws2.Cells(d + i - 1, 1) = ws1.Cells(i, 1) 
        ws2.Cells(d + i - 1, 2) = ws1.Cells(i, 2)
        ws2.Cells(d + i - 1, 3) = ws1.Cells(i, 3)
      Next i
     
      wb.Close
      fichier = Dir
     
    Loop 
     
    End Sub
    j'ai changé la ligne ci-dessous, a et b ne variant jamais il est normal tu que obtienne toujours la même réponse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set wb = Workbooks.Open(a & b)

  4. #4
    Membre averti
    Homme Profil pro
    Implementation manager
    Inscrit en
    Mai 2018
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Implementation manager

    Informations forums :
    Inscription : Mai 2018
    Messages : 22
    Par défaut
    OK merci pour votre aide.

    Je n'avais pas conscience que fichier aurait dû être dans le loop.

    Pour Debug.Print j'avoue que ce n'est pas un réflexe. Mais ça rentrera à force.

    Bonne fin de journée à vous deux.

    /résolu.

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

Discussions similaires

  1. [XL-2010] Syntaxe VLOOKUP en VBA - ouverture de Workbook dynamique
    Par julking92 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 23/02/2015, 16h23
  2. [XL-2010] OUverture fichier .xls ou .xlsx impossible
    Par morti dans le forum Excel
    Réponses: 0
    Dernier message: 30/01/2011, 19h09
  3. Workbooks.Add => Format .xlsx
    Par Monkey_D.Luffy dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/07/2010, 11h35
  4. [VB6]Problème ouverture Workbooks
    Par patrice67 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 09/04/2006, 18h40
  5. Ouverture CSV par Workbooks.open
    Par PoPmiSiR dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 14/10/2005, 10h19

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