Accueil > Forum > > > > problème de 'paste' en VBA excell
problème de 'paste' en VBA excell
dimanche 20 juillet 2008 à 16:35:27 |
problème de 'paste' en VBA excell

koolman61
|
Bonjour, Voilà le problème, chaque fois qu'il arrive à pastespecial, j'ai un message d'erreur. erreur d'execution '1004'
La méthode PasteSpécial de la classe Range a échoué.
Je ne trouve pas la solution.
merci de votre aide. b'def des variables Dim k As String Dim nma As String Dim typ As String Dim pat As String Application.CutCopyMode = False 'Rend le presse-papier disponible et vide Range("j2:o11").Copy 'selection des données à copier 'recherche du classeur machines le 14/07/08 par Pascal nma = Range("b8").Value typ = Range("d10").Value 'type de machine sur la feuille de saisie pat = "C:\Documents and Settings\Pascal\Bureau\fiche de travail\" 'trouve le bon classeur If typ = "ERE" Or typ = "BT" Then Workbooks.Open (pat & "ere.xls") Workbooks("ERE.xls").Activate 'se placer sur la feuille machine Worksheets(nma).Activate 'trouver dernière ligne vide k = Sheets(nma).UsedRange.SpecialCells(xlLastCell).End(xlToLeft).Row + 1 'se placer sur 1ère cellule vide Sheets(nma).Cells(k, 1).Select 'coller les cellules copiées C'est ici que ça déconne pour chaque type de machine Selection.PasteSpecial Paste:=xlpastevalue, operation:=xlNone, skipblanks:=False, Transpose:=False Selection.PasteSpecial Paste:=xlformat, operation:=xlNone, skipblanks:=False, Transpose:=False 'sauvegarde Workbooks("ERE.xls").Save 'fermeture du classeur Workbooks("ERE.xls").Close ElseIf typ = "KMS" Or typ = "EKS" Then Workbooks.Open (pat & "KMSEKS.xls") Workbooks("KMSEKS.xls").Activate 'se placer sur la feuille machine Worksheets(nma).Activate 'trouver dernière ligne vide k = Sheets(nma).UsedRange.SpecialCells(xlLastCell).End(xlToLeft).Row + 1 'se placer sur 1ère cellule vide Worksheets(nma).Cells(k, 1).Select 'coller les cellules copiées Selection.PasteSpecial Paste:=xlpastevalue, operation:=xlNone, skipblanks:=False, Transpose:=False Selection.PasteSpecial Paste:=xlformat, operation:=xlNone, skipblanks:=False, Transpose:=False 'sauvegarde Workbooks("KMSEKS.xls").Save 'fermeture du classeur Workbooks("KMSEKS.xls").Close ElseIf typ = "ECE" Or typ = "ECP" Then Workbooks.Open (pat & "ECPECE.xls") Workbooks("ECPECE.xls").Activate 'se placer sur la feuille machine Worksheets(nma).Activate 'trouver dernière ligne vide k = Sheets(nma).UsedRange.SpecialCells(xlLastCell).End(xlToLeft).Row + 1 'se placer sur 1ère cellule vide Worksheets(nma).Cells(k, 1).Select 'coller les cellules copiées Selection.PasteSpecial Paste:=xlpastevalue, operation:=xlNone, skipblanks:=False, Transpose:=False Selection.PasteSpecial Paste:=xlformat, operation:=xlNone, skipblanks:=False, Transpose:=False 'sauvegarde Workbooks("ECPECE.xls").Save 'fermeture du classeur Workbooks("ECPECE.xls").Close ElseIf typ = "EFG" Then Workbooks.Open (pat & "EFG.xls") Workbooks("EFG.xls").Activate 'se placer sur la feuille machine Worksheets(nma).Activate 'trouver dernière ligne vide k = Sheets(nma).UsedRange.SpecialCells(xlLastCell).End(xlToLeft).Row + 1 'se placer sur 1ère cellule vide Worksheets(nma).Cells(k, 1).Select 'coller les cellules copiées Selection.PasteSpecial Paste:=xlpastevalue, operation:=xlNone, skipblanks:=False, Transpose:=False Selection.PasteSpecial Paste:=xlformat, operation:=xlNone, skipblanks:=False, Transpose:=False 'sauvegarde Workbooks("EFG.xls").Save 'fermeture du classeur Workbooks("EFG.xls").Close ElseIf typ = "ETV" Then Workbooks.Open (pat & "ETV.xls") Workbooks("ETV.xls").Activate 'se placer sur la feuille machine Worksheets(nma).Activate 'trouver dernière ligne vide k = Sheets(nma).UsedRange.SpecialCells(xlLastCell).End(xlToLeft).Row + 1 'se placer sur 1ère cellule vide Worksheets(nma).Cells(k, 1).Select 'coller les cellules copiées Selection.PasteSpecial Paste:=xlpastevalue, operation:=xlNone, skipblanks:=False, Transpose:=False Selection.PasteSpecial Paste:=xlformat, operation:=xlNone, skipblanks:=False, Transpose:=False 'sauvegarde Workbooks("ETV.xls").Save 'fermeture du classeur Workbooks("ETV.xls").Close ElseIf typ = "ETX" Or typ = "EKX" Then Workbooks.Open (pat & "ETXEKX.xls") Workbooks("ETXEKX.xls").Activate 'se placer sur la feuille machine Worksheets(nma).Activate 'trouver dernière ligne vide k = Sheets(nma).UsedRange.SpecialCells(xlLastCell).End(xlToLeft).Row + 1 'se placer sur 1ère cellule vide Worksheets(nma).Cells(k, 1).Select 'coller les cellules copiées Selection.PasteSpecial Paste:=xlpastevalue, operation:=xlNone, skipblanks:=False, Transpose:=False Selection.PasteSpecial Paste:=xlformat, operation:=xlNone, skipblanks:=False, Transpose:=False 'sauvegarde Workbooks("ETXEKX.xls").Save 'fermeture du classeur Workbooks("ETXEKX.xls").Close End If End Sub
|
|
lundi 21 juillet 2008 à 08:54:16 |
Re : problème de 'paste' en VBA excell

Molenn
|
Le pb vient en fait que tu copies entre deux classeurs, et là, l'enregistreur de macro est mal foutu parce qu'il ne représente pas tout ce que tu fais. Il faut systématique préciser à Excel ce que tu fais. Je ne vais pas récrire ton code, mais je vais te donner le principe.
Personnellement, j'enregistre dans deux variables pour récupérer le nom des 2 classeurs dans lesquels je travaille (sous entendu que le code se trouve dans le fichier Source et que tu veux copier dans le fichier que tu vas ouvrir) : NomSource = activeWorkbook.name NomCible = "ERE.xls" 'Nom du fichier que tu as choisis d'ouvrir
Ensuite, pour faire ta copie, il suffit d'écrire : Workbooks(NomSource).worksheets("Feuil1").range("A1:A10").copy Workbooks(NomCible).worksheets("Feuil1").range("A1:A10").PasteSpecial Paste:=xlpastevalue, operation:=xlNone, skipblanks:=False, Transpose:=False
Ah oui, au passage, tu peux réécrire ton code pour te débarrasser de toutes les phases de Select ... C'est l'enregistreur de macro qui te colle ça, mais ça ne sert à rien dans ton cas.
Molenn
|
|
lundi 21 juillet 2008 à 17:13:15 |
Re : problème de 'paste' en VBA excell
|
lundi 21 juillet 2008 à 19:11:54 |
Re : problème de 'paste' en VBA excell

koolman61
|
sauf que j'ai pas utilisé l'enregistreur
|
|
mardi 22 juillet 2008 à 09:46:39 |
Re : problème de 'paste' en VBA excell

koolman61
|
bonjour,
J'ai allégé le code, mais toujours la même erreur.
'def des variables Dim k As String Dim nma As String Dim typ As String Dim pat As String Application.CutCopyMode = False 'Rend le presse-papier disponible et vide 'recherche du classeur machines le 14/07/08 par Pascal nma = Range("b8").Value 'recherche du classeur machines le 14/07/08 typ = Range("d10") & ".xls" 'type de machine sur la feuille de saisie pat = "C:\Documents and Settings\ple1210\Desktop\feuille travail\" 'trouve le bon classeur Workbooks.Open (pat & typ) 'trouver dernière ligne vide k = Sheets(nma).UsedRange.SpecialCells(xlLastCell).End(xlToLeft).Row + 1 'copier/coller les cellules et le problème erreur d'exécution 9 ... l'indice n'appartient pas à la sélection Workbooks(pat & "feuille de travail(v2).xls").Worksheets("Feuille de travail").Range("j2:o11").Copy Workbooks(pat & typ).Worksheets(nma).Range(k, 1).PasteSpecial Paste:=xlpastevalue, operation:=xlNone, skipblanks:=False, Transpose:=False 'sauvegarde Workbooks(typ).Save 'fermeture du classeur Workbooks(typ).Close End Sub
|
|
mardi 22 juillet 2008 à 09:49:03 |
Re : problème de 'paste' en VBA excell

koolman61
|
l'erreur est entre le rouge et l'orange
|
|
mardi 22 juillet 2008 à 11:57:36 |
Re : problème de 'paste' en VBA excell

Molenn
|
Une fois qu'un classeur (Workbooks) est ouvert, il ne faut plus le désigner par son chemin et son nom, mais seulement pas son nom, c'est à dire que ton Workbooks(pat & "feuille de travail(v2).xls") doit être remplacé par Workbooks("feuille de travail(v2).xls")
et donc Workbooks(pat & typ) par Workbooks(typ)
Molenn
|
|
mardi 22 juillet 2008 à 13:19:45 |
Re : problème de 'paste' en VBA excell

koolman61
|
et toujours l'erreur '1004' erreur définie par l'application ou par l'objet
ici
Workbooks(typ).Worksheets(nma).Range(k, 1).PasteSpecial Paste:=xlpastevalue, operation:=xlNone, skipblanks:=False, Transpose:=False
|
|
mardi 22 juillet 2008 à 13:37:56 |
Re : problème de 'paste' en VBA excell

Molenn
|
Dans Workbooks(typ).Worksheets(nma).Range(k, 1).PasteSpecial ,
Range(k,1) ,'a aucune signification. Il faut mettre au choix : Cells (k,1) ou Range("A" & k)
Molenn
|
|
mardi 22 juillet 2008 à 13:42:45 |
Re : problème de 'paste' en VBA excell

koolman61
|
au niveau xlpastevalue en passant dessus il me met vide
|
|
Cette discussion est classée dans : xls, false, paste, workbooks, nma
Répondre à ce message
Sujets en rapport avec ce message
maco pour filtrer plusieurs listes excel 2000 [ par bobbob83 ]
bonjour j'ai fais une macro de tri automatique pour pouvoir trier plusieur listes car si je fais une seul liste le fichier est trop gr
Enigme VBA => ouverture/fermeture classeur [ par DoDwDn_ ]
Bonjour à tous, Je chercher à optimiser la rapidité de mon application Excel, et je me suis rendu compte d'une bizarrerie que je ne parviens pas à co
vba access automation pb de copier coller [ par darkspoilt ]
Bonjour, je voudrais savoir ce qu'il cloche dans mon code il arrete pas de me mettre que ma méthode paste a échoué xls.Workbooks("e_analyse_croisée
Chercher valeur cellule dans autre répertoire / classeur [ par Seb1984 ]
Bonjour, je veux créer une appli VBA et j'aimerais savoir pkoi mon code bloque, je voudrais aller chercher une valeur dans la base de donnée du classe
Debutant - Probleme Microsofts CommonDialog manquant [ par star42 ]
bonjour..j'ai un ami qui m'avais bidouiller de quoi faire une facture, devis avec article, client sous excel. et c'était en 2000.et j'essaye de réutil
tester des cellules et lancer une procédure [ par titamy ]
je voudrais selectionner les champs dans une liste se trouvant dans la feuille 3 je prends la premiere valeur et la mets dans la cellule C2 de la feui
Remplir un fichier Excel à partir d'unn fichier DBF en utilisant les macro vb [ par saindou ]
Bonjour à tout le monde J'ai des données dans un fichier dbf,j'aimerais les recuperer et remplir un fichier excel qui se trouve dans le meme repertoi
VBA Envoi de mail avec Shell, avec piece jointe, probleme! [ par micom59 ]
Bonjour! j'espère que vous allez pouvoir régler mon petit soucis. J'essais d'automatiser l'envoi automatique d'un mail, avec une pièce jointe avec u
[Déplacé .Net --> VBA] Recopie feuille [ par Peponne31 ]
Bonsoir à tous, dans un classeur, j'ai 2 feuilles du nom de Devis1page et Devis2pages comme leur noms l'indiquent, elles me permètent de faire des de
Chargement de plusieurs fichiers texte à la fois [ par Atraxor ]
Bonjour. Ayant bidouillé une macro permettant d'ouvrir sous excel un fichier texte avec un commondialo puis de copier le contenu de ce fichier à l'in
Livres en rapport
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|