Problème de copier coller de données depuis un classeur fermé. - VB/VBA/VBS - Programmation
Marsh Posté le 02-07-2007 à 10:36:50
voir les liens suivants
http://forum.hardware.fr/hfr/Progr [...] 0232_1.htm
http://forum.hardware.fr/hfr/Progr [...] 2780_1.htm
ainsi que http://silkyroad.developpez.com/VBA/ClasseursFermes/
Marsh Posté le 02-07-2007 à 10:48:52
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.
Marsh Posté le 02-07-2007 à 10:59:54
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
Marsh Posté le 02-07-2007 à 11:05:55
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.
Marsh Posté le 02-07-2007 à 11:18:24
GetValuesfromAClosedWorkbook "C:\Documents and Settings\1\Bureau","test1.xls", "Alésage", "C14:C27"
Marsh Posté le 02-07-2007 à 11:26:59
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.
Marsh Posté le 02-07-2007 à 11:36:28
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
Marsh Posté le 02-07-2007 à 11:57:45
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. ).
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.
Marsh Posté le 02-07-2007 à 12:07:48
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.
Marsh Posté le 02-07-2007 à 13:01:48
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.
Marsh Posté le 02-07-2007 à 13:39:01
utilise le même code mais remplace les variables de feuille
Marsh Posté le 02-07-2007 à 13:48:50
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
Marsh Posté le 02-07-2007 à 13:56:55
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
Marsh Posté le 02-07-2007 à 14:09:48
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.
Marsh Posté le 02-07-2007 à 14:30:38
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)
Marsh Posté le 02-07-2007 à 14:53:39
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.
Marsh Posté le 02-07-2007 à 15:03:33
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
Marsh Posté le 02-07-2007 à 15:06:45
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
Marsh Posté le 02-07-2007 à 10:15:13
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
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.