Copier une feuille d'un fichier A vers un fichier B(excel) - VB/VBA/VBS - Programmation
Marsh Posté le 20-03-2007 à 17:10:30
As-tu déjà du code qui te retourne une erreur au moins, qu'on puisse te le faire avec un début stp ?
Marsh Posté le 20-03-2007 à 17:41:33
Oui, alors voilà ce que j'ai pour l'instant.
J'ai une fonction trait2() comme suit :
Code :
|
Ce genre de boucle fonctionne, je m'en sers dans mes traitements avant l'appel de cette fonction.
Bon après je laisse bosser le code que j'ai déjà posté et ça ne fonctionne pas comme je le voudrais. J'ai rajouté une instruction pour qu'une feuille soit crée (ongletdest).
Alors déjà j'ai un message d'erreu ici :Fichier_xls_Source.Application.Workbooks.Open Filename:=FichierSource il me dit que le fichier est déjà ouvert... mais je ne l'ai pas ouvert! enfin si plus haut dans mon code mais je l'ai refermé (j'ai vévrifié).
Ensuite, à un moment donnée cette fonction avait marché mais elle ne m'avais pas fait un collage spéciale par valeur. Quand j'ai modifié le code pour rajouter : .PasteSpecial : ça plante.
Marsh Posté le 20-03-2007 à 17:48:14
skyst3f a écrit : Oui, alors voilà ce que j'ai pour l'instant. |
1. Tu peux faire un workbook(FichierSource).activate dans le cas où il serait déjà ouvert
2. qu'est-ce qui plante dans le cas du pastespecial par valeur ?
Marsh Posté le 20-03-2007 à 17:49:46
jpcheck a écrit : 1. Tu peux faire un workbook(FichierSource).activate dans le cas où il serait déjà ouvert |
Eh bien en fait la fonction l'ouvre ici :
Code :
|
Je n'y comprends plus rien moi....
Marsh Posté le 20-03-2007 à 17:54:22
exact, donc tu l'ouvre bien deux fois, une fois avec
Set Fichier_xls_Source = GetObject(FichierSource)
et une autre fois avec
Fichier_xls_Source.Application.Workbooks.Open Filename:=FichierSource
donc il faut supprimer une des deux ouvertures
Marsh Posté le 20-03-2007 à 17:58:58
jpcheck a écrit : exact, donc tu l'ouvre bien deux fois, une fois avec |
Ok, c'est bon, problème corrigé.
Maintenant j'en ai un deuxième : le "copie-collage", et spéciale en plus.
ça : Fichier_xls_dest.Application.Worksheets(OngletDest).Paste , ça ne me donne pas ce que je veux. Moi je veux un collage spécial par valeur. J'ai essayé une méthode d'une de mes précédentes fonctions qui foirent :
Code :
|
Mais ça bloque : "Erreur définie par l'application ou par l'objet"....
Que faire?
Marsh Posté le 20-03-2007 à 19:48:09
skyst3f a écrit :
|
qu est ce que tu veux faire ?
tu veux copier la feuille entière ou une partie de la feuille ?
je viens de tester de copier une feuille dans un autre classeur et je n'y arrive pas (sauf erreur de ma part)--> je suis pas sur que copier une feuille soit possible
par contre copier une plage de données je sais faire.
a toi de voir mais dans le cas de la copie de la feuille je peux pas t'aider
par défaut quand tu crées un nouveau fichier excel il y a combien de feuille ? 3 ?
si c'est pas le cas: outil \ option \ general \ nbre de feuille ds nveaux classeur \ 3
Marsh Posté le 20-03-2007 à 19:58:25
sinon pour ton problème essaye avec ca
Cells.Select
Selection.Copy
Sheets("Feuil3" ).Select
Worksheets(OngletDest).Cells.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
a mon avis ca marchait pas parce que tu n'avais pas vraiment de sélection
Marsh Posté le 21-03-2007 à 09:49:37
Bon j'ai recodé selon les conseils d'un autre forumeurs ma fonction de copie mais ça ne fonctionne toujours pas : l'indice n'appartient pas à la séléction.
Code :
|
En gros, je crée une nouvelle feuille qui s'apelle "Toto" dans mon fichier de destination. Puis je veux copier la feuille Activité mois du fichier source et ensuite je fais un copier/coller spécial par valeur dans le fichier de destination, sur l'onglet toto.
le blocage a lieu au moment de la copie.
Marsh Posté le 20-03-2007 à 16:59:28
Bonjour,
Bon après avoir trouvé des fonctions qui répondaient à mon sujet, j'ai plein de problèmes (copies qui ne se font pas etc...)
Je redemande donc de l'aide car je ne sais plus du tout comment faire et je dois avoir fini cette macro pour jeudi :?
J'ai deux fichiers Excel Template et des fichiers 1,2,3 etc.... Dans le fichier Template il y a une feuille qui s'apelle Toto et dans 1,2,3 etc.. une feuille qui s'apelle Tata-1, Tata-2 (pour le fichier 2) etc...
Je dois copier pour chaque fichier 1,2,3 etc... la feuille Tata-1, tata-2 etc.. dans le fichier Template après la feuille Toto.
Autrement dit à la fin de l'opération dans Template j'ai comme feuille Toto - Tata-1 (qui vient du fichier1), Tata-2(qui vient du 2) etc...
Je ne sais plus comment faire. Autre détail important, je dois faire des copier/coller par valeurs!
Un très grand merci d'avance !
EDIT :
je viens de trouver un code source interessant mais il y a un problème :
Mon "onglet de destination" n'existe pas, je dois en créer un pour à chaque passage dans ce genre de fonction
Message édité par skyst3f le 20-03-2007 à 17:11:26