Extraction de données dans divers fichiers xls d'un même dossier

Bonjour à tous,

Je suis novice en VBA, et j'ai besoin de votre aide.

Mon objectif :

Insérer dans des cases déterminées d'un fichier de synthèse, les données de cases déterminées dans d'autres fichiers excel.

Tous les fichiers sont identiques, les informations indiquées sont juste différentes.

J'ai initialisé un début de code pour exemple, sur la base d'un seul fichier source :

Range("C2").Select

ActiveCell.FormulaR1C1 = _

"='[source1.xlsm]Contexte'!R17C12"

Range("D2").Select

Windows("source1.xlsm").Activate

Windows("Tableau de suivi des devis Ing?nierie CSS.xlsx").Activate

Range("D2").Select

ActiveCell.FormulaR1C1 = _

"='[source1.xlsm]Contexte'!R12C5"

Range("E2").Select

ActiveCell.FormulaR1C1 = _

"='[source1.xlsm]Contexte'!R2C6"

Range("F2").Select

ActiveCell.FormulaR1C1 = _

"='[source1.xlsm]Contexte'!R7C9"

Range("G2").Select

ActiveCell.FormulaR1C1 = _

"='[source1.xlsm]Contexte'!R5C9"

Range("H2").Select

ActiveCell.FormulaR1C1 = _

"='[source1.xlsm]Contexte'!R12C8"

Range("I2").Select

ActiveCell.FormulaR1C1 = _

"='[source1.xlsm]Contexte'!R2C15"

Range("K2").Select

ActiveCell.FormulaR1C1 = _

"='[source1.xlsm]Contexte'!R18C3"

Range("L2").Select

ActiveCell.FormulaR1C1 = _

"='[source1.xlsm]Contexte'!R19C4"

Range("M2").Select

ActiveCell.FormulaR1C1 = _

"='[source1.xlsm]Contexte'!R13C11"

Range("M3").Select

J'ai besoin de créer une Macro qui, un fichier après l'autre, va chercher les données dans les bonnes cases pour les insérer dans les bonnes cases du fichier de synthèse, ligne après ligne.

Pour information, les noms des fichiers sources sont tous différents, mais les données sont toutes au même endroit, dans le même onglet "Contexte".

Est-ce que vous pourriez m'aider please ?

Merci

Ju

Bonjour et bienvenue,

Merci de joindre 3 exemples de fichiers (fichiers à importer et fichier de synthèse).

Cdlt.

Merci pour cette réponse rapide.

Voici ci-joint à quoi ressemble le tableau de synthèse. Chaque case renseignée (sur une ligne) constitue une information d'un fichier source.

Je ne peux transmettre des fichiers sources, les données sont confidentielles.

Mais si tu me donnes un exemple, du type "pour chaque fichier Excel du dossier "blablabla", aller chercher les informations de la case C1 du fichier source pour les mettre dans la case B2 du fichier synthèse, puis les informations de la case F1 du fichier source pour les mettre dans la case C2 du fichier synthèse, etc... et afficher les résultats d'un fichier source sur une ligne, et ainsi de suite" je m'y retrouverai.

Je ne sais pas si je suis claire…

J'ai vraiment besoin d'aide… Quelqu'un pourrait me guider ?

Merci

J'ai avancé au niveau du code...

Sub ESSAI1()

Dim wkA As Workbook, wkB As Workbook

Dim chemin As String, fichier As String

Dim j As Long

Application.ScreenUpdating = False 'gagner en temps d'execution

Set wkA = ThisWorkbook 'le dossier qui va recevoir les donn?es

chemin = "C:\Users\T0159962\Desktop\Direction Technique\Devis Ingenierie\" 'adresse commun pour les deux dossiers sources

'******************************* Copier donnees Classeur A

fichier = "TDMSFR1268093-00 - FPV - SPGE - FT287 rev 00" 'Nom du classeur 1

Workbooks.Open chemin & fichier & ".xlsm" 'ouvrir classeur1

Set wkB = ActiveWorkbook

j = 2

wkB.Worksheets("Contexte").Range("L17").Copy wkA.Sheets("Suividevis").Cells(j, 3)

wkB.Worksheets("Contexte").Range("E12").Copy wkA.Sheets("Suividevis").Cells(j, 4)

wkB.Worksheets("Contexte").Range("F2").Copy wkA.Sheets("Suividevis").Cells(j, 5)

wkB.Worksheets("Contexte").Range("I7").Copy wkA.Sheets("Suividevis").Cells(j, 6)

wkB.Worksheets("Contexte").Range("I5").Copy wkA.Sheets("Suividevis").Cells(j, 7)

wkB.Worksheets("Contexte").Range("H12").Copy wkA.Sheets("Suividevis").Cells(j, 8)

wkB.Worksheets("Contexte").Range("O2").Copy wkA.Sheets("Suividevis").Cells(j, 9)

wkB.Worksheets("Contexte").Range("C18").Copy wkA.Sheets("Suividevis").Cells(j, 11)

wkB.Worksheets("Contexte").Range("D19").Copy wkA.Sheets("Suividevis").Cells(j, 12)

wkB.Worksheets("Contexte").Range("K13").Copy wkA.Sheets("Suividevis").Cells(j, 13)

wkB.Close True

j = wkA.Sheets("Suividevis").Range("A" & Rows.Count).End(xlUp).Row

'******************************* Copier donnees Classeur B

fichier = "TDMSFR1266422-03- ATL2 - FPV ISTS Iguane"

Workbooks.Open chemin & fichier & ".xlsm"

Set wkB = ActiveWorkbook

wkB.Worksheets("Contexte").Range("L17").Copy wkA.Sheets("Suividevis").Cells(j, 3)

wkB.Worksheets("Contexte").Range("E12").Copy wkA.Sheets("Suividevis").Cells(j, 4)

wkB.Worksheets("Contexte").Range("F2").Copy wkA.Sheets("Suividevis").Cells(j, 5)

wkB.Worksheets("Contexte").Range("I7").Copy wkA.Sheets("Suividevis").Cells(j, 6)

wkB.Worksheets("Contexte").Range("I5").Copy wkA.Sheets("Suividevis").Cells(j, 7)

wkB.Worksheets("Contexte").Range("H12").Copy wkA.Sheets("Suividevis").Cells(j, 8)

wkB.Worksheets("Contexte").Range("O2").Copy wkA.Sheets("Suividevis").Cells(j, 9)

wkB.Worksheets("Contexte").Range("C18").Copy wkA.Sheets("Suividevis").Cells(j, 11)

wkB.Worksheets("Contexte").Range("D19").Copy wkA.Sheets("Suividevis").Cells(j, 12)

wkB.Worksheets("Contexte").Range("K13").Copy wkA.Sheets("Suividevis").Cells(j, 13)

wkB.Close True

Application.ScreenUpdating = True

End Sub

Voici le problème rencontré : au lieu de mettre les informations dans la ligne en dessous de la première pour le fichier A, cela me met les informations dans la ligne au dessus…. Cela modifie donc le nom de mes colonnes… au lieu d'ajouter les informations à la suite.

J'ai un autre souci, il faudrait que cela me copie la valeur de la cellule source et non la formule qui y est insérée.

Autre besoin, la mise en forme du fichier source est conservée lors du copiage, cependant j'aimerais que ce soit la mise en forme du fichier de synthèse qui soit appliquée.

Et pour finir, mon code sera parfait lorsque j'aurais inséré une boucle qui dit "ouvrir un à un les fichier du répertoire XXX, pour effectuer le copié collé" .. Pour l'instant la macro ne traite que 2 fichiers…

MERCI par avance !

Bonsoir Ju33,

Pourquoi passer par macro VBA pour récupérer des valeurs placées au même endroit dans tes fichiers sources pour les insérer toujours à la même place dans ton fichier de synthèse.

Passe simplement par des liaisons. C'est à dire que tu va lier des cellules de tes fichiers sources à des cellules de ton fichier de synthèse. Ainsi toute modification du fichier source sera répercutée sur le fichier synthèse.

C'est comme dans un classeur lorsque sur une cellule d'une feuille tu vas chercher la cellule d'une autre feuille. Il y a une liaison. Sauf que là il faut aussi le nom du classeur source en plus de la feuille et de la cellule.

Rechercher des sujets similaires à "extraction donnees divers fichiers xls meme dossier"