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 :

Tri de 250 fichiers concaténés en un seul


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
    Ingénieur développement de composants
    Inscrit en
    Septembre 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement de composants
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2014
    Messages : 18
    Par défaut Tri de 250 fichiers concaténés en un seul
    Bonjour je doit concaténé 250 fichier dans un seul à la suite chaque fichier comprend environs 98 lignes j'ai donc créer se code :

    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
    Sub tri()
     
    Dim chemin As String
    Dim k As Integer
    Dim i As Integer
    Dim j As Integer
    Dim l As Integer
    Dim g As Integer
     
    '============ouverture et copier/coller de la premiere page du fichier==================
     
    g = 10
     
    For k = 1 To 3
     
        chemin = "C:\Users\mpf02\Desktop\Test\Rapport_detaille (" & k & ").csv"
     
     
        Const shtSrceName As String = "Rapport_detaille (" & k & ")"
        Dim wkbSource As Workbook
        Workbooks.Open chemin: Set wkbSource = ActiveWorkbook
        With wkbSource
            .Worksheets(shtSrceName).Copy ThisWorkbook.Worksheets(1)
            .Close
        End With
        Set wkbSource = Nothing
     
        For i = 1 To 300
     
            If ThisWorkbook.Sheets("Rapport_detaille (" & k & ")").Cells(10 + i, 1) = "" Then
     
            Else
     
                ThisWorkbook.Sheets("Synthese").Range(g + i) = ThisWorkbook.Sheets("Rapport_detaille (" & k & ")").Range(10 + i)
     
                l = i
     
            End If
     
        End
     
        g = g + l
     
        Worksheets("Rapport_detaille (" & k & ")").Delete
     
    Next
     
    End Sub
    Malheureusement pour moi il me sort une erreur de "constante requise".

    J'ai donc cherché mais je ne voit pas d'ou cela peut venir, je vous demande donc de voir la ou il pourrait avoir un manque ou une erreur dans mon code sachant que je test actuellement sur 3 fichier d'ou k = 1 à 3

    Merci d'avance.

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    une constante ne peut pas être variable, et tu ne peux pas valoriser ta constante avec une variable

    fait plutôt comme cet exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim shtSrceName As String
    Dim i as Integer
     
    For i = 1 to 3
        shtSrceName = "Rapport_detaille (" & k & ")"
        Msgbox shtSrceName
    Next i

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement de composants
    Inscrit en
    Septembre 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement de composants
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2014
    Messages : 18
    Par défaut Merci
    Merci je vais essayé sa de suite

  4. #4
    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, voir ici ( entre autres )

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement de composants
    Inscrit en
    Septembre 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement de composants
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2014
    Messages : 18
    Par défaut Suite
    Grace à vous j'ai pue avancé mais j'ai encore quelque petit problème à réglé, le premier est de mettre une variable k à la place du 1 dans

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    chemin = "C:\Users\mpf02\Desktop\Test\Rapport_detaille (" & 1 & ").csv"
    Const shtSrceName As String = "Rapport_detaille (" & 1 & ")"
    Cela bug en me disant avec une variable que cela ne fonctionne pas

    Ensuite je souhaite sortir un fichier CSV avec des séparateur ; à la place de , mais le problème est qu'avec mon code je n'arrive pas appliqué
    la commande habituelle.

    le code complet :

    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
    Sub tri()
     
    Dim chemin As String
    Dim k As Integer
    Dim i As Integer
    Dim j As Integer
    Dim l As Integer
    Dim g As Integer
     
    '============ouverture et copier/coller de la premiere page du fichier==================
     
    g = 0
     
    For k = 1 To 3
     
        chemin = "C:\Users\mpf02\Desktop\Test\Rapport_detaille (" & 1 & ").csv"
     
     
        Const shtSrceName As String = "Rapport_detaille (" & 1 & ")"
        Dim wkbSource As Workbook
        Workbooks.Open chemin: Set wkbSource = ActiveWorkbook
        With wkbSource
            .Worksheets(shtSrceName).Copy ThisWorkbook.Worksheets(1)
            .Close
        End With
        Set wkbSource = Nothing
     
            Cpt = Application.CountA(Range("A:A"))
     
        For i = 11 To Cpt
     
            Sheets("Rapport_detaille (" & 1 & ")").Rows(i).Copy
            Sheets("Synthese").Select
            Rows(g + i).Select
            ActiveSheet.Paste
     
        Next
     
        g = Cpt + 1 - 11
     
        Application.DisplayAlerts = False
        Worksheets("Rapport_detaille (" & 1 & ")").Delete
     
    Next
     
    End Sub
    Encore merci d'avance.

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Pour ton problème de nom de feuille, tu n'appliques pas mes propositions :

    - déclarer une variable String au lieu d'une Constante String
    - utiliser l'indice k au lieu du chiffre 1

    ce qui revient à intégrer dans ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim shtSrceName As String
     
    For k = 1 to 3
        shtSrceName = "Rapport_detaille (" & k & ")"
        ' la suite de ton code
    Next k

Discussions similaires

  1. Concaténer des fichiers Excel dans un seul fichier avec VBA
    Par Thallhos dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 29/06/2014, 21h39
  2. Concatenation de 7 fichiers .txt en 1 seul puis tri
    Par lanfou dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 17/08/2006, 11h48
  3. Ouvrir un fichier word en lecture seule
    Par yoyo30 dans le forum Access
    Réponses: 11
    Dernier message: 09/09/2005, 10h25

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