|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : problème de 'paste' en VBA excell [ Langages dérivés / VBA ] (koolman61)
Informations & options pour cette discussion
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é 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
Paste special with VB6 [ par benjavd ]
Bonjour,Je voudrais exécuter un paste special value avec VB6.Du genre: Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
cellule vide ( urgent !!) [ par llouisin ]
laurent salut je voudrai transferer des donnée d'un feuille excel vers une autres.J'ai 2 colonne dans la premiere feuille et ce que je voudrai c'est :
VBA - Publipostage avec source XLS [ par Manolitoos ]
Bonjour,Je suis confronté à un problème en VBA : en vue d'automatiser un publipostage avec une source EXCEL, je souhaiterais pouvoir choisir la feuill
Exportation en .XLS trop lente! [ par Philipina ]
Bonjour,Je veux exporter un tableau pour créer un fichier .xls. J'ai regardé le forum et les sources pour trouver le code.Cela fonctionne correctement
copie de control d'une userform vers une autre [ par tomistef ]
Bonjour,je souhaiterais savoir comment copier les controls d'une Userform vers une autre en vue d'un enregistrement. Le code suivant ne fonctionne pas
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|