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 :

Une macro synthese en VBA sous excel!


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Points : 35
    Points
    35
    Par défaut Une macro synthese en VBA sous excel!
    Quelqu'un pourrait t-il m'aider à debueuger ce programme?

    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    Function Filesname(sPath As String)
      Dim v() As String
     
      v = Split(sPath, "\")
      Filesname = v(UBound(v))
     
    End Function
     
     
    Public Sub editSynthese()
     
      Dim j, row_deb, row_fin As Integer
      Dim compteur As Long
      Dim path As String
      Dim Strg_2 As String
      Dim Strg_4 As String
      Dim Strg_5 As String
     
      Strg_2 = "Anomalies détectées :"
      Strg_4 = "Synthèse :"
      Strg_5 = "Fin Synthèse"
     
      Dim LFIF() As Variant
     
     
      'Choix du chemin
      path = ActiveWorkbook.path
      'mise en place de la liste de fichiers
      With Application.FileSearch
        .NewSearch
        .FileType = msoFileTypeExcelWorkbooks
        .SearchSubFolders = False
        .LookIn = ActiveWorkbook.path
        If .Execute() > 1 Then
          a = 0
          ReDim Preserve LFIF(.FoundFiles.Count - 1)
          '(-1) car array(0) (-1) car ce fichier est déjà ouvert
          compteur = .FoundFiles.Count
          For i = 1 To compteur
            If .FoundFiles(i) <> ActiveWorkbook.FullName Then
              LFIF(a) = .FoundFiles(i)
              MsgBox LFIF(a)
              Worksheets(1).Cells(i, 1) = .FoundFiles(i)
     
              MsgBox Filesname(.FoundFiles(i))
     
              'ouverture des fichiers
     
              Application.DisplayAlerts = False
              Workbooks.Open LFIF(a)
     
              a = a + 1
     
            End If
     
            ' copie des "Evénements importants" dans fichier cabinet
     
            j = 1
     
            Workbooks(Filesname(.FoundFiles(i))).Activate
            Worksheets(1).Activate
     
            row_deb = 1
            While Worksheets(1).Cells(row_deb, 1) <> Strg_4
              row_deb = row_deb + 1
            Wend
     
            row_fin = row_deb + 1
            While Worksheets(1).Cells(row_fin, 1) <> Strg_2
              row_fin = row_fin + 1
            Wend
     
            Workbooks(ActiveWorkbook.FullName).Worksheets(1).Cells(j, 1) = Worksheets(1).Cells(row_deb, 1) & left(Filesname(.FoundFiles(i)), len(Filesname(.FoundFiles(i)) - 4)
            j = j + 1
            For k = row_deb + 1 To row_fin - 1
              Workbooks(ActiveWorkbook.FullName).Worksheets(1).Cells(j, 1) = Worksheets(1).Cells(k, 1)
              j = j + 1
            Next k
          Next i
        Else
          MsgBox ("Aucun autre fichier que celui-ci")
        End If                 
     
      End With   
     
      ' copie des "Anomalies détectées" dans fichier cabinet
     
     
      j = j + 2
     
      For i = 1 To compteur
     
        Workbooks(ActiveWorkbook.FullName).Activate
        Worksheets(1).Activate
     
        row_deb = 1
        While Worksheets(1).Cells(row_deb, 1) <> Strg_2
          row_deb = row_deb + 1
        Wend
     
        row_fin = row_deb + 1
        While Worksheets(1).Cells(row_fin, 1) <> Strg_5
          row_fin = row_fin + 1
        Wend
     
        Workbooks(ActiveWorkbook.FullName).Worksheets(1).Cells(j, 1) = Worksheets(1).Cells(row_deb, 1) & Left(LFIF(i), Len(LFIF(i)) - 4)
        j = j + 1
        For k = row_deb + 1 To row_fin - 1
          Workbooks(ActiveWorkbook.FullName).Worksheets(1).Cells(j, 1) = Worksheets(1).Cells(k, 1)
          j = j + 1
        Next k
     
      Next i
     
      ' copie des "Anomalies détectées" dans fichier client
      j = 1
     
      For i = 1 To compteur
     
        Workbooks(i + 1).Activate
        Worksheets(1).Activate
     
        row_deb = 1
        While Worksheets(1).Cells(row_deb, 1) <> Strg_2
          row_deb = row_deb + 1
        Wend
     
        row_fin = row_deb + 1
        While Worksheets(1).Cells(row_fin, 1) <> Strg_5
          row_fin = row_fin + 1
        Wend
     
        Workbooks(ActiveWorkbook.FullName).Worksheets(2).Cells(j, 1) = Worksheets(1).Cells(row_deb, 1) & Left(LFIF(i), Len(LFIF(i)) - 4)
        j = j + 1
        For k = row_deb + 1 To row_fin - 1
          Workbooks(ActiveWorkbook.FullName).Worksheets(2).Cells(j, 1) = Worksheets(1).Cells(k, 1)
          j = j + 1
        Next k
     
      Next i
     
      'fermeture des fichiers
      ScreenUpdating = False
      For i = 1 To nbFiles
        Workbooks(LFIF(i)).Close
      Next i
     
    End Sub
    [Balises "Code" ajoutées par AlainTech]
    [Merci d'y penser à l'avenir.]

  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
    essai de mettre des balises ( bouton code ... sur fenêtre saisie du message ...) et de nous dire ou tu as des problémes et de nous décrire ce qu'est censé faire ta macro...

  3. #3
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Salut max2245

    Comme le dit bbil
    ... essai de mettre des balises ...
    et comme c'est Noël je l'ai fait pour toi voici ce que j'obtiens :
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    Function Filesname(sPath As String)
        Dim v() As String
        v = Split(sPath, "\")
        Filesname = v(UBound(v))
    End Function
     
    Public Sub editSynthese()
     
        Dim j, row_deb, row_fin As Integer
        Dim compteur As Long
        Dim LFIF() As Variant
        Dim path, Strg_2, Strg_4, Strg_5 As String
     
        Strg_2 = "Anomalies détectées :"
        Strg_4 = "Synthèse :"
        Strg_5 = "Fin Synthèse"
     
        'Choix du chemin
        path = ActiveWorkbook.path
     
        'mise en place de la liste de fichiers
        With Application.FileSearch
            .NewSearch
            .FileType = msoFileTypeExcelWorkbooks
            .SearchSubFolders = False
            .LookIn = ActiveWorkbook.path
            If .Execute() > 1 Then
                a = 0
                ReDim Preserve LFIF(.FoundFiles.Count - 1)
                '(-1) car array(0) (-1) car ce fichier est déjà ouvert
                compteur = .FoundFiles.Count
                For i = 1 To compteur
                    If .FoundFiles(i) <> ActiveWorkbook.FullName Then
                        LFIF(a) = .FoundFiles(i)
                        MsgBox LFIF(a)
                        Worksheets(1).Cells(i, 1) = .FoundFiles(i)
     
                        MsgBox Filesname(.FoundFiles(i))
     
                        'ouverture des fichiers
     
                        Application.DisplayAlerts = False
                        Workbooks.Open LFIF(a)
                        a = a + 1
                    Else
                    End If
     
                    ' copie des "Evénements importants" dans fichier cabinet
     
                    j = 1
     
                    Workbooks(Filesname(.FoundFiles(i))).Activate
                    Worksheets(1).Activate
     
                    row_deb = 1
                    While Worksheets(1).Cells(row_deb, 1) <> Strg_4
                        row_deb = row_deb + 1
                    Wend
     
                    row_fin = row_deb + 1
                    While Worksheets(1).Cells(row_fin, 1) <> Strg_2
                        row_fin = row_fin + 1
                    Wend
     
                    Workbooks(ActiveWorkbook.FullName).Worksheets(1).Cells(j, 1) = Worksheets(1).Cells(row_deb, 1) & Left(Filesname(.FoundFiles(i)), Len(Filesname(.FoundFiles(i)) - 4))
                    j = j + 1
                    For k = row_deb + 1 To row_fin - 1
                        Workbooks(ActiveWorkbook.FullName).Worksheets(1).Cells(j, 1) = Worksheets(1).Cells(k, 1)
                        j = j + 1
                    Next k
     
                Next i
     
            Else
                MsgBox ("Aucun autre fichier que celui-ci")
            End If
     
     
        End With
     
        ' copie des "Anomalies détectées" dans fichier cabinet
     
     
        j = j + 2
     
        For i = 1 To compteur
     
            Workbooks(ActiveWorkbook.FullName).Activate
            Worksheets(1).Activate
     
            row_deb = 1
            While Worksheets(1).Cells(row_deb, 1) <> Strg_2
                row_deb = row_deb + 1
            Wend
     
            row_fin = row_deb + 1
            While Worksheets(1).Cells(row_fin, 1) <> Strg_5
                row_fin = row_fin + 1
            Wend
     
            Workbooks(ActiveWorkbook.FullName).Worksheets(1).Cells(j, 1) = Worksheets(1).Cells(row_deb, 1) & Left(LFIF(i), Len(LFIF(i)) - 4)
            j = j + 1
            For k = row_deb + 1 To row_fin - 1
                Workbooks(ActiveWorkbook.FullName).Worksheets(1).Cells(j, 1) = Worksheets(1).Cells(k, 1)
                j = j + 1
            Next k
     
        Next i
     
        ' copie des "Anomalies détectées" dans fichier client
        j = 1
     
        For i = 1 To compteur
     
            Workbooks(i + 1).Activate
            Worksheets(1).Activate
     
            row_deb = 1
            While Worksheets(1).Cells(row_deb, 1) <> Strg_2
                row_deb = row_deb + 1
            Wend
     
            row_fin = row_deb + 1
            While Worksheets(1).Cells(row_fin, 1) <> Strg_5
                row_fin = row_fin + 1
            Wend
     
            Workbooks(ActiveWorkbook.FullName).Worksheets(2).Cells(j, 1) = Worksheets(1).Cells(row_deb, 1) & Left(LFIF(i), Len(LFIF(i)) - 4)
            j = j + 1
            For k = row_deb + 1 To row_fin - 1
                Workbooks(ActiveWorkbook.FullName).Worksheets(2).Cells(j, 1) = Worksheets(1).Cells(k, 1)
                j = j + 1
            Next k
     
        Next i
     
        'fermeture des fichiers
        ScreenUpdating = False
        For i = 1 To nbFiles
            Workbooks(LFIF(i)).Close
        Next i
     
    End Sub
    La prochaine fois essaye d'incrémenter comme tu le vois c'est plus lisible et réduit les groupes de lignes blanches à une.

    Lorsque j'ai prit ton code pour l'incrémenter j'ai eu une erreur sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(ActiveWorkbook.FullName).Worksheets(1).Cells(j, 1) = Worksheets(1).Cells(row_deb, 1) & left(Filesname(.FoundFiles(i)), len(Filesname(.FoundFiles(i)) - 4)
    Il manque à la fin une parentèse
    (Dans le code si dessus je l'ai ajoutée)

    De plus tu utilises une variable : "path" (qui d'ailleur, une fois renseignée, je ne vois pas où tu l'utilises ) path un mot connu de VBA donc evites, à mon avis appele la plutôt "chemin" par exemple .

    Voilà déjà regarde ces deux remarques et dis si c'est suffisant ou pas

    Et si ça l'est pas, et bien comme le dis bbil :
    ... et de nous dire ou tu as des problémes et de nous décrire ce qu'est censé faire ta macro...
    Voilà

    Igloobel
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  4. #4
    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
    Citation Envoyé par Igloobel
    La prochaine fois essaye d'incrémenter comme tu le vois c'est plus lisible
    c'est pas incrémenter mais plutôt indenter

  5. #5
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    oups c'est vrai !
    désolé
    La prochaine fois je ferais plus attention à mon vocabulaire

    Igloobel
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Points : 35
    Points
    35
    Par défaut Le programme avec des fichiers statiques
    Voici le programme que j'ai fait!
    Le but de ce programme est d'ouvrir des fichiers
    et de faire la synthèse dans un fichier synthèse.
    Le seul problème de ce programme est qu'il faut indiquer
    le chemin dans le répertoire racine et les noms des fichiers.

    Je souhaiterais faire un programme dynamique qui va chercher les
    fichiers dans le même répertoire racine.

    Quelqu'un peut il m'aideR?


    Merci pour vos réponses!


    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    Public Sub editSynthese()
     
      Dim j, row_deb, row_fin As Integer
     
      Dim path As String
      Dim Strg_2 As String
      Dim Strg_4 As String
      Dim Strg_5 As String
     
      Strg_2 = "Anomalies détectées :"
      Strg_4 = "Synthèse :"
      Strg_5 = "Fin Synthèse"
     
      Dim nbFiles As Integer
     
      nbFiles = 12
      ReDim FilesName(1 To nbFiles) As String
     
      ' emplacement des fichiers
      path = "C:\Documents and Settings\fraysse\Mes documents\Maxime\Enoes\Cabinet Elkaim\"
     
      ' liste des noms de fichiers à synthétiser
      FilesName(1) = "G- Capitaux.xls"
      FilesName(2) = "H- Emprunts.xls"
      FilesName(3) = "I- Immo corporelles et incorporelles.xls"
      FilesName(4) = "J- Immofinancières.xls"
      FilesName(5) = "K- Stocks.xls"
      FilesName(6) = "L- Fournisseurs.xls"
      FilesName(7) = "M- Clients.xls"
      FilesName(8) = "N - Personnels.xls"
      FilesName(9) = "O- Impôts et taxes.xls"
      FilesName(10) = "Q- Comptes courants.xls"
      FilesName(11) = "R- Débiteurs et créditeurs divers.xls"
      FilesName(12) = "ST- Charges constatées d'avance et produits à recevoir.xls"
     
      'ouverture des fichiers
     
      For i = 1 To nbFiles
        Workbooks.Open path & FilesName(i)
      Next i
     
      j = 1
     
      ' copie des "Evénements importants" dans fichier cabinet
      For i = 1 To nbFiles
     
        Workbooks(FilesName(i)).Activate
        Worksheets(1).Activate
     
        row_deb = 1
        While Worksheets(1).Cells(row_deb, 1) <> Strg_4
          row_deb = row_deb + 1
        Wend
     
        row_fin = row_deb + 1
        While Worksheets(1).Cells(row_fin, 1) <> Strg_2
          row_fin = row_fin + 1
        Wend
     
        Workbooks("Synthese.xls").Worksheets(1).Cells(j, 1) = Worksheets(1).Cells(row_deb, 1) & Left(FilesName(i), Len(FilesName(i)) - 4)
        j = j + 1
        For k = row_deb + 1 To row_fin - 1
          Workbooks("Synthese.xls").Worksheets(1).Cells(j, 1) = Worksheets(1).Cells(k, 1)
          j = j + 1
        Next k
     
      Next i
     
      ' copie des "Anomalies détectées" dans fichier cabinet
     
      j = j + 2
     
      For i = 1 To nbFiles
     
        Workbooks(FilesName(i)).Activate
        Worksheets(1).Activate
     
        row_deb = 1
        While Worksheets(1).Cells(row_deb, 1) <> Strg_2
          row_deb = row_deb + 1
        Wend
     
        row_fin = row_deb + 1
        While Worksheets(1).Cells(row_fin, 1) <> Strg_5
          row_fin = row_fin + 1
        Wend
     
        Workbooks("Synthese.xls").Worksheets(1).Cells(j, 1) = Worksheets(1).Cells(row_deb, 1) & Left(FilesName(i), Len(FilesName(i)) - 4)
        j = j + 1
        For k = row_deb + 1 To row_fin - 1
          Workbooks("Synthese.xls").Worksheets(1).Cells(j, 1) = Worksheets(1).Cells(k, 1)
          j = j + 1
        Next k
     
      Next i
     
      ' copie des "Anomalies détectées" dans fichier client
      j = 1
     
      For i = 1 To nbFiles
     
        Workbooks(i + 1).Activate
        Worksheets(1).Activate
     
        row_deb = 1
        While Worksheets(1).Cells(row_deb, 1) <> Strg_2
          row_deb = row_deb + 1
        Wend
     
        row_fin = row_deb + 1
        While Worksheets(1).Cells(row_fin, 1) <> Strg_5
          row_fin = row_fin + 1
        Wend
     
        Workbooks("Synthese.xls").Worksheets(2).Cells(j, 1) = Worksheets(1).Cells(row_deb, 1) & Left(FilesName(i), Len(FilesName(i)) - 4)
        j = j + 1
        For k = row_deb + 1 To row_fin - 1
          Workbooks("Synthese.xls").Worksheets(2).Cells(j, 1) = Worksheets(1).Cells(k, 1)
          j = j + 1
        Next k
     
      Next i
     
      'fermeture des fichiers
      ScreenUpdating = False
      For i = 1 To nbFiles
        Workbooks(FilesName(i)).Close
      Next i
     
    End Sub
    [Balises "Code" ajoutées par AlainTech]
    [Merci d'y penser à l'avenir.]

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Points : 35
    Points
    35
    Par défaut suite ce que je voudrais avoir!
    En fait je voudrais obtenir un programme de ce type sauf que
    cela bugue lorque je fais les copies dans le fichier actif!

    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    Function Filesname(sPath As String)
        Dim v() As String
        v = Split(sPath, "\")
        Filesname = v(UBound(v))
    End Function
     
    Public Sub editSynthese()
     
        Dim j, row_deb, row_fin As Integer
        Dim compteur As Long
        Dim LFIF() As Variant
        Dim chemin, Strg_2, Strg_4, Strg_5 As String
     
        Strg_2 = "Anomalies détectées :"
        Strg_4 = "Synthèse :"
        Strg_5 = "Fin Synthèse"
     
        'Choix du chemin
        chemin = ActiveWorkbook.path
     
        'mise en place de la liste de fichiers
        With Application.FileSearch
            .NewSearch
            .FileType = msoFileTypeExcelWorkbooks
            .SearchSubFolders = False
            .LookIn = ActiveWorkbook.path
            If .Execute() > 1 Then
                a = 0
                ReDim Preserve LFIF(.FoundFiles.Count - 1)
                '(-1) car array(0) (-1) car ce fichier est déjà ouvert
                compteur = .FoundFiles.Count
                For i = 1 To compteur
                    If .FoundFiles(i) <> ActiveWorkbook.FullName Then
                        LFIF(a) = .FoundFiles(i)
               '         MsgBox LFIF(a)
                '        Worksheets(1).Cells(i, 1) = .FoundFiles(i)
     
               '         MsgBox Filesname(.FoundFiles(i))
     
                        'ouverture des fichiers
     
                        Application.DisplayAlerts = False
                        Workbooks.Open LFIF(a)
                        a = a + 1
                    Else
                    End If
     
                    ' copie des "Evénements importants" dans fichier cabinet
     
                    j = 1
     
                    Workbooks(Filesname(.FoundFiles(i))).Activate
                    Worksheets(1).Activate
     
                    row_deb = 1
                    While Worksheets(1).Cells(row_deb, 1) <> Strg_4
                        row_deb = row_deb + 1
                    Wend
     
                    row_fin = row_deb + 1
                    While Worksheets(1).Cells(row_fin, 1) <> Strg_2
                        row_fin = row_fin + 1
                    Wend
     
                    Workbooks(ActiveWorkbook.FullName).Worksheets(1).Cells(j, 1) = Worksheets(1).Cells(row_deb, 1) & Left(LFIF(i), Len(LFIF(i)) - 4)
                    j = j + 1
                    For k = row_deb + 1 To row_fin - 1
                        Workbooks(ActiveWorkbook.FullName).Worksheets(1).Cells(j, 1) = Worksheets(1).Cells(k, 1)
                        j = j + 1
                    Next k
     
                Next i
     
            Else
                MsgBox ("Aucun autre fichier que celui-ci")
            End If
     
     
        End With
     
        ' copie des "Anomalies détectées" dans fichier cabinet
     
     
        j = j + 2
     
        For i = 1 To compteur
     
            Workbooks(ActiveWorkbook.FullName).Activate
            Worksheets(1).Activate
     
            row_deb = 1
            While Worksheets(1).Cells(row_deb, 1) <> Strg_2
                row_deb = row_deb + 1
            Wend
     
            row_fin = row_deb + 1
            While Worksheets(1).Cells(row_fin, 1) <> Strg_5
                row_fin = row_fin + 1
            Wend
     
            Workbooks(ActiveWorkbook.FullName).Worksheets(1).Cells(j, 1) = Worksheets(1).Cells(row_deb, 1) & Left(LFIF(i), Len(LFIF(i)) - 4)
            j = j + 1
            For k = row_deb + 1 To row_fin - 1
                Workbooks(ActiveWorkbook.FullName).Worksheets(1).Cells(j, 1) = Worksheets(1).Cells(k, 1)
                j = j + 1
            Next k
     
        Next i
     
        ' copie des "Anomalies détectées" dans fichier client
        j = 1
     
        For i = 1 To compteur
     
            Workbooks(i + 1).Activate
            Worksheets(1).Activate
     
            row_deb = 1
            While Worksheets(1).Cells(row_deb, 1) <> Strg_2
                row_deb = row_deb + 1
            Wend
     
            row_fin = row_deb + 1
            While Worksheets(1).Cells(row_fin, 1) <> Strg_5
                row_fin = row_fin + 1
            Wend
     
            Workbooks(ActiveWorkbook.FullName).Worksheets(2).Cells(j, 1) = Worksheets(1).Cells(row_deb, 1) & Left(LFIF(i), Len(LFIF(i)) - 4)
            j = j + 1
            For k = row_deb + 1 To row_fin - 1
                Workbooks(ActiveWorkbook.FullName).Worksheets(2).Cells(j, 1) = Worksheets(1).Cells(k, 1)
                j = j + 1
            Next k
     
        Next i
     
        'fermeture des fichiers
        ScreenUpdating = False
        For i = 1 To nbFiles
            Workbooks(LFIF(i)).Close
        Next i
     
    End Sub
    [Balises "Code" ajoutées par AlainTech]
    [Merci d'y penser à l'avenir.]

  8. #8
    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
    tiens si j'ai bien compris tu ve parcourir automatiquement la liste des fichiers présent sur le même répertoire que ton classeur de synthése qui contient cette macro ..: voici le code pour initialiser ton tableau "FilesName"

    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
    Dim FilesName() As String
    Dim nbFiles As Integer
    Dim st As String
    nbFiles = 0
    ' emplacement des fichiers '  Répertoire Racine ? le répertoire du fichier macro?
    Path = ThisWorkbook.Path
    st = Dir(Path & "\*.xls")
    While st <> ""
     If st <> ThisWorkbook.Name Then
        nbFiles = nbFiles + 1
        ReDim Preserve FilesName(1 To nbFiles) As String
        FilesName(nbFiles) = st
        Debug.Print "Rajout Fichier  : " & st
      Else
       Debug.Print "Fichier courant" & st & " ignoré"
      End If
     st = Dir
     DoEvents
     Wend

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Points : 35
    Points
    35
    Par défaut
    oui c'est ca merci et pour copier les differents fichiers
    dans le fichier de synthèse tu fais comment?

  10. #10
    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
    ben le reste de ta macro... ( que j'ai juste lu en travers..) ne change pas ... ..tu effectue toujour ta boucle for i = 1 to nbFiles...

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Points : 35
    Points
    35
    Par défaut suite
    Ah ok je garde mon programme original et j'insère ton petit
    programme à l'intérieur c'est ca?

  12. #12
    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
    voila... tu remplace dans ton programme l'initialisation de ton tableau .

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Points : 35
    Points
    35
    Par défaut plantage
    En fait il manque un \ avant le nom de mon fichier


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Workbooks.Open path & FilesName(i)
    cela plante ici

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Points : 35
    Points
    35
    Par défaut voici le programme
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    Public Sub editSynthese()
     
        Dim j, row_deb, row_fin As Integer
     
        Dim path As String
        Dim Strg_2 As String
        Dim Strg_4 As String
        Dim Strg_5 As String
     
        Strg_2 = "Anomalies détectées :"
        Strg_4 = "Synthèse :"
        Strg_5 = "Fin Synthèse"
     
        Dim nbFiles As Integer
        Dim FilesName() As String
        Dim st As String
        nbFiles = 0
     
        ' emplacement des fichiers dans le répertoire racine
     
     
        path = ThisWorkbook.path
        st = Dir(path & "\*.xls")
        While st <> ""
         If st <> ThisWorkbook.Name Then
            nbFiles = nbFiles + 1
            ReDim Preserve FilesName(1 To nbFiles) As String
            FilesName(nbFiles) = st
            Debug.Print "Rajout Fichier  : " & st
          Else
           Debug.Print "Fichier courant" & st & " ignoré"
          End If
         st = Dir
         DoEvents
         Wend
     
     
     
     
     
     
        'ouverture des fichiers
        Application.DisplayAlerts = False
        For i = 1 To nbFiles
            Workbooks.Open path & FilesName(i)
        Next i
     
        j = 1
     
        ' copie des "Evénements importants" dans fichier cabinet
        For i = 1 To nbFiles
     
            Workbooks(FilesName(i)).Activate
            Worksheets(1).Activate
     
            row_deb = 1
            While Worksheets(1).Cells(row_deb, 1) <> Strg_4
               row_deb = row_deb + 1
            Wend
     
            row_fin = row_deb + 1
            While Worksheets(1).Cells(row_fin, 1) <> Strg_2
               row_fin = row_fin + 1
            Wend
     
            Workbooks("Synthese.xls").Worksheets(1).Cells(j, 1) = Worksheets(1).Cells(row_deb, 1) & Left(FilesName(i), Len(FilesName(i)) - 4)
            j = j + 1
            For k = row_deb + 1 To row_fin - 1
                Workbooks("Synthese.xls").Worksheets(1).Cells(j, 1) = Worksheets(1).Cells(k, 1)
                j = j + 1
            Next k
     
        Next i
     
         ' copie des "Anomalies détectées" dans fichier cabinet
     
     
        j = j + 2
     
        For i = 1 To nbFiles
     
            Workbooks(FilesName(i)).Activate
            Worksheets(1).Activate
     
            row_deb = 1
            While Worksheets(1).Cells(row_deb, 1) <> Strg_2
               row_deb = row_deb + 1
            Wend
     
            row_fin = row_deb + 1
            While Worksheets(1).Cells(row_fin, 1) <> Strg_5
               row_fin = row_fin + 1
            Wend
     
            Workbooks("Synthese.xls").Worksheets(1).Cells(j, 1) = Worksheets(1).Cells(row_deb, 1) & Left(FilesName(i), Len(FilesName(i)) - 4)
            j = j + 1
            For k = row_deb + 1 To row_fin - 1
                Workbooks("Synthese.xls").Worksheets(1).Cells(j, 1) = Worksheets(1).Cells(k, 1)
                j = j + 1
            Next k
     
        Next i
     
        ' copie des "Anomalies détectées" dans fichier client
        j = 1
     
         For i = 1 To nbFiles
     
            Workbooks(i + 1).Activate
            Worksheets(1).Activate
     
            row_deb = 1
            While Worksheets(1).Cells(row_deb, 1) <> Strg_2
               row_deb = row_deb + 1
            Wend
     
            row_fin = row_deb + 1
            While Worksheets(1).Cells(row_fin, 1) <> Strg_5
               row_fin = row_fin + 1
            Wend
     
            Workbooks("Synthese.xls").Worksheets(2).Cells(j, 1) = Worksheets(1).Cells(row_deb, 1) & Left(FilesName(i), Len(FilesName(i)) - 4)
            j = j + 1
            For k = row_deb + 1 To row_fin - 1
                Workbooks("Synthese.xls").Worksheets(2).Cells(j, 1) = Worksheets(1).Cells(k, 1)
                j = j + 1
            Next k
     
        Next i
     
         'fermeture des fichiers
        ScreenUpdating = False
        For i = 1 To nbFiles
            Workbooks(FilesName(i)).Close
        Next i
     
     
    End Sub
    [Balises "Code" ajoutées par AlainTech]
    [Merci d'y penser à l'avenir.]

  15. #15
    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 Re: plantage
    Citation Envoyé par max2245
    En fait il manque un \ avant le nom de mon fichier


    Workbooks.Open path & FilesName(i)

    cela plante ici
    et bien tu rajoute le \ ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Workbooks.Open path & "\" & FilesName(i)

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Points : 35
    Points
    35
    Par défaut Cool ca marche dans tous les repertoires
    Bon va falloir que je t'offre le champagne!

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Points : 35
    Points
    35
    Par défaut C'est quoi le debug print?
    Tu peux m'expliquer grosso modo pk tu fais ca?
    Debig print, etc

  18. #18
    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
    non c'est debug.print... , tu peu supprimer ces lignes... mais elles sont pratique pour debuggage.. le texte est affiché dans fenêtre Exécution de VBA..

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

Discussions similaires

  1. Comment Enregistrer Une page WEB En VBA sous excel
    Par BEMI dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/05/2009, 23h15
  2. Extraire des données d'une page Web en VBA sous Excel
    Par BEMI dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/05/2009, 06h24
  3. VBA sous excel - Macro - Création de feuilles à partir d'une liste
    Par Sylione dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/05/2007, 09h42
  4. Identifier un caractère d'une text box par VBA sous excel
    Par bibi5883 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/04/2007, 08h57
  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