[EXCEL] Insérer contenu d'une feuille dans un autre fichier

Insérer contenu d'une feuille dans un autre fichier [EXCEL] - VB/VBA/VBS - Programmation

Marsh Posté le 05-07-2007 à 15:11:02    

:hello:  
 
J'ai aucune compétence en VBA :/
 
J'ai 15 fichiers excels, je voudrais faire 1 fichier excel qui les affiche chacun dans 1 feuille (de manière a ne pas avoir a ouvrir les 15 fichiers)
 
J'arrive a insérer le contenu des cellules en faisant insérant la formule : ='D:\Fichier1.xls]Feuille1!A1, mais ca ne récupère pas le format de la cellule (couleur surtout)
 
Je pense qu'il doit pas être dur d'éditer la feuille excel et de lui dire d'aller chercher le contenu dans un autre fichier ? (sans devoir l'ouvrir)
 
Ou solution B, me dire comment on récupère le format d'une autre cellule :D
 
Merci à celui qui a une piste :jap:

Reply

Marsh Posté le 05-07-2007 à 15:11:02   

Reply

Marsh Posté le 05-07-2007 à 15:17:15    

le macro recorder doit pouvoir t'aider a faire cela.
essaie de faire ce que tu veux en enregistrant, et on décortiquera le code fourni. :)

Reply

Marsh Posté le 05-07-2007 à 16:26:12    

Je sais pas trop me servir des macros mais ca a l'air efficace :)
 
Donc j'ai à peu prêt réussi à faire ce que je voulais :
 

Code :
  1. Sub Macro()
  2.     Range("A1" ).Select
  3.     ActiveCell.FormulaR1C1 = "='[Fichier2.xls]Feuille1'!RC"
  4.     Range("A1" ).Select
  5.     Selection.Copy
  6.     Range("A2:A1000" ).Select
  7.     ActiveSheet.Paste
  8.     Columns("A:A" ).Select
  9.     Application.CutCopyMode = False
  10.     Selection.Copy
  11.     Columns("B:E" ).Select
  12.     ActiveSheet.Paste
  13.     Windows("Fichier2.xls" ).Activate
  14.     Columns("A:E" ).Select
  15.     Application.CutCopyMode = False
  16.     Selection.Copy
  17.     Windows("Fichier1.xls" ).Activate
  18.     Range("A1" ).Select
  19.     Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
  20.         SkipBlanks:=False, Transpose:=False
  21.     Application.CutCopyMode = False
  22. End Sub


 
Ca a l'air de marcher, par contre, quand je lance la macro sans ouvrir le Fichier2.xls, j'ai une erreur :  
Erreur d'exécution '9':
L'indice n'appartient pas à la sélection
 
J'ai pas trop envie de rajouter une ouverture/fermeture du fichier :/

Reply

Marsh Posté le 05-07-2007 à 16:40:51    

Le code qui t'intéresse en définitive c'est ca:
 
   

Code :
  1. Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
  2.         SkipBlanks:=False, Transpose:=False


On partirait sur la solution B ^^
     
Après, il faut travailler sur "a quoi correspond ta sélection ?"
 
 

Reply

Marsh Posté le 06-07-2007 à 08:50:01    

Ca fonctionne lorsque j'ouvre le fichier, c'est presque ce que je voulais :)
 
Par contre, les données sont enregistrée dans mon fichier, il n'y a pas moyen de faire une sorte d' "include", où toutes les données ne serait jamais écrites en dur dans le fichier qui les appelle ?

Reply

Marsh Posté le 06-07-2007 à 13:14:52    

En fait non, c'est bon, je m'en sors en supprimant des champs, ca devient moins lourd.
 
Par contre il y a quelque chose que je ne sais pas faire :
 
J'insère les données des cellules de A1 à A1000, mais comme il ya des cellules à l'origine qui sont vides, dans ma destination j'ai : des 0 ou des dates 0/0/1900
 
Comment faire sauter les cellules vides ?

Reply

Marsh Posté le 06-07-2007 à 15:41:42    

tu fais ton collage standard puis tu fais une boucle de test si .value = 0 alors  tu fais un .delete

Reply

Marsh Posté le 06-07-2007 à 19:12:12    

Ok merci pour les tuyaux  :hello:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed