![]() |
| Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé. | |||||||
|
|||||||
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
|
Invité régulier
![]() Date d'inscription: octobre 2008
Messages: 11
|
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): Code :
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 Dernière modification par nicethe ; 10/10/2008 à 11h35 |
|
|
|
|
|
#2 (permalink) |
|
Invité régulier
![]() Date d'inscription: octobre 2008
Messages: 11
|
Bonjour !
Comme je ne trouve pas de solution à mon problème, j'ai essayé de faire en sorte de copier les cellules A1 (etc.) dans une autre et de la supprimer ensuite. Le processus est donc: - Cellule H74 du fichier 1 copié dans A1 - Cellule H74 du fichier 2 copié dans A2 - Cellule H74 du fichier 3 copié dans A3 - Copie de A1,A2 et A3 dans C11, C12 et C13 - Supprimer les cellules A1, A2, A3 - recommencer le processus avec une autre cellule (après H74, H85): - Cellule H85 du fichier 1 copié dans A1 - Cellule H85 du fichier 2 copié dans A2 - Cellule H85 du fichier 3 copié dans A3 - Copie de A1,A2 et A3 dans D11, D12 et D13 - Supprimer les cellules A1, A2, A3 etc ... Autant dire que niveau optimisation c'est moyen. Le problème est que après avoir supprimé A1 par exemple, il supprime aussi C11 ! C'est la raison pour laquelle j'aimerai opter pour un trie automatique des cellules de mon fichier lorsque je récupère les cellules demandées des autres fichiers. Plutôt que d'essayer de les copier ... Et je bloque vraiment à ce stade. Si vous avez quelques idées je suis preneur. Merci |
|
|
|
|
|
#3 (permalink) |
|
Invité régulier
![]() Date d'inscription: octobre 2008
Messages: 11
|
bon j'ai trouvé une solution je la met pour faire profiter tout le monde. C'était vraiment très simple:
Code :
With ActiveSheet.Cells(Y, 1) .Formula = "='C:\fichiers excel\[" & Tableau(X) & "]Feuil1" & "'!" & "H74" .Range("C11").Value = .Range("A1").Value .Formula = "='C:\fichiers excel\[" & Tableau(X) & "]Feuil1" & "'!" & "H85" .Range("D11").Value = .Range("A1").Value .Formula = "='C:\fichiers excel\[" & Tableau(X) & "]Feuil1" & "'!" & "H89" .Range("E11").Value = .Range("A1").Value End With Dernière modification par AlainTech ; 10/10/2008 à 13h03 |
|
|
|
![]() |
![]() |
||
Copier des cellules de plusieurs fichiers et les trier automatiquement
|
||
| Outils de la discussion | |
|
|