Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2940 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  lien entre deux classeurs [VBA]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

lien entre deux classeurs [VBA]

n°1595295
myelmehdi
Posté le 03-08-2007 à 09:51:05  profilanswer
 

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

mood
Publicité
Posté le 03-08-2007 à 09:51:05  profilanswer
 

n°1595304
seniorpapo​u
Posté le 03-08-2007 à 10:08:29  profilanswer
 

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

n°1595306
seniorpapo​u
Posté le 03-08-2007 à 10:11:56  profilanswer
 


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

n°1595314
myelmehdi
Posté le 03-08-2007 à 10:24:48  profilanswer
 

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

n°1595358
myelmehdi
Posté le 03-08-2007 à 11:19:13  profilanswer
 

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 :(

n°1595367
myelmehdi
Posté le 03-08-2007 à 11:29:11  profilanswer
 

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

n°1595563
myelmehdi
Posté le 03-08-2007 à 15:37:54  profilanswer
 

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
 
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  lien entre deux classeurs [VBA]

 

Sujets relatifs
A L'AIDE!!! recuperer et comparer date et heure [VBA][VBA] annuler boite de "mise à jour des liens"
VBA ACCESS ou ACCESS(tout cours) pb creer requete avec contenu de tabl[VBA EXCEL] Insérer lien Hypertexte avec condition
[VBA]redaction du stlinkcriteria pour filtrer un formulaireLien dynamique avec SELECT
Lancer du VBA depuis du VBScriptmsgbox [VBA]
creer un lien "changer de design" ? 
Plus de sujets relatifs à : lien entre deux classeurs [VBA]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR