Copier coller une feuille en vba [Résolu/Fermé]

Signaler
Messages postés
218
Date d'inscription
dimanche 23 décembre 2007
Statut
Membre
Dernière intervention
29 mars 2015
-
 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

12 réponses

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
Messages postés
218
Date d'inscription
dimanche 23 décembre 2007
Statut
Membre
Dernière intervention
29 mars 2015
6
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

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
Messages postés
218
Date d'inscription
dimanche 23 décembre 2007
Statut
Membre
Dernière intervention
29 mars 2015
6
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

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
Messages postés
218
Date d'inscription
dimanche 23 décembre 2007
Statut
Membre
Dernière intervention
29 mars 2015
6
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...
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
Messages postés
218
Date d'inscription
dimanche 23 décembre 2007
Statut
Membre
Dernière intervention
29 mars 2015
6
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 !

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
jahawai
Messages postés
218
Date d'inscription
dimanche 23 décembre 2007
Statut
Membre
Dernière intervention
29 mars 2015
6
Héhé, tout simplement... Merci Lupin !
Cdt

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