Pb lors de l'écriture/copie dans un fichier Excell (VBA)
vbalolo
Messages postés13Date d'inscriptiondimanche 1 mai 2005StatutMembreDernière intervention19 janvier 2006
-
6 janv. 2006 à 17:41
vbalolo
Messages postés13Date d'inscriptiondimanche 1 mai 2005StatutMembreDernière intervention19 janvier 2006
-
19 janv. 2006 à 10:54
Messieurs,
Si quelqu'un peut me dépanner, ce serait vraiment super sympa. J'ai "développé" un code qui me permet d'ouvrir un fichier "Toto.xls". Je souhaite écrire dans ce fichier Toto des valeurs émanant de mon fichier d'origine (par exemple les lignes 3 à 14).
Lors de l'exécution, le code plante au niveau de "selection.paste" (prorpiété ou méthode non gérée par cet objet).
Qu'ai je oublié ?
D'avance merci.
Sub ouvrir()
Dim objetSynthese As Workbook
' je souhaite à chaque fois que j'ouvre Toto qu'une feuille soit créée
' je souhaite que le nom de cette feuille provienne du fichier ouvrir Ecell (contenu de la 1ère cellule
' je souhaite copier les lignes 3 à 14 du fichier ouvrir Excell vers le fichier toto
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 200724 6 janv. 2006 à 20:09
En effet !!!
La sélection, en VBA, est un objet (de type Range si je dis pas conneries!). Il ne faut donc pas confondre la sélection de son contenu! Or, là, tu as copié son contenu dans le "presse-papiers". Du coup, il suffit de te positionner quelque part (via Range("A1).Select p.ex.) et de coller le contenu du presse-papiers (et non la sélection qui elle !!!).
C'est juste une logique un tantinet différente de celle de l'utilisateur... héhé, la joie d'être de l'autre coté... de lécran (programmeur quoi!)
Enjoy
<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
vbalolo
Messages postés13Date d'inscriptiondimanche 1 mai 2005StatutMembreDernière intervention19 janvier 2006 9 janv. 2006 à 09:47
Messieurs,
J'avais déjà essayé mais j'ai retenté le coup.....Toujours la même erreur.....
au niveau de "activesheet.paste" (propriété ou méthode non gérée par cet objet).
Sub ouvrir()
Dim objetSynthese As Workbook
' je souhaite copier les lignes 3 à 14 du fichier ouvrir Excell vers le fichiet toto
' je souhaite à chaque fois que j'ouvre Toto qu'une feuille soit créée
' je souhaite que le nom de cette feuille provienne du fichier ouvrir Ecell (contenu de la 1ère cellule
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 200724 9 janv. 2006 à 16:29
Humm... Ceci ne serait-il pas mieux déjà ??? :
Set objetSynthese = GetObject("C:\tata.xls") 'Perso, j'ai jamais fait comme ça donc, je sais pas...
objetSynthese.Activate 'Et ça l'ouvre d'emblé ???
Sheets.Add
'Ca
Sheets(1).Name = nomdelafeuille
'Ou ça, c'est au choix!
Sheets(1).Name = Sheets("depart").Cells(1,1)
<strike>objetSynthese.Save</strike> 'Cf. en bas...
'Ca
Sheets(1).Rows(
"3:14").Select
'Ou ça, c'est au choix!
Sheets(1).Columns("3:14"
).Select
'Mais pas ça (enfin, si ça ne fonctionne pas!)
<strike>Range("A1").Select</strike>
'Ainsi, tu règle le problème de différence de taille de collage...
ActiveSheet.Paste
objetSynthese.Save 'A mettre avant le Close me semble-t-il !!! Non ???
ActiveWorkbook.Close
Set objetSynthese = Nothing
Là, ça devrait déjà être mieux non ???
Enjoy
<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
Vous n’avez pas trouvé la réponse que vous recherchez ?
vbalolo
Messages postés13Date d'inscriptiondimanche 1 mai 2005StatutMembreDernière intervention19 janvier 2006 10 janv. 2006 à 13:21
J'ai encore des soucis.....
Les taches 1 et 2 fonctionnent sans pb.
Le code ne plante plus (pb du plantage au niveau du activesheet.paste est visiblement résolu "visiblement "car je ne peux le vérifier (voir plus bas)). Si je comprends bien il fallait donc sélectionner la même plage que la sélection originale avant d'effectuer le collage. Ce qui signifie que si je veux copier la feuille en entier il me faudra sélectionner un "cells.select"
Mon nouveau souci est que je n'arrive pas à ouvrir correctement tata.xls (une fois finie l'exécution du code). Il s'ouvre mais aucun onglet n'apparait. Lorsque je vais dans l'éditeur VBA, je vois que la nouvelle feuille a bien été créé, je suppose que les éléments ont bien été collés mais je ne peux le vérifier car les onglets ne sont pas accessibles. Sans doute un pb lors de la fermeture du fichier Tata ?????
Voilà le dernier code.....
Sub ouvrir()
Dim objetSynthese As Workbook
' tache 1 : je souhaite à chaque fois que j'ouvre Tata qu'une feuille soit créée
' tache 2 : je souhaite que le nom de cette feuille provienne du fichier ouvrir Ecell (contenu de la 1ère cellule
' tache 3 : je souhaite copier les lignes 3 à 14 du fichier "Base"" vers le fichier "tata"
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 200724 10 janv. 2006 à 15:34
Je ne comprends pas très bien ton problème... Le mieux serait de refaire un post sur le forum (en essayent d'être le plus clair possible et en précisant bien le langage utilisé et sa version!). Comme je te l'ai dit, je ne connait pas "GetObject("...")" !!! Et a mon sens, le problème vient du mode d'ouverture et, par extension, du mode d'enregistrement!
Enjoy
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )