Bug de PasteSpecial

Bonjour à tous,

j'espère ne pas générer de doublon, je n'ai pas trouvé de solution sur les sujets existants.

J'ai une macro dans laquelle je fais plusieurs copier-coller entre 2 fichiers (dans une boucle for), et j'ai un crash assez bizarre. Le premier passage de la boucle échoue à chaque fois. Je prends l'erreur "La méthode PasteSpecial de la classe Range a échoué"

Si avec le débogage je passe à l'itération suivante, tout se passe bien. Je sais que ce n'est pas lié au fichier (cellules fusionnées, etc) car cette erreur se produit aussi si je change 1ère colonne traitée. Une fois que j'ai eu l'erreur, je peux refaire tourner la macro autant de fois que je veux, je n'ai plus cette erreur.

Voici le code qui pose problème:

    For i = 7 To 8
    Workbooks("rapport.xlsm").Sheets("Macro").Activate
    country = Cells(i, 1).Value
    File = Cells(i, 2).Value

    FilePath = WorkingDirectory & "extract_pays\" & File
    File1 = "data.xlsx"
    File1Path = WorkingDirectory & File1

   On Error Resume Next
    Workbooks.Open (File1Path)
   On Error GoTo 0

    If Dir(FilePath) = "" Then
        MsgBox "Le fichier " & File & " n'existe pas.", vbExclamation, "Message Erreur"
    Else
        Workbooks.Open (FilePath)
        Windows(File).Activate
        Sheets("summary").Select
        Range("B:B").Select
        Selection.Copy

        Windows(File1).Activate
        Sheets("Feuil1").Select
        Cells(1, Application.WorksheetFunction.Match(country, Range("1:1"), 0)).Select
        Selection.PasteSpecial Paste:=xlPasteValues

Merci pour votre aide!

Bonjour

Sans voir le fichier, essaie ceci

Workbooks(file).Sheets("summary").Range("B:B").Copy
Workbooks(File1).Sheets("Feuil1").Cells(1, Application.WorksheetFunction.Match(country, Range("1:1"), 0)).PasteSpecial Paste:=xlPasteValues

si ok, clique sur le v vert à coté du bouton EDITER pour cloturer le fil lors de ta réponse

Crdlt

Bonjour Dan, merci pour ta réponse.

Alors effectivement cela règle le problème au niveau du PasteSpecial (je veux bien que tu m'expliques pourquoi d'ailleurs, ca me permettrait de ne pas refaire l'erreur), par contre le match sur le pays ne focntionne plus:

Cells(1, Application.WorksheetFunction.Match(country, Range("1:1"), 0)).Select

Avant cela allait bien coller ma colonne dans la colonne contenant le nom du pays, maintenant cela colle à chaque fois dans la première colonne

Re

essaie plutot comme ceci

Workbooks(file).Sheets("summary").Range("B:B").Copy
Workbooks(File1).Sheets("Feuil1").Cells(1, Application.WorksheetFunction.Match(country, Workbooks(File1).Sheets("Feuil1").Range("1:1"), 0)).PasteSpecial Paste:=xlPasteValues

crdlt

Ca marche parfaitement merci beaucoup pour ton aide!

Il y a une logique a ce que ça marche comme ça et pas avec mon code original? J'essaye de comprendre pur en plus reproduire l'erreur.

Re

Je pense que l'erreur vient du fait que lorsque tu actives la fenetre Windows(File1) et la feuil1, le nom COUNTRY n'est pas bien identifié. La macro le cherche dans le fichier actif et pas dans le fichier source

A vérifier bien entendu car sans voir les fichiers ...

Fais éventuellement un test en remplaçant le mot COUNTRY par le nom d'un pays

Crdlt

Merci beaucoup pour l'explication

Rechercher des sujets similaires à "bug pastespecial"