Bug sur code compilation fichiers

Bonjour à tous,

Après lecture de différents sujets, j'ai essayé de créer un code (grande première pour moi) afin de compiler différents fichiers xls mais qui comporte de nombreux bugs et imperfections.

Je me remets donc à vous pour pouvoir les résoudre.

J'ai un nombre non défini de fichiers xls dans un dossier "Fiches à compiler" dont les intitulés exacts ne sont pas connus.

Pour chacun des fichiers, je souhaite copier les cellules B3 à B34 de l'onglet "Fiche Annuaire AICM" pour les coller dans un fichier "Synthèse" (idéalement sous forme de lignes les unes en dessous des autres).

n.b. Les cellules à copier comportent tant du texte, des codes postaux, des numéros de téléphone et des emails.

Vous trouverez en pièce jointe un fichier .rar qui comporte le fichier de synthèse comportant la macro ainsi que des fichiers test à compiler.

Merci d'avance à celui / celle qui pourra m'aider, j'avoue avoir passer pas mal de temps dessus ne pas m'en sortir !

N'hésiter pas à me demander plus de précisions,

Cordialement,

Julien

Alors personne pour relever le défi ?

Ou mes explications méritent d'être préciser ....

En tous cas, j'ai essayé de bricoler le code et ça n'a rien donné.. J'ai vraiment besoin d'aide...

Bonjour,

Afin d'éviter les erreurs dans les formules, le plus sûr est d'ouvrir les fichiers, puis les refermer.

Cela sera un peu plus long, mais au moins, pas d'erreurs....

Essaie avec ce code :

Sub Recup()
Dim Fichier As String
Dim Chemin As String
Dim I As Byte
Dim DerLig As Long
Dim ThisWbk As Workbook
Application.ScreenUpdating = False

'adapter le chemin où se trouvent les classeurs
Chemin = "C:\Users\TonNom\Documents\Bug sur code compilation fichiers\Fiches à compiler\"
Set ThisWbk = ThisWorkbook
'récupère tous les classeurs Excel .xls (pas les autres, donc à adapter)
Fichier = Dir(Chemin & "*.xls")
    ThisWbk.Sheets("Feuil1").Range("A2:AG500").ClearContents
    'boucle sur tous les classeurs afin de récupérer les valeurs dans la feuille 1 ("Fiche Annuaire AICM")
    'adapter le nom des feuille
    Do While Fichier <> ""
        Workbooks.Open Chemin & Fichier
        With ThisWbk.Sheets("Feuil1")
            DerLig = .Cells(Rows.Count, 1).End(xlUp).Row + 1
            .Range("A" & DerLig).Value = Fichier
            For I = 1 To 32
                .Range("A" & DerLig).Offset(0, I).Value = Sheets("Fiche Annuaire AICM").Range("B" & I + 2).Value
            Next I
        End With
        Workbooks(Fichier).Close False
        'fichier suivant
        Fichier = Dir
    Loop
End Sub

Bon courage

Bonjour cousinhub,

Merci beaucoup pour ton retour. Le code fonctionne mais bug à partir du moment où il y a plus de 6 fichiers à compiler.... (j'en ai plus de 200)

Est ce que tu aurais une solution ?

Encore merci pour ton aide,

Julien

Re-,

Il n'y a aucune raison que ce code bug à partir du 6ème fichier....

Quelle est la raison du Bug? Le code?

A mon avis, l'erreur pourrait être causée par le nom de l'onglet du fichier nouvellement ouvert....

Est-ce que tes fichiers ont tous un onglet nommé "Fiche Annuaire AICM"?

@ te relire

En fait dès qu'il a plus de 7 fichiers à charger, ça fait planter le programme excel qui ne répond plus et que je dois redémarrer...

Je ne pense pas que ce soit lié aux fichiers à compiler puisque les titres des feuilles ne peuvent être modifiée et que quand je le fais par séries de 6, ça se passe sans soucis (sauf que c'est trop long et perd l'intérêt de la macro...).

Est que ça peut être lié au code qui demande trop de calcul à l'ordinateur ?

J'ai un ordinateur professionnel windows 7 qui tourne sans problème habituellement. En comparaison, le code initial bien qu'il reportait mal les informations mais ne faisait pas planter mon ordi.

En espérant pouvoir trouver la solution,

a+

Julien

Re-,

Tu peux essayer en rajoutant cette ligne :

    Sub Recup()
    Dim Fichier As String
    Dim Chemin As String
    Dim I As Byte
    Dim DerLig As Long
    Dim ThisWbk As Workbook
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    'adapter le chemin où se trouvent les classeurs
    Chemin = "C:\Users\TonNom\Documents\Bug sur code compilation fichiers\Fiches à compiler\"
    Set ThisWbk = ThisWorkbook
    'récupère tous les classeurs Excel .xls (pas les autres, donc à adapter)
    Fichier = Dir(Chemin & "*.xls")
        ThisWbk.Sheets("Feuil1").Range("A2:AG500").ClearContents
        'boucle sur tous les classeurs afin de récupérer les valeurs dans la feuille 1 ("Fiche Annuaire AICM")
       'adapter le nom des feuille
       Do While Fichier <> ""
            Workbooks.Open Chemin & Fichier
            With ThisWbk.Sheets("Feuil1")
                DerLig = .Cells(Rows.Count, 1).End(xlUp).Row + 1
                .Range("A" & DerLig).Value = Fichier
                For I = 1 To 32
                    .Range("A" & DerLig).Offset(0, I).Value = Sheets("Fiche Annuaire AICM").Range("B" & I + 2).Value
                Next I
            End With
            Workbooks(Fichier).Close False
            'fichier suivant
           Fichier = Dir
        Loop
    Application.Calculation = xlCalculationAutomatic
    End Sub

Concernant le mode de calcul (passage en manuel, puis remise en auto)

Peut-être?

Pour le coup ça fait directement planter excel, quelque soit le nombre de fiches à compiler....

Re-,

Je viens d'essayer avec 240 fichiers, et ça m'a mis 52 secondes pour faire la récap...(avec Excel 2010), et 15 secondes avec Excel 2003...

Donc?????

A part le fait que 2003 est plus rapide, je ne vois pas trop quoi dire....

Peut être que je m'y prends comme un pied pour recopier le code que tu m'as donné alors. Est ce que tu peux me transmettre le fichier xls que tu as testé où est intégrée la macro ?

Re-,

Mon fichier test :

Supprimé, mauvaise manip....

bon courage

..... Je suis vraiment désolé de faire mon boulet mais je pense que tu m'as envoyé le fichier contenant la macro initiale...

Ou sinon, les erreurs de reporting sont toujours présentes...

Re-,

Euh, le boulet, je me l'attribue sans aucun problème.......

Scuse...

23synthese-v3.xlsm (22.60 Ko)

J'espère que ça va fonctionner....

Ca a l'air de fonctionner quand les fiches sont correctement renseignés. Le problème vient du fait que certaines fiches ne le sont pas.... AHHH ! Ce qui fait planter le programme..

Si je peux abuser... Est qu'il y a des codes qui permettraient à la macro de ne pas prendre en compte les fiches pas correctement renseignées / modifiées et de les identifier ?

En tous cas, merci pour cette aide précieuse que tu m'as déjà apportée !

Re-,

qu'entends-tu par :

les fiches pas correctement renseignées / modifiées et de les identifier ?

Quel type de renseignement fait défaut? (nom onglet, .......)

@ te relire

J'ai découvert un fichier qui faisait forcement planter le programme, mais qui a été à priori mal enregistré (sur lequel s'affiche un bandeau message "mode protégé", "Office a détecté un problème lié à ce fichier. Sa modification peut endommager votre ordinateur").

Sinon j'ai l'impression que ma suite office est instable pk j'arrive à compiler des fichiers une première fois puis quand je les repasse, le programme plante.....

Je vais essayer de réinstaller ma suite office demain matin.

Merci pour ton aide en tous cas

Bonjour,

Je viens de la macro sur un autre ordinateur ayant office 2010 et le problème reste présent... Cependant si semblerait que les adresses mail et/ou n° de téléphone soit une source d'instabilité.

Je m'explique :

  • Sur un échantillon de 27 fiches à compiler, comportant des adresses mail et/ou n° de téléphone, le programme plante quand je veux toutes les compiler en même temps (j'arrive toutefois à les compiler une à une et par lot de 2-3 maximum).
  • En revanche, quand je supprime les adresses mail et n° de téléphone, je peux les compiler toutes en une seule fois...

Si ça peut aider à trouver une solution......

Bonjour,

Cependant si semblerait que les adresses mail et/ou n° de téléphone soit une source d'instabilité.

Ben, désolé, mais je n'ai jamais été confronté à ce problème....

Et je ne vois vraiment pas comment y remédier....

Désolé

Bonne journée

Ok, je vais de voire comment y remédier.

Merci encore pour ton aide,

Bonne journée

Rechercher des sujets similaires à "bug code compilation fichiers"