Copier coller une feuille en vba

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour,

Je cherche simplement à copier le contenu d'une feuille et à le coller sur une autre.
Voici mon code :

Sheets("Feuil1").Activate
Sheets("Feuil1").Select
Cells.Select
Selection.Copy
            
Sheets("Feuil4").Activate
Sheets("Feuil4").Select
Cells.Select
Selection.PasteSpecial Paste:=xlPasteValues


Où est-ce que je fais une erreur ?

Merci d'avance

10 réponses

  1. Utilisateur anonyme
     
    Bonjour,

    Un [ Coller ] [ Paste ] ne s'effectue jamais sur une plage de plusieurs cellules.

    Il faut positionner le curseur sur la cellule du coin supérieur gauche
    à partir de laquelle le [ Paste ] est effectué.

    Ici :

    Option Explicit 
    
    Sub CopieContenuFeuille() 
    
        Sheets("Feuil1").Select 
        Cells.Select 
        Selection.Copy 
                 
        Sheets("Feuil4").Select 
        Range("A1").Select 
    
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
             SkipBlanks:=False, Transpose:=False
     
        Application.CutCopyMode = False 
        Range("A1").Select 
         
        Sheets("Feuil1").Select 
        Range("A1").Select 
         
    
    End Sub 
    ' 
    


    On sélectionne la cellule [A1] de la Feuil4 qui recevra le [ Paste ].

    La méthode [ .Activate ] est implicite dans la méthode [ .Select ].

    Cdt

    Lupin
    0
  2. Utilisateur anonyme
     
    Merci pour l'info !

    J'avais en effet lu ça sur un autre sujet, mais le problème est que j'ai une erreur pour la sélection de la cellule A1 : 1004 "la méthode select de la classe range a échoué"...

    Savez-vous d'où cela peut venir ?
    Je n'ai pas renommé mes feuilles, ni mes cellules.
    Les infos sont bien copiées, elles restent dans le presse-papier et je peux les coller manuellement même après l'erreur.

    Merci
    0
  3. Utilisateur anonyme
     
    re:

    Ce code ne peut être placer derrière une feuille, il doit impérativement être dans un module à cause du [Select] sur les feuilles.

    Sais-tu comment utiliser le [ pas à pas ] dans VBE (Visual Basic Editor).

    Tu peux suivre le déroulement de la macro instruction par instruction.

    Si tu n'y arrive pas, je t'enverrai un DEMO.

    Cdt

    Lupin
    0
  4. Utilisateur anonyme
     
    Bonjour,

    Je ne comprends pas "placé derrière une feuille". Je l'utilise "derrière un bouton". Lorsque j'appuie sur le bouton, je voudrais (entre autre) que ce qu'il y a sur la feuil1 soit copié sur la feuil4.

    Par "utiliser le pas à pas" entends-tu l'enregistreur de macro ? Si c'est le cas la réponse est oui.

    Merci
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Utilisateur anonyme
     
    re:

    OK - Pour moi derrière un bouton, c'est derrière un formulaire.

    Je distigues 5 types d'object :

    ThisWorkBook
    Feuil1,Feuil...
    UserForm (Formulaire)
    Module
    Module de Classe

    Donc, derrière un formulaire est l'équivalent d'être dans un module,
    du moins pour la porté sur les feuilles.

    Pour ce qui est du mode PAS À PAS, ce n'est pas l'enregistreur
    de macro.

    Place un point d'arrêt en début de procédure, dans la marge de gauche,
    une bande de moins d'un centimètre, tu y clic devant la ligne d'instruction.
    Celle-ci devrait se surligner en noir et un bouton noir apparait dans la marge.

    Tu peux ainsi suivre la routine pas à pas.

    Voici un petit Demo: http://www.cijoint.fr/cjlink.php?file=cj201104/cijMAw2z5q.zip

    Pour lancer le Formulaire :

    // Menu / Outils / Macro / Macro ...

    Sélectionner "AfficheFormulaire"

    Cdt

    Lupin
    0
  7. Utilisateur anonyme
     
    Je ne comprends pas tout à votre réponse...désolé
    Y-a-t'il une manière pour moi de copier-coller ma feuil1 sur feuil4 ?

    Pour ce qui est du démo, je n'arrive pas à le faire fonctionner...
    0
  8. Utilisateur anonyme
     
    re:

    Sous quelle version de Excel travaille-tu ?

    Si XL2007, c'est normal que mon code ne fonctionne pas.

    Si XL2002 ou XL2003 ça doit fonctionner!

    Sinon, si ton fichier ne comporte pas de données sensibles
    (confidentiel), dépose le sur [ http://www.cijoint.fr/ ].

    Cdt

    Lupin
    0
  9. Utilisateur anonyme
     
    Je travaille sur excel 2003.
    En fait, lorsque je faisais :

    Dim v As Long
    Dim w As Long
    For v = 1 To 10000
    For w = 1 To 10000
    Sheets("Feuil4").Cells(v, w).Value = Sheets("Feuil1").Cells(v, w).Value
    Next
    Next
    


    ça ne marchait pas non plus...

    Mais quand je change les 10000 en 100, ça marche. J'ai donc ce que je souhaitais, mais je suis réduit à copier un carré de 100X100.

    Pour l'instant, ça devrait me convenir, donc je ne t'embête pas plus.
    Merci pour ton aide !
    0
  10. Utilisateur anonyme
     
    re:

    En fait, tu ne peux utiliser la limite de 1000 pour les colonnes.

    For w = 1 to 256

    Puisqu'il ne peut y avoir plus de 256 colonnes sous Excel 2003.

    Cdt

    Lupin
    0
    1. Utilisateur anonyme
       
      Héhé, tout simplement... Merci Lupin !
      Cdt
      0
  11. Utilisateur anonyme
     
    Bonjour jahawai,

    Disons que je ne sait pas au départ quel sont tes connaissances
    sur le sujet !

    La copie par boucle pour copier le contenu d'une feuille
    à une autre est bien dans un sens car tu auras apprit
    plein de choses en contruisant ton code.

    Si ça t'interesse, j'ai codé un classeur qui lors de la selection
    de la feuille 1, un menu apparait et permet d'accéder à un
    formulaire qui a un bouton derrière lequel je copie de feuille
    à feuille avec quelques instructions plus rapide qu'une boucle.

    Voici l'exemple :

    http://membre.oricom.ca/lupin/xfr/copiefeuille.zip

    Cdt

    Lupin
    0