Problème de copie avec excel

cs_tilous Messages postés 3 Date d'inscription lundi 22 août 2005 Statut Membre Dernière intervention 8 février 2014 - 22 août 2005 à 17:26
thtdlx2 Messages postés 17 Date d'inscription dimanche 10 octobre 2004 Statut Membre Dernière intervention 3 juillet 2008 - 24 août 2005 à 11:38
À l'aide svp,

J'ai un classeur nommé planning dans lequel je sélectionne une série de lignes, ensuite je clique sur un bouton nommé backup. Cette action doit ouvrir le classeur 2005.xls et coller les lignes sélectionnées de mon classeur planning à l'endroit de la première ligne vide. Il serait important que je vide le presse papier avant, car je veut m'assurer qu'il ne contient rien d'autre.

J'ai beau essayer et ça ne marche pas...

Sub backup_final()
Dim j
Dim l

' Ici je voudrais vider le presse papier, mais je ne sais pas comment
'Clipboard.Clear
'Je copie la sélection de mon classeur planning
Selection.Copy
'chemin du fichier 2005.xls
Workbooks.Open Filename:= _
"C:\Documents and Settings\Louise\Bureau\precision\2005.xls"

'Activation de ma feuille de mon classeur 2005.xls
Worksheets("Feuil1").Activate

'Recherche de ma dernière ligne non vide pour obtenir le numéro
ActiveCell.SpecialCells(xlLastCell).Select

l = Split(ActiveCell.Address, "$")(2)

' ici je sélectionne un plage pour recevoir la copie, j'aimerais mieux sélectionner des lignes complètes, mais je sais pas comment faire
Range("A" & l + 1 & ":" & "AJ" & l + 1).Select


' Je colle les données et c'est ici que j'obtient l'erreur "erreur d'exécution -2147417848..." la méthode paste de l'objet worksheet a échoué

ActiveSheet.Paste
Application.CutCopyMode = False
'Je m'assure que le classeur est actif avant la sauvegarde et fermeture
Windows("2005.xls").Activate
ActiveWorkbook.Save
ActiveWindow.Close
End Sub

Est-ce que vous pouvez m'aider, je travaille sur ce code depuis des lunes et je trouve pas la solution

Un gros merci

Une débutante
Louise

4 réponses

michelxld Messages postés 402 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 12 octobre 2008 32
22 août 2005 à 17:43
bonjour


tu peux tester cette macro pour vider le presse papier

Sub viderPressePapier()
'nécéssite d'activer la référence "Microsoft Forms 2.0 Object Library."
Dim Cible As dataObject
Set Cible = New dataObject
Cible.setText ""
Cible.putInClipboard
Set Cible = Nothing
End Sub

bonne soiree
michel
0
thtdlx2 Messages postés 17 Date d'inscription dimanche 10 octobre 2004 Statut Membre Dernière intervention 3 juillet 2008
23 août 2005 à 09:00
Je n 'ai pas essayé de vider le presse papier (je n'en vois pas l'utilité, dans la mesure où tu viens de faire Selection.Copy, cela remplace tout ce qu'il pouvait y avoir à l'intérieur)

Donc sans le faire, j'ai juste remplacé ta ligne
Range("A" & l + 1 & ":" & "AJ" & l + 1).Select

par la ligne suivante :
Cells(CInt(l) + 1, 1).Select

Cela permet de s'affranchir de la zone sur laquelle coller (si elle n'est pas identique à celle d'origine, ça ne va pas)
Et cela semble marcher. Dis moi si c'est le cas chez toi.
0
cs_tilous Messages postés 3 Date d'inscription lundi 22 août 2005 Statut Membre Dernière intervention 8 février 2014
23 août 2005 à 22:57
Bonjour,

Merci pour votre aide, mais j'obtiens encore l'erreur pour le collage, snif snif...

Je commence à désespérer royalement...

L'orsque je lance le code, mon fichier 2005.xls ouvre et il copie mes données à la bonne ligne, mais j'obtiens l'erreur pour le paste juste avant la sauvegarde et fermeture. Je n'y comprends rien.

Auriez-vous une idée, je pourrais vous faire parvenir mon fichier pour que vous puissiez voir ce qui ce passe.

Une débutante
Louise
0
thtdlx2 Messages postés 17 Date d'inscription dimanche 10 octobre 2004 Statut Membre Dernière intervention 3 juillet 2008
24 août 2005 à 11:38
Effectivement, passes moi ton fichier. Tu peux envoyer cela à thibaut.delachaux chez netcourrier.com (je ne met pas le @ volontairement pour ne pas être l'objet de spamming automatique !)
0
Rejoignez-nous