Macros - Liaisons entre fichiers et Recherches

Bonjour,

Je suis face à un problème épineux depuis quelques temps... Pour faire simple, chaque mois je dois remplir un tableau (planning) et j'aimerais bien que ce dernier se fasse automatiquement, juste en appuyant sur un bouton (macro). Pour vous expliquer le problème, j'ai 3 fichiers excel:

0: Fichier extrait d'une base de donnée

A: avec toutes les infos brutes (issue de 0)

B: que je dois remplir chaque mois

Le fichier A récupère les données du fichier 0 et il doit être simplifié comme spécifié dans la feuille simplifiée (d'où le besoin d'une macro pour faire cela, svp). Donc le fichier A supprime les colonnes en trop du "fichier 0"

Le fichier B lui reprend les infos du fichier A dans certaines colonnes. Et le but serait d'avoir une macro qui recherche dans A les infos. En gros, quand elle trouve le nom de l'élève dans A, elle remplit automatiquement les éléments dans les bonnes colonnes de B.

En conclusion, voici ce que cela donne:

1. Je récupère le "fichier 0" dans la base de donnée.

2. J'ouvre mon fichier A qui récupère les éléments du "fichier 0" dans la feuille "brut" et simplifie le tout dans la feuille "simplifié"

3. J'ouvre le fichier B qui à l'aide d'une macro récupère les infos du fichier A (depuis la feuille "simplifié") et remplit le fichier.

Le fichier B étant le fichier que je remplis chaque mois et j'aimerais automatiser la partie concernant les infos.

Je vous ai mis le fichier A et B pour exemple, je n'ai rempli que les 3 premières lignes pour exemple.

J'espère avoir été clair dans ma demande.

Merci par avance pour votre aide

6a.xlsx (9.25 Ko)
6b.xlsx (8.76 Ko)

Bonjour,

un exemple à tester,

la macro doit être copier dans le module1 su classeur "B"

Sub test()
Dim wk1 As Workbook, wk2 As Workbook, sh1, sh2, col
Dim LastRw&, i%

Set wk1 = Workbooks("A.xlsx")
Set wk2 = ThisWorkbook  '"B.xlsm"
Set sh1 = wk1.Sheets("Simplifié")
Set sh2 = wk2.Sheets("Résultat")
LastRw = sh1.Cells(Rows.Count, 1).End(xlUp).Row
col = Array(1, 5, 8, 9, 11, 13)

For i = 1 To 6
 sh2.Range(Cells(2, col(i - 1)).Address, Cells(LastRw, col(i - 1)).Address).Value = sh1.Range(Cells(2, i).Address, Cells(LastRw, i).Address).Value
Next
End Sub

une autre solution serait d'éviter la création de l'onglet "Simplifié", et passer directement par l'onglet "Brut"

Sub test2()
Dim wk1 As Workbook, wk2 As Workbook, sh1, sh2
Dim LastRw&, i%

Set wk1 = Workbooks("A.xlsx")
Set wk2 = ThisWorkbook
Set sh1 = wk1.Sheets("Brut")
Set sh2 = wk2.Sheets("Résultat")
LastRw = sh1.Cells(Rows.Count, 1).End(xlUp).Row
col1 = Array(3, 7, 4, 5, 6, 9)  'colonne l'onglet "Brut"
col2 = Array(1, 5, 8, 9, 11, 13)   'colonne l'onglet "Résultat"

For i = 0 To 5
 sh2.Range(Cells(2, col2(i)).Address, Cells(LastRw, col2(i)).Address).Value = sh1.Range(Cells(2, col1(i)).Address, Cells(LastRw, col1(i)).Address).Value
Next
End Sub

Merci pour ton aide précieuse!! Ca fonctionne du tonnerre ta 2ème solution

Sinon, là il me met tout le monde à la suite. Si je veux trier, par exemple de la ligne 1 à 30 il met les garcons et à partir de la ligne 32 il met les filles. Comment puis je faire?

En gros, utiliser le critère "Sexe" pour trier sur certaines lignes... Ca complique un peu la chose, sinon à la rigueur ça ne me dérange pas de faire à la main cette partie.

Encore MERCI

Rechercher des sujets similaires à "macros liaisons entre fichiers recherches"