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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Problème de copier coller de données depuis un classeur fermé.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de copier coller de données depuis un classeur fermé.

n°1581374
lestagiair​e
Posté le 02-07-2007 à 10:15:13  profilanswer
 

Bonjour Forum et bon début de semaine à tous,  
 
Celle-ci commence pas très bien pour moi, car je suis confronté une nouvelle fois à mes lacunes en VBA :( .
 
Mon but est de copier des cellules se trouvant dans un classeur fermé, vers un emplacement bien precis dans un classeur ouvert pour ensuite procéder à une mise en page (mais cette étape sera une autre croisade).
 
Par des recherches sur internet, j'ai souvent trouvé cette méthode de copier/coller, mais bien sûr elle ne fonctionne pas chez moi.
La voici:  
 
 
"C:\Documents and Settings\1\Bureau\"  =  chemin du fichier fermé  
test1.xls    = nom du fichier  fermé
Alésage      = Nom de la feuille du fichier  
C14:C27  = Plage à copier  
 
 
 
 
 

Code :
  1. Sub test()
  2. GetValuesfromAClosedWorkbook "C:\Documents and Settings\1\Bureau\"  "test1.xls", "Alésage", "C14:C27"
  3. End Sub
  4. '-----------------------------
  5. Sub GetValuesfromAClosedWorkbook(fPath As String, fName As String, sName, cellRange As String)
  6. With ActiveSheet.Range(cellRange)
  7.     .Formula = "='" & fPath & "\[" & fName & "]" & sName & "'!" & cellRange
  8.     .Value = .Value
  9. End With
  10. End Sub


 
 
Et à l'execution de ce joli code une erreur de ce type survient:
 
Erreur d'application '1004':
 
Erreur définie par l'aplication ou par l'objet
 
Et le débuger se place à le ligne
 
.Formula = "='" & fPath & "\[" & fName & "]" & sName & "'!" & cellRange
 
 
Merci de votre aide.
 
Julien.
 

mood
Publicité
Posté le 02-07-2007 à 10:15:13  profilanswer
 

n°1581384
kiki29
Posté le 02-07-2007 à 10:36:50  profilanswer
 
n°1581392
lestagiair​e
Posté le 02-07-2007 à 10:48:52  profilanswer
 

Merci Kiki 29 pour ta lecture, je vais m'y mettre.
 
Je pense que j'aurai surement quelques problèmes, je vous tiens au courant si questions il y a.
 
Sinon aucune suggestions pour mon erreur de code générée ci-dessus?
 
Merci.
 
Julien.

n°1581397
DamienCYS
Posté le 02-07-2007 à 10:59:54  profilanswer
 

Salut,
 
Dans ta variable fPath tu finit par un backslash "C:\Documents and Settings\1\Bureau\" et tu en remet un après  .Formula = "='" & fPath & "\[" & fName & "]" & sName & "'!" & cellRange  
 
Je pense que l'erreur vient de la

n°1581400
lestagiair​e
Posté le 02-07-2007 à 11:05:55  profilanswer
 

Bonjour DamienCYS,  
 
J'ai suivi ton conseil avec grand enthousiasme, mais malheureusement même si j'enlève "\" juste après Bureau, l'erreur est tout de même présente.
 
Merci quand même.
Mais ne desespérons pas la solution existe...
 
Julien.

n°1581404
kiki29
Posté le 02-07-2007 à 11:18:24  profilanswer
 

GetValuesfromAClosedWorkbook "C:\Documents and Settings\1\Bureau","test1.xls", "Alésage", "C14:C27"


Message édité par kiki29 le 02-07-2007 à 11:20:30
n°1581409
lestagiair​e
Posté le 02-07-2007 à 11:26:59  profilanswer
 

Re kiki29,  
 
Malhereusement la virgule n'a aucun effet sur la génération de ce problème. :(
 
Merci beaucoup de plancher sur mon problème.

n°1581412
kiki29
Posté le 02-07-2007 à 11:36:28  profilanswer
 

Curieux car chez moi ça marche... enfin elle se fout du nom de feuille ici "Alésage" mais lit bien des valeurs bidons que j'ai placé dans fichier xls.A priori tu ne nous a pas donné tout ton code

n°1581421
lestagiair​e
Posté le 02-07-2007 à 11:57:45  profilanswer
 

Re kiki29,  
 
le bout de code donné est juste un test pour pouvoir ensuite l'inserer dans un autre gros programme.
 
Concernant le test que je veux valider, c'est exactement le code que j'ai publié (sans "\" après Bureau et avec une virgule en plus. :p).  
J'ai juste oublié de preciser que les feuilles des deux classeurs ont exactement les même nom, et que les cellules que je veux copier (C14:C27)  forment un ensemble de deux tableaux de nombres décimaux. Le 1er tableau  (C14:C17) et le 2ième (24:27), ils sont  sans en-têtes.
 
Je sais pas si ça peut changer quelque chose.
 
Merci d'avance.

n°1581426
lestagiair​e
Posté le 02-07-2007 à 12:05:52  profilanswer
 

Re kiki 29,  
 
Ca i est ça marche, le problème ét

mood
Publicité
Posté le 02-07-2007 à 12:05:52  profilanswer
 

n°1581429
lestagiair​e
Posté le 02-07-2007 à 12:07:48  profilanswer
 

Oups désolé fausse manip....
 
Donc ça i est ça marche le problème était dans la syntaxe du .Formula, vu que je ne travaille pas sur le même ordi une " ' " avait été oubliée.
 
Merci beaucoup pour ton aide.
Julien.

n°1581444
lestagiair​e
Posté le 02-07-2007 à 13:01:48  profilanswer
 

Hello tout le monde,  
 
Un autre problème se pose à moi dans le même code que tout à l'heure,  
comment je peux le modifier pour que je puisse copier des données de la feuille 2 du classeur fermé test1.xls vers la feuille 2 de mon classeur ouvert.
 
Merci d'avance.
Julien.

n°1581451
DamienCYS
Posté le 02-07-2007 à 13:39:01  profilanswer
 

utilise le même code mais remplace les variables de feuille

n°1581456
lestagiair​e
Posté le 02-07-2007 à 13:48:50  profilanswer
 

Re DamienCYS,  
 
c'est bien ce que j'ai fait la première fois, mais si j'apelle la fonction
GetValuesfromAClosedWorbook avec des paramètres différents conernant la feuille n°2 par exemple, celle-ci va me prendre les bonnes valeurs mais me les mettra toujours sur la feuille n°1 de mon classeur ouvert.
 
Je pense qu'une modification de code serait à faire au niveau de la ligne:
 
ActiveSheet.Range(cellRange) pour lui dire d'excecuter le collage dans le feuille n°2.
 
En tout cas si tu as d'autre propositions n'hésite pas.
Julien

n°1581459
DamienCYS
Posté le 02-07-2007 à 13:56:55  profilanswer
 

c'est bien cette ligne qu'il faut que tu modifie tu peut utiliser a la palce de activesheet worksheets(2) pour la feuille 2 du classeur
ou WorkSheets(ActiveSheet.Index + 1) pour la feuille qui suit la feuille active

n°1581463
lestagiair​e
Posté le 02-07-2007 à 14:09:48  profilanswer
 

Ok super DamienCYS, ta méthode marche très bien.
Merci!
 
Je vais peut être abusé, mais je me demandais comment faire pour que la macro me copie les valeurs dans les colones que je souhaite (la colone juste après celle ou il fait la copie tout en gardant les meme lignes).  
 
Existerai t'il une syntaxe du genre:
 
.Range(celleRange +1)
 
Merci d'avance.

n°1581474
DamienCYS
Posté le 02-07-2007 à 14:30:38  profilanswer
 

utilise plutot Cells(rowindex, columnindex) à la place de range qui te permet de passer un numéro de colonne, soit :
Cells(range(Cellrange).row, range(Cellrange).column + 1)

n°1581481
lestagiair​e
Posté le 02-07-2007 à 14:53:39  profilanswer
 

Re DamienCYS,
 
J'ai un petit problème avec ta syntaxe, lorsque je copie d'un autre fichier un tableau de 4 valeurs allant de C14:C17 ( valeur affectée à cellRange) il me recopie seulement la première valeur du tableau mais à la place voulue à savoir dans la case D14 du fichier de destination :).
 
Sais tu comment résoudre ce petit problème?
Merci.

n°1581485
DamienCYS
Posté le 02-07-2007 à 15:03:33  profilanswer
 

j'avais zappé que tu copiais des plage
tu peut le faire avec des boucles pour parcourir ta palge et copier cellule par cellule.  
1 boucle pour les lignes et une autre pour les colonnes à agencer suivant l'ordre de copie que tu désires

n°1581487
lestagiair​e
Posté le 02-07-2007 à 15:05:52  profilanswer
 

Ok merci du conseil.
Julien.

n°1581490
kiki29
Posté le 02-07-2007 à 15:06:45  profilanswer
 

Vas voir sur les 2 liens que je t'ai donné
Le 1er donne une réponse en copiant cellule par cellule
Le 2nd via ADO pour copier une plage plus importante
De plus les 2 utilisent ExecuteExcel4Macro correctement

mood
Publicité
Posté le   profilanswer
 


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

  Problème de copier coller de données depuis un classeur fermé.

 

Sujets relatifs
Problème de conditionBatch Probleme Echo sur serveur distant
Problème saut ligne RSS => HTML via XSLGros probleme map sous IE
problème pour mettre un fond dans <body>Synchroniser un base de données vers un fichier XML
problème d'ongletN00b perl, problème étrange
probleme de compilationProblème de compatibilité
Plus de sujets relatifs à : Problème de copier coller de données depuis un classeur fermé.


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