Lier les données de plusieurs fichiers et les synthétiser ?

Bonjour

Tu écris :

j'aime bien comprendre ce que je fais, maintenant si c'est trop complexe à expliquer, pas de souci…

Si tu n’as aucune notion de VBA, je te conseille vivement de regarder l’excellente formation que fournit le forum : c’est en page d’accueil : ‘’COURS VBA ‘’

Tu ne le regretteras pas.

A demain !

A ma courte honte je n'avais pas vu les cours proposés ! Sur tes conseils je viens d'y jeter un coup d'oeil rapide et cela me semble très bien fait, accessible pour les novices ...Parfait pour moi ! Je m'y attarderai davantage une prochaine fois

Et qui sait, peut être qu'un jour c'est moi qui serais capable d'aider les autres.....mais je n'en suis pas encore là.

Me revoilà. Alors, comment dire...je suis contente car je suis parvenue à surmonter quelques difficultés du fait d'une méthodologie inadaptée à la version excel dont je dispose au bureau, mais ça reste un echec au sens où ça ne fonctionne pas, je n'ai qu'un message d'erreur...voyons cela ensemble :

1- 2- Sur une autre feuille de ce fichier, (ou sur la même feuille, d'ailleurs ...), tu crées une zone de texte qui sera ton bouton de commande :

« Insertion (dans le bandeau) - Texte - Zone de texte » et tu la dessine avec la souris, index enfoncé

.

--> Pour moi, il n'y avait pas cette option, après recherche complémentaire dans l'aide d'excel, j'ai du me rendre sur « dessin » puis « zone de texte »

Tu y saisie un nom ex : « Mise à jour des importations de fichiers »

3- Tu fais un clic gauche, avec la zone de texte toujours sélectionnée. Une fenêtre s'ouvre :

4- Tu cliques sur ''Affecter une macro''

5- Tu écrases le nom proposée en y mettant ton propre nom de macro. Ex : Importations (ou autre chose mais en un seul mot)

--> Là encore, ma version doit différer de la tienne puisque j'ai du, à nouveau en cherchant dans l'aide excel, utiliser la méthodologie suivante : cliquer sur « outils » puis « Personnaliser », dans commande, sélectionner « Macro », cliquer sur « bouton personnalisé » (qui ressemble à un émoticone smile) et le déplacer dans ma boîte à outils

6- Tu cliques sur ''Nouvelle'' Une feuille macro s'ouvre alors : elle est vierge (il y avait déjà la notion « et c'est là que tu vas devoir saisir le code ci-dessous.

-->Sur ma page, il y avait déjà Sub et End Sub. Je les ai supprimé afin de saisir ta propre formule. Je ne sais pas si j'ai bien fait...

Fais très attention à cette saisie. La moindre virgule ou le moindre point en plus ou en moins et c'est le bug assuré.

Seules les parties en vert, qui sont précédées d'une apostrophes sont ignorées de la macro et sont donc facultatives.

Quand tu as fini, retourne sur la feuille où se trouve le bouton que tu as créé et clique sur celui-ci

Si tout va bien, la macro se déclenche alors et les 4 feuilles s'ouvrent et se referment une après l'autre et les données sont mises à la suite sur la feuille ''Dossiers arrivés'' de ton Récap.

--> Jusque là, tout se passait sans doute trop bien, car en cliquant sur le bouton personnalisé, j'ai vu apparaître un message " erreur d'exécution « 1004 » " avec en motif une info sur le fait que le chemin d'accès à mon tableau A est « introuvable »...etc

Alors il me propose "fin, débogage ou aide" et si je tente de déboguer, j'arrive dans la macro avec ce passage surligné en jaune :

Set classeur = Workbooks.Open(chemin & nomFichier)

Une idée d'où peut provenir le couac ? Dans l'aide, ils suggèrent une erreur de nom de fichier, d'adresse du fichier mais j'ai tout vérifié X fois je les ai même supprimé, recréée et fait de même avec la macro, mais rien n'y a fait. Là, ça dépasse cruellement mes compétences...je te passe le relais !

Ah oui, encore une chose qui m'a un peu fait tiquer. Lorsque j'ai copié ma macro, les phrases en vert ou en bleu sont restées dans ces couleurs, mais les paramètres en rouge/magenta, sont devenus noirs sans possibilité d'en changer la couleur..notamment les adresses des fichiers.. Est-ce normal ? Serait-ce la source de mon problème ?

A vous les studios...

Bonjour

Je vais en prendre l’habitude : désormais, chez moi, tous les soirs, un ange passe…

Quel plaisir !

Tu t’es débrouillée de façon magistrale.

D’après la description de tes manip, au bureau la version Excel que tu as est Excel 2003.

J’aurais dû de le demander, je te prie de m’excuser car j’aurais pu mieux te guider.

Avec Excel, il y a plusieurs façons d’arriver au bon résultat. Mais il y en a des millions de se tromper.

Tu es arrivée à retranscrire la macro et à la faire tourner : Bravo !

Et si elle a buguer sur l’instruction que tu me dis, je trouve cela encourageant. C’est le point le plus délicat à adapter d’un poste de travail à un autre.

Il s’agit en effet d’un problème d’adresse.

Alors, je ne vois qu’une solution : fais la manip que je t’ai indiquée avec la formule CELLULE(‘’Nomfichier’’), imprime la feuille sur laquelle elle se trouve (après copier-collage spécial valeur) et recopie la dans ton prochain message, sans te tromper.

Je te retournerai alors la ligne exacte qu’il faut mettre dans la macro : ce n’est pas tout à fait pareil. Il y a en particulier un crochet qui doit disparaître et qu’en général on oublie d’enlever.

Courage ! On est sur la bonne voie !

A demain !


Complément :

Pour les couleurs, ne t'inquiète pas, tout est normal.

On ne peut pas modifier les couleurs du texte dans les macros. Seule la couleur vert apparaît après une apostrophe.

Il n'y a que quand on fait une copie et un collage dans les messages du forum que d'autres couleurs apparaissent.

Mais sur le forum, il y a des cracks !

D’après la description de tes manip, au bureau la version Excel que tu as est Excel 2003.

J’aurais dû de le demander, je te prie de m’excuser car j’aurais pu mieux te guider.

Non non je n'excuse pas car il n'y a rien à pardonner ne t'en fais pas, il faut bien que j'apprenne à me débrouiller aussi! Et puis tu me consacre déjà beaucoup de ton temps que j'use et abuse de ta gentillesse.

D'ailleurs, c'est moi ta prof ce soir,pour changer! En effet, pour connaître la version excel utilisée, il y a un paramètre spécial du forum permettant de l'indiquer sous son profil. Ce que j'ai fait lors de mon inscription et si tu avais davantage regardé l'ange qui passait ....(je te taquine bien sûr, j'aime plaisanter!).

Mais trêve de plaisanterie , tu parles d'un crochet à retirer, lequel ? Etant donné que je serai en congé lundi et mardi ça va retarder mes tests d'autant. Alors s'il s'agit juste d'une histoire de crochet je peux toujours essayer de l'ôter moi même dès demain...sauf si tu penses que ça demande plus de compétences que ce que je ne peux avoir bien sûr!

A la réflexion, essaie de modifier la macro en ajoutant l’extension :

        dossierA = "C:\Users\Guy Blancher\Desktop\Un ange passe\Dossier A\test statistique A.xls"
        dossierB = "C:\Users\Guy Blancher\Desktop\Un ange passe\Dossier B\test statistique B.xls"
        dossierC = "C:\Users\Guy Blancher\Desktop\Un ange passe\Dossier C\test statistique C.xls"
        dossierD = "C:\Users\Guy Blancher\Desktop\Un ange passe\Dossier D\test statistique D.xls"

et en simplifiant l’instruction qui bugue :

Set classeur = Workbooks.Open(chemin & nomFichier)

Qui devient :

Set classeur = Workbooks.Open(nomFichier)

PS : Je ne savais pas que les anges prenaient des congés. Mon ange gardien doit souvent en prendre !

Bye !

Me revoilà, avec le verdict tant attendu...

alors..alors..c'est plutôt réussi mais pas complétement.

j'ai réalisé les modifications que tu m'as conseillé ci-dessus, et là, ô miracle, plus de message automatique d'erreur, en cela, c'est une réussite.

En ayant ôté les crochets et la notion de dossiers arrivés au bout de mon chemin en xls (c'est à dire le nom de la feuille d'où j'ai obtenu le chemin d'accès à mes divers fichiers sources), et en modifiant :

Set classeur = Workbooks.Open(chemin & nomFichier)

par :

Set classeur = Workbooks.Open( nomFichier)

tout à bien fonctionné ou presque. C'est à dire que les diverses informations contenues dans mes fichiers sources ce sont reportées dans mon fichier récap mais...partiellement.

Je m'explique. Autant la feuille "dossiers complets" a bien repris l'ensemble des données concernées et avec une mise à jour lorsque le fichier source est réalimenté, autant la feuille "dossiers arrivés" les a partiellement repris..il me manque des données, sans que je ne puisse m'expliquer pourquoi et il n'y a pas de mise à jour auto des nouvelles données.

J'ai cependant constaté qu'en général, seules les premières lignes des feuilles (dossiers arrivés) des 4 fichiers sources sont reprises. Mais là encore, de manière aléatoire. Parfois les 4 premières lignes, pour un autre fichier il ne reprendra que les 3 premières lignes..

As-tu une idée d'où ce problème peut émaner ?

j'ai pensé à une chose en regardant de plus près ta formule. Il y est fait mention des feuilles 2 et 3, or mes données sont sur les feuilles 1 (dossiers arrivés) et 2 (dossiers complets). Cela peut-il impacter le résultat ? Pourtant les données relatives aux dossiers complets sont corrects...

Voilà, je n'ai pas pu me consacrer davantage à ces tests, mais je pense avoir pas mal dégrossi la chose.

Aaaah, un peu de repos bien mérité...je vais te laisser tranquille pour au moins 4 bonnes journées ^^ (ça du bon quand un Ange prend des congés !) tu vas pouvoir souffler.

Bonsoir

Quatre jours sans ange, dur ! dur !

Mais pour ce qui nous concerne, c'est super ! On progresse !

Si tu te mets à la macro, tu me dépasseras rapidement car tu as tout pour réussir.

Il faut dire que je ne suis pas aussi performant que je peux le paraître : étourdi, impatient, imprudent et j’en passe….

La preuve ?

Après la lecture de tes commentaires sur les résultats obtenus, j’ai relu attentivement la macro et j’ai découvert une erreur, que pourtant je fais souvent. Je devrais donc y faire attention. Mais non, je fonce…. dans le mur.

Donc, modifie le code en ajoutant la partie surlignée et cela devrait marcher mieux.

A la semaine prochaine donc et bon congé !

Bye !

            If nomFichier <> ThisWorkbook.Name Then
                Set classeur = Workbooks.Open(nomFichier)
                Sheets("Dossiers complets").Activate
                lgn = .Sheets(Feuil2.Name).Range("A" & Rows.Count).End(xlUp)(2).Row
                Sheets("Dossiers arrivés").Range("A2:E" & Sheets("Dossiers arrivés").Range("A" & Rows.Count).End(xlUp).Row).Copy .Sheets(Feuil2.Name).Range("A" & lgn)
                lgn = .Sheets(Feuil3.Name).Range("A" & Rows.Count).End(xlUp)(2).Row
                Sheets("Dossiers complets").Range("A2:F" & Sheets("Dossiers complets").Range("A" & Rows.Count).End(xlUp).Row).Copy .Sheets(Feuil3.Name).Range("A" & lgn)
                classeur.Close
            End If

L'élève dépasser le maître ? ce n'est pas pour demain, je peux te rassurer. J'aime bien apprendre, c'est vrai, mais ça prend du temps car assez complexe tout de même, et l'erreur est vite faite, la preuve ! Donc tu as encore de beaux jours devant toi avant que je ne t'en apprenne !

Je prends note des modifications à apporter et vais tenter de les reproduire mercredi si j'ai un peu de temps à consacrer à mes tests.

Si tu penses que 4 jours sans l'enquiquineuse que je suis, c'est trop long, je peux te mettre au défi pour la suite. En effet, dans l'intitulé de mon topic j'ai indiqué : lier les données de plusieurs fichiers, ce que nous parvenons maintenant à faire, mais aussi les synthétiser pour les statistiques que je dois en retirer et là, tout reste à faire ^^

Petite question subsidiaire : je me souviens que dans ma toute première macro, pour assurer une mise à jour automatique de certaines données, j'avais intégré la notion "Application.volatile" or ici, je n'ai pas eu besoin de le faire (j'avais tenté de l'inclure lorsque cela ne fonctionnait pas, mais ça n'avait rien arrangé), il y a donc d'autres moyens de codage pour obtenir cette fameuse MAJ auto ? Laquelle est-elle dans cette macro ?

Bon, tu as le temps de répondre à mes interrogations car demain je compte me consacrer à d'autres tests...mais culinaire cette fois.

Les affaires reprennent...après quelques jours de répit, je reviens à la charge avec mon problème de liaisons de fichiers !

Alors..après les menues modifications que tu m'as proposées dans ton dernier message, plus de souci d'oubli d'informations, tout fonctionne impeccablement bien !

J'ai donc poursuivi ma quête - à l'aide des données ainsi regroupées - en ouvrant une 3ème feuille « statistiques » pour synthétiser les données.

Aussi, pour calculer le nombre de demandes de types « 1ere demande » et « nvelle dde » j’ai utilisé la formule :

=NB.SI('Dossiers arrivés'!C:C;"nvelle dde")+NB.SI('Dossiers arrivés'!C:C;"1ere demande")

Et pour les seuls renouvellements :

=NB.SI('Dossiers arrivés'!C:C;"renouvellement")

Cela fonctionne bien. Cependant, il me manque le critère « date » que je ne sais pas comment intégrer à ma formule (cela devant être calculé en fonction des 12 mois de l’année --> Nombre de dossiers 1ere demande/nvelle dde reçues en janvier,idem pour le renouvellement, puis même principe pour février, idem pour tout le reste de l'année).

Une idée, suggestion, solution ? En recherchant un peu, j'ai vu la fonction NB.SI.ENS, mais cela ne semble pas exister sous excel 2003 (je ne l'ai pas trouvé parmi les fonctions proposées par le menu).

Voilà, à part ça, tout va bien...! Un grand MERCI pour le travail accompli jusque là !

Bonjour

Mon ange est revenu ! Un parfum de paradis !

Pour les statistiques, je suis reparti de ton tout premier message.

La quantité de données y est un peu maigrichonne mais j’ai fait avec.

Tu me parles de formules : pour ce qui me concerne, les formules tarabiscottées et moi, on est un peu en froid. Je leur préfère les macros.

Alors, je te joins le fichier ci-joint, à tester.

Tu n’auras qu’à l’adapter sur ton fichier en y copiant la macro : maintenant, tu sais faire …

Bye !

Je sais faire...lorsque je peux lire la macro ! En effet, toujours le même problème, je ne peux pas ouvrir le fichier avec ma version d'excel. A défaut je peux avoir la macro comme nous procédions jusque là ?

Sinon, ce n'est pas grave, pour la formule/fonction je peux essayer de faire de nouveaux tests avec des conditions..je finirai peut-être par trouver !

Suis-je distrait !

C'est comme en cas de panne électrique, on actionne toujours l'interrupteur pour allumer !

Voilà la macro.

Bon courage : elle est un peu longue ....

Bye !

Option Explicit

Dim mois, ln, lgn, i, nMois, feuilles, f

Sub MiseAjour()

    Range("B4:M" & Range("A" & Rows.Count).End(xlUp).Row).ClearContents
    mois = Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre")
    For lgn = 4 To Range("A" & Rows.Count).End(xlUp).Row
        For i = 1 To 11
            If Range("A" & lgn) = mois(i) Then
                nMois = i + 1
                Exit For
            End If
        Next i

            With Sheets("Dossiers arrivés")
                For ln = 2 To .Range("A" & Rows.Count).End(xlUp).Row
                    If Month(.Range("C" & ln)) = nMois Then
                        If .Range("D" & ln) = "renouvellement" Then
                            If .Range("E" & ln) = "Dom" Then
                                Range("H" & lgn) = Range("H" & lgn) + 1
                                Range("J" & lgn) = Range("J" & lgn) + 1
                            Else
                                Range("I" & lgn) = Range("I" & lgn) + 1
                                Range("J" & lgn) = Range("J" & lgn) + 1
                            End If
                        Else
                            If .Range("E" & ln) = "Dom" Then
                                Range("B" & lgn) = Range("B" & lgn) + 1
                                Range("D" & lgn) = Range("D" & lgn) + 1
                            Else
                                Range("C" & lgn) = Range("C" & lgn) + 1
                                Range("D" & lgn) = Range("D" & lgn) + 1
                            End If
                        End If
                    End If
                Next ln
            End With

            With Sheets("Dossiers complets")
                For ln = 2 To .Range("A" & Rows.Count).End(xlUp).Row
                    If Month(.Range("E" & ln)) = nMois Then
                        If .Range("C" & ln) = "renouvellement" Then
                            If .Range("D" & ln) = "Dom" Then
                                Range("K" & lgn) = Range("K" & lgn) + 1
                                Range("M" & lgn) = Range("M" & lgn) + 1
                            Else
                                Range("L" & lgn) = Range("L" & lgn) + 1
                                Range("M" & lgn) = Range("M" & lgn) + 1
                            End If
                        Else
                            If .Range("D" & ln) = "Dom" Then
                                Range("E" & lgn) = Range("E" & lgn) + 1
                                Range("G" & lgn) = Range("G" & lgn) + 1
                            Else
                                Range("F" & lgn) = Range("F" & lgn) + 1
                                Range("G" & lgn) = Range("G" & lgn) + 1
                            End If
                        End If
                    End If
                Next ln
            End With
    Next lgn

End Sub

Quelle rapidité !

Par contre, une fois n'est pas coutume, j'ai une petite question subsidiaire.

Sachant que mon nouveau tableau est en feuille 3 du fichier contenant notre précédente macro, vais je pouvoir cumuler 2 macros ? Et si oui, comment intégrer cette nouvelle macro à la précédente ?

Un Ange Passe... a écrit :

comment intégrer cette nouvelle macro à la précédente ?

Tout en haut de la feuille de macro, tu ajoutes les nouvelles variables ; S’il y en a 2 les mêmes, tu en supprime une. Tu peux d’ailleurs supprime la variable f dont je n’ai pas eu besoin

Cela donnera :

 Option Explicit

Dim wb, chemin, nomFichier, classeur, derLn, lgn, i
Dim dossierA, dossierB, dossierC, dossierD, dossier

Dim mois, lni, nMois, feuilles

Puis, tu colles la nouvelle macro à la suite de la première :

…
…
      For i = 0 To 3
            nomFichier = dossier(i)
            If nomFichier <> ThisWorkbook.Name Then
                Set classeur = Workbooks.Open(chemin & nomFichier)
                Sheets("Dossiers complets").Activate
                lgn = .Sheets(Feuil2.Name).Range("A" & Rows.Count).End(xlUp)(2).Row
                Sheets("Dossiers arrivés").Range("A2:E" & Range("A" & Rows.Count).End(xlUp).Row).Copy .Sheets(Feuil2.Name).Range("A" & lgn)
                lgn = .Sheets(Feuil3.Name).Range("A" & Rows.Count).End(xlUp)(2).Row
                Sheets("Dossiers complets").Range("A2:F" & Range("A" & Rows.Count).End(xlUp).Row).Copy .Sheets(Feuil3.Name).Range("A" & lgn)
                classeur.Close
            End If
        Next i
    End With
End Sub

Sub MiseAjour()

    Range("B4:M" & Range("A" & Rows.Count).End(xlUp).Row).ClearContents
    mois = Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre")
    For lgn = 4 To Range("A" & Rows.Count).End(xlUp).Row
        For i = 1 To 11
            If Range("A" & lgn) = mois(i) Then
                nMois = i + 1
                Exit For
            End If
        Next i

            With Sheets("Dossiers arrivés")
                For ln = 2 To .Range("A" & Rows.Count).End(xlUp).Row
                    If Month(.Range("C" & ln)) = nMois Then
                        If .Range("D" & ln) = "renouvellement" Then
                            If .Range("E" & ln) = "Dom" Then
                                Range("H" & lgn) = Range("H" & lgn) + 1
                                Range("J" & lgn) = Range("J" & lgn) + 1
                            Else
                                Range("I" & lgn) = Range("I" & lgn) + 1
                                Range("J" & lgn) = Range("J" & lgn) + 1
                            End If
                        Else
                            If .Range("E" & ln) = "Dom" Then
                                Range("B" & lgn) = Range("B" & lgn) + 1
                                Range("D" & lgn) = Range("D" & lgn) + 1
                            Else
                                Range("C" & lgn) = Range("C" & lgn) + 1
                                Range("D" & lgn) = Range("D" & lgn) + 1
                            End If
                        End If
                    End If
                Next ln
            End With

            With Sheets("Dossiers complets")
                For ln = 2 To .Range("A" & Rows.Count).End(xlUp).Row
                    If Month(.Range("E" & ln)) = nMois Then
                        If .Range("C" & ln) = "renouvellement" Then
                            If .Range("D" & ln) = "Dom" Then
                                Range("K" & lgn) = Range("K" & lgn) + 1
                                Range("M" & lgn) = Range("M" & lgn) + 1
                            Else
                                Range("L" & lgn) = Range("L" & lgn) + 1
                                Range("M" & lgn) = Range("M" & lgn) + 1
                            End If
                        Else
                            If .Range("D" & ln) = "Dom" Then
                                Range("E" & lgn) = Range("E" & lgn) + 1
                                Range("G" & lgn) = Range("G" & lgn) + 1
                            Else
                                Range("F" & lgn) = Range("F" & lgn) + 1
                                Range("G" & lgn) = Range("G" & lgn) + 1
                            End If
                        End If
                    End If
                Next ln
            End With
    Next lgn

End Sub

Bye !


Et j'oubliais, pour lancer la nouvelle macro, tu te mets sur la feuille des statistiques (important) et tu fais :

"Outils - Macro - Macros - Mise à jour"

A demain !

Waow, tu n'as pas ménagé ta peine au vu de la formule obtenue! Je te donne un sacré boulot...et même pas payé en plus (parce que je le vaux bien ^^)!

ça complexifie les choses le fait d'imbriquer des formules. Je commençais à comprendre la première macro et me voilà re-perdue dans les affres de formules fastidieuses. J'ai encore du boulot!

Bon y aura plus qu'à tester tout ça. Je te tiens très vite au courant du résultat.

Même joueur... joue encore.

j'ai inséré la nouvelle macro, avec les modifications préconisées, pas de souci jusqu'à ce que je fasse la mise à jour et là, message d'erreur :

Erreur de compilation, variable non définie (Ln surligné par le débogeur et Mise à jour surligné en jaune)

For Ln = 2 To .Range("A" & Rows.Count).End(xlUp).Row

Si je tente un changement dans cette formule (j'ai tenté Lgn en lieu et place de Ln, à tout hasard), il note un nouveau message d'erreur, indiquant que "For" est déjà utilisé précédemment (ou une phrase similaire, de mémoire car je n'ai pas eu la présence d'esprit de le noter).

Une idée d'où peut provenir le problème ? D'autant que je risque d'avoir le même problème plus loin dans la macro (ici il s'agit de la partie concernant les dossiers arrivés, mais plus loin, on a la même formule utilisée pour les dossiers complets.

Bonjour

Ce que tu me décris n'est pas grave.

Pour la valeur de la variable non déclarée, la réparation est simple : il s'agit de l'ajouter à la liste, après les autres variables qui suivent un Dim, en tout début de macro

Mais changer Ln en Lgn ne peut que détraquer un peu plus le fonctionnement de la macro car Lgn est une autre variable, différente de Ln.

On va tout de même tenter quelque chose pour que je sache bien de quoi tu parles quand tu m'expliques , par exemple : "plus loin dans la macro..." Car je suis un peu perdu.

Imprime l'ensemble de la macro que tu as. Surligne les lignes où la macro s'arrête, éventuellement.

Puis, scanne les feuilles et envoie-moi les fichiers.

J'essaierai de voir d'où cela vient.

Ton employeur ne te l'interdit pas ?

Bye !

Oups, décidément, ce n'est pas mon jour...ça ira mieux demain. Je ne voulais aucunement "détraquer" ta macro et je n'ai évidemment pas sauvegardé la manipulation par laquelle j'ai changé le Ln en Lgn, voyant que cela ne fonctionnait pas (j'ai tenté, j'ai perdu, je ne prétends aucunement m'y connaître attention, mais parfois, sur un malentendu...!).

Du coup, j'ai remis la macro telle que tu me l'avais notée.

Lorsque j'écris : "[...] le même problème plus loin dans la macro [...]", je voulais dire que cette même formulation revient plus loin (voir les passages en jaune) :

With Sheets("Dossiers arrivés")

For ln = 2 To .Range ("A" & Rows.Count).End(xlUp).Row

If Month(.Range("C" & ln)) = nMois Then

If .Range("D" & ln) = "renouvellement" Then

If .Range("E" & ln) = "Dom" Then

Range("H" & lgn) = Range("H" & lgn) + 1

Range("J" & lgn) = Range("J" & lgn) + 1

Else

Range("I" & lgn) = Range("I" & lgn) + 1

Range("J" & lgn) = Range("J" & lgn) + 1

End If

Else

If .Range("E" & ln) = "Dom" Then

Range("B" & lgn) = Range("B" & lgn) + 1

Range("D" & lgn) = Range("D" & lgn) + 1

Else

Range("C" & lgn) = Range("C" & lgn) + 1

Range("D" & lgn) = Range("D" & lgn) + 1

End If

End If

End If

Next ln

End With

With Sheets("Dossiers complets")

For ln = 2 To .Range("A" & Rows.Count).End(xlUp).Row

Désolée...je vais reprendre les cours de VBA, histoire d'être plus performante dans mes explications.

Un Ange Passe... a écrit :

Désolée...je vais reprendre les cours de VBA, histoire d'être plus performante dans mes explications.

Bravo pour reprendre les cours VBA mais ne sois pas désolée, tes explications me vont très bien.

C’est moi qui vais moins bien.

En effet, il manque la variable ln dans la liste, rajoute-la :

 Option Explicit

Dim wb, chemin, nomFichier, classeur, derLn, lgn, i
Dim dossierA, dossierB, dossierC, dossierD, dossier

Dim mois, lni, nMois, feuilles,ln

Bye !

Rechercher des sujets similaires à "lier donnees fichiers synthetiser"