lien entre deux classeurs [VBA]

lien entre deux classeurs [VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 03-08-2007 à 09:51:05    

Bonjour, j'ai un petit problème si vous pouvez m'aider (je suis débutant en vba)  
voilà, je travaille sur un classeur qui fait appel à un autre, voiçi le code que j'ai fait:  
 

Code :
  1. Sub jhd()
  2. For i = 1 To 200
  3. If Not IsEmpty(Cells(i, 1)) Then
  4. Cells(i, 2) = Windows("Classeur2.xls" ).Activate
  5.     [A1].Copy
  6.     Windows("Classeur1.xls" ).Activate
  7.     [B1].Select
  8.     ActiveSheet.Paste
  9. Else
  10. Cells(i, 2) = ""
  11. End If
  12. Next i
  13. End Sub


Donc je voudrai, dans le classeur 1 , si la cellule dans la colonne A est vide, ne rien faire, sinon faire un copier coller d'une cellule d'un classeur 2.  
Ce code marche, seulement si le classeur 2 est ouvert. Y-t'il un moyen de le faire fonctionner sans l'ouvrir.
merci

Reply

Marsh Posté le 03-08-2007 à 09:51:05   

Reply

Marsh Posté le 03-08-2007 à 10:08:29    

Bonjour,
 
regarde là:
http://forum.hardware.fr/hfr/Progr [...] 0477_1.htm
Cordialement

Reply

Marsh Posté le 03-08-2007 à 10:11:56    


Re,
à cette adresse  
http://www.excelabo.net/excel/fich [...] sansouvrir
 
tu trouves ceci:
Comment faire pour affecter à une variable la valeur contenue dans la cellule d'un autre classeur sans ouvrir celui-ci.  
Si tu veux récupérer ce contenu, tape directement dans la cellule de destination
='D:\MesDocuments\Mondossier\[Monclasseur.xls]Feuil1'!B12
sans te tromper dans la ponctuation !
 
Si tu veux par macro affecter ce contenu à une variable A
A = "='" & Chemin & "[" & NomFic & "]" & Onglet & "'!" & Range(Ref).address
 
Si tu veux récupérer le contenu de plusieurs lignes et colonnes alors utilise la macro de GeeDee dérivée de ce truc de John Walkenbach  
http://www.j-walk.com/ss/excel/tips/tip82.htm  
traduit par Flo dans ce classeur exemple à télécharger

Reply

Marsh Posté le 03-08-2007 à 10:24:48    

merci c'est un peu difficile pour moi ça, mais je vais essayer de comprendre

Reply

Marsh Posté le 03-08-2007 à 11:19:13    

bon j'ai fait ça :

Code :
  1. Sub d()
  2. Dim appxl As Excel.Application
  3. Dim fichier As Window
  4. Dim feuille As Worksheet
  5. Set appxl = CreateObject("Excel.application" )
  6.    
  7. With appxl
  8.     .Workbooks.Open "P:\Classeur1.xls"
  9.     .Visible = True
  10. End With
  11. Set fichier = appxl.Windows("Classeur1.xls" )
  12.             fichier.Activate
  13.             Set feuille = appxl.Sheets("feuil1" )
  14.             Range("A1" ).Select
  15.     Selection.Copy
  16.     Windows("Classeur2.xls" ).Activate
  17.     Range("A1" ).Select
  18.     ActiveSheet.Paste
  19.    
  20. appxl.Workbooks("Classeur1.xls" ).Close
  21. Set appxl = Nothing
  22. End Sub


 
mais ça me copie rien du tt :(

Reply

Marsh Posté le 03-08-2007 à 11:29:11    

j'ai trouvé :

Code :
  1. Sub d()
  2. Dim appxl As Excel.Application
  3. Dim fichier As Window
  4. Dim feuille As Worksheet
  5. Set appxl = CreateObject("Excel.application" )
  6.    
  7. With appxl
  8.     .Workbooks.Open "P:\Classeur1.xls"
  9.     .Visible = True
  10. End With
  11. Set fichier = appxl.Windows("Classeur1.xls" )
  12.             fichier.Activate
  13.             Set feuille = appxl.Sheets("feuil1" )
  14.             feuille.Range("A1" ).Select
  15.     feuille.Range("A1" ).Copy
  16.     Windows("Classeur2.xls" ).Activate
  17.      Range("A1" ).Activate
  18.     ActiveSheet.Paste
  19.    
  20. appxl.Workbooks("Classeur1.xls" ).Close
  21. Set appxl = Nothing
  22. End Sub


thx

Reply

Marsh Posté le 03-08-2007 à 15:37:54    

mais en fait tout ça c'est pour pouvoir écrire ce code:  

Code :
  1. Sub lien2fichiers()
  2. For i = 1 To 2000
  3. If Not IsEmpty(Cells(i, 1)) Then
  4. Cells(i, 2) = "Dim appxl As Excel.Application"
  5. Dim fichier As Window
  6. Dim feuille As Worksheet
  7. Set appxl = CreateObject("Excel.application" )
  8.    
  9.  
  10. With appxl
  11.     .Workbooks.Open "S:\CLOTURE 2007 ANNEMASSE - B28 -\DIVERS\Base articles FT 072007.xls"
  12.     .Visible = False
  13. End With
  14. Set fichier = appxl.Windows("Base articles FT 072007.xls" )
  15.             fichier.Activate
  16. Set feuille = appxl.Sheets("Base articles FT 072007" )
  17.             feuille.Range("A1" ).Select
  18.    
  19.     Windows("gfg .xls" ).Activate
  20.      Cells(i, 2).Select
  21.     ActiveCell.FormulaR1C1 = _
  22.         "=VLOOKUP(RC[-1],'Base articles FT 072007.xls'!R8C2:R17165C5,4,FALSE)"
  23.    
  24. appxl.Workbooks("Base articles FT 072007.xls" ).Close
  25. Set appxl = Nothing
  26. Else
  27. Cells(i, 2) = ""
  28. End If
  29. Next i
  30. End Sub


Est ce que je peux faire plus simple, sachant que c du vba/excel (on peux pas virer les dil et applx)
merci
 
 

Reply

Sujets relatifs:

Leave a Replay

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