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)

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

koolman61

slt,

je teste et fait savoir.


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


1 2

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


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,390 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.