Bonjour tout le monde !
Je suis débutant dans ce domaine, mais j'ai pour projet de faire une macro excel 2007 visant à récupérer certaines cellules de plusieurs fichiers Excel et les copier dans le fichier Excel où est exécuté ma macro.
J'ai récupéré le début d'un code me permettant de bien commencer.
Cependant, je bute sur quelque chose de relativement simple c'est à dire:
Le code récupère les données et les placent sur A1, A2, A3 ... Et du coup je ne parviens pas a les placer automatiquement ou je veux (mettons G5, G6, G7).
Si possible, j'aimerai que les cellules que je récupère des différents fichiers soient placés dans les cellules que je désire et non pas directement sur A1, A2 et A3.
J'ai peur d'être un peu flou, je vous propose donc le code source de la macro. Le module se présente comme ci (il est activé par un bouton placé sur la feuille Excel):
Ici, je prédéfinie certaines cases en leur mettant le nom Info 1, info 2, et Info 3 respectivement C10, D10 et E10. Jusque la OK
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 Sub CopierCellule() Range("C10").Select Selection.Value = "Info 1" Range("D10").Select Selection.Value = "Info 2" Range("E10").Select Selection.Value = "Info 3" Dim X As Integer, nbFichiers As Integer, Y As Integer Dim Tableau() As String Dim Direction As String Application.ScreenUpdating = False Direction = Dir("C:\fichiers excel\*.xls") Do While Len(Direction) > 0 nbFichiers = nbFichiers + 1 ReDim Preserve Tableau(1 To nbFichiers) Tableau(nbFichiers) = Direction Direction = Dir() Loop If nbFichiers > 0 Then For X = 1 To nbFichiers If Tableau(X) <> ThisWorkbook.Name Then Y = Y + 1 With ActiveSheet.Cells(Y, 1) .Formula = "='C:\fichiers excel\[" & Tableau(X) & "]Feuil1" & "'!" & "H74" .Value = .Value Range("A1:A20").Copy ([C11]) .Formula = "='C:\fichiers excel\[" & Tableau(X) & "]Feuil1" & "'!" & "H85" .Value = .Value Range("A1:A20").Copy ([D11]) .Formula = "='C:\fichiers excel\[" & Tableau(X) & "]Feuil1" & "'!" & "H89" .Value = .Value Range("A1:A20").Copy ([E11]) End With End If Next X End If Application.ScreenUpdating = True End Sub
- En dessous de C10 (Info 1), il doit y avoir la cellule H74 de tous les fichiers présents dans C:\fichiers excel\. Automatiquement, il va prendre la cellule H74 du fichier 1 dans A1, du fichier 2 dans A2 et du fichier 3 dans A3. Dans le code j'ai fais un Range("A1:A20").Copy ([C11]) pour que ces données soient copiés sur C11, C12 et C13. Je fais le même traitement pour la cellule H85 et H89 mais cela ne fonctionne pas car en effet, les cellules A1, A2 et A3 sont déjà prises (et j'ai aussi un problème si j'essaie d'effacer les cellules A*).
Par conséquent, l'idéal serait que les données récupérés soient directement copiées dans les cellules correspondantes (donc C11, C12, et C13) plutôt qu'A1, A2 et A3...
Est-ce que vous avez une idée pour remédier à mon problème ?
Merci d'avance
Partager