Boucle sur les onglets dans deux classeurs différents

Bonjour à tous,

Après plusieurs recherches sans grandes conclusions, je sollicite votre aide

Je souhaiterai croisées des données entre 2 classeurs, un classeur source contenant les données à extraire et un classeur cible qui récupérerai les données suivant des conditions.

Je voudrais faire une première boucle, pour parcourir les onglets du classeur cible, puis une deuxième boucle imbriquée qui parcourrai les onglets du classeur source.

Si le nom de l'onglet du classeur cible correspond à celui du classeur source alors lancer la macro pour extraire les données sinon passer à l'onglet du fichier source suivant.

Une fois cette boucle finie, on passe au deuxième onglet du fichier cible et ainsi de suite.

C'est sûrement très simple mais j'avoue que je patine un peu...

Merci d'avance pour votre aide!

BZH83

6source.xlsm (9.01 Ko)
5cible.xlsm (15.40 Ko)

Bonjour,

Pourquoi deux boucles ?

Une boucle sur la source, on récupère le nom de la feuille, on teste si elle existe sur cible si OK on copie les données, si non on copie colle la feuille ou tout autre chose, et on passe à la feuille source suivante...

@ bientôt

LouReeD

Bonjour LouReeD,

C'est en effet c'est plus simple comme ça ^^

Je vais voir comment faire ça alors

Merci!

BZH83

J'ai visiblement encore besoin de ton aide parce que je n'arrive pas à récupérer le nom des feuilles de l'autre classeur...

Ça me dit "incompatibilité de type" pour ça : Set wsS = Workbooks("Source.xlsm").Worksheets()

Pourrais-tu me débloquer ?

Sub CroisementDonnees()

Application.ScreenUpdating = False

Dim wsS As Worksheet 'fichier source

Dim wsC As Worksheet 'fichier cible

Dim ws As Worksheet

Dim S As Range 'plage fichier source

Dim C As Range 'plage fichier cible

Set wsS = Workbooks("Source.xlsm").Worksheets()

Set wsC = Workbooks("Cible.xlsm").Worksheets()

For Each ws In Workbooks("Cible.xlsm").Sheets

If ActiveSheets.Name <> wsS.Name Then

GoTo fin

Else

For Each C In wsC.Range("A2:A" & wsC.Range("A" & Rows.Count).End(xlUp).Row)

Set S = wsS.Columns("A").Find(C, , xlValues, xlWhole)

If Not S Is Nothing Then

S.Offset(0, 1).Copy C.Offset(0, 1)

Else

C.Offset(0, 1).Value = "Manquant"

End If

Next C

Set wsC = Nothing: Set wsS = Nothing

End If

fin:

Next ws

End Sub

Merci!

BZH83

Rechercher des sujets similaires à "boucle onglets deux classeurs differents"