Probleme méthode PasteSpécial [Résolu]

Messages postés
112
Date d'inscription
mardi 9 septembre 2008
Dernière intervention
5 mars 2018
- - Dernière réponse : ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- 18 févr. 2015 à 13:04
Bonjour,

La méthode PasteSpécial de l'objet range à échoué.

Voilà le message d'erreur que je reçois en lançant la macro suivante:

Private Sub CommandButtonOK_Click()


Dim numsemaine As Integer

Application.Selection.Copy
'MsgBox ActiveSheet.Name

numsemaine = Semaine.TextBoxNum
Sheets("Semaine Type").Copy Before:=Sheets(1)
Sheets("Semaine Type (2)").Select
Sheets("Semaine Type (2)").Name = "Sem " & numsemaine

Worksheets("Sem " & numsemaine).Activate
Worksheets("Sem " & numsemaine).Range("B2") = "Semaine n° " & numsemaine


Worksheets("Sem " & numsemaine).Range("D11:Q39").Select
Worksheets("Sem " & numsemaine).Range("D11:Q39").PasteSpecial

Semaine.Hide



End Sub


Qqn peut-il m'aider à trouver un début de piste de recherche?
Ce code marchait parfaitement dans un autre classeur
Je suis perdu!!

Merci d'avance
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
259
1
Merci
A savoir remplacer Range("F7:S35") par qqch du style "selection"

Elle est bien bonne, celle-là ===>>> Mais FAIS-le donc !

Et n'oublie pas que, par définition, l'objet selection est forcément celui de la feuille en cours. Il ne faut donc pas préciser la feuille où est faite la sélection.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 122 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
112
Date d'inscription
mardi 9 septembre 2008
Dernière intervention
5 mars 2018
0
Merci
Après avoir lu de nombreux posts sur le sujet j'ai l'impression que mon problème est insoluble.
Bref,
Je souhaiterais changer de méthode et utiliser un truc du style:

Sheets(1).Range(X)=Sheets(2).Range(Y)
Mais en conservant les mises en forme
notamment la couleur de remplissage.

Qqn sait-il faire cela?

Merci d'avance
Commenter la réponse de Lameche15
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
259
0
Merci
Bonjour,
Je souhaiterais changer de méthode et utiliser un truc du style:

Sheets(1).Range(X)=Sheets(2).Range(Y)
Mais en conservant les mises en forme
notamment la couleur de remplissage.
Qqn sait-il faire cela?

Evidemment. On sait tous faire cela.
Ouvre donc ton aide VBA à la méthode Range.Copy et utilise-là donc avec ses arguments, dont l'argument destination.
Et cesse de "travailler" avec ces affreuses méthodes de Select, Activate, Copy, Paste, etc ... Travaille directement depuis VBA avec les objets Excel
Commenter la réponse de ucfoutu
Messages postés
112
Date d'inscription
mardi 9 septembre 2008
Dernière intervention
5 mars 2018
0
Merci
Merci ucfoutu,

Malheureusement je ne trouve pas comment faire si plage cible n'est pas prédéfinie dans ma macro.
Je voudrais que la plage selectionnée d'une feuille se copy dans une plage prédéfinie d'une autre.

Worksheets(nomfeuille).Range("F7:S35").Copy _
Destination:=Worksheets("Sem" & numsemaine).Range("D11")

A savoir remplacer Range("F7:S35") par qqch du style "selection"
Commenter la réponse de Lameche15
Messages postés
112
Date d'inscription
mardi 9 septembre 2008
Dernière intervention
5 mars 2018
0
Merci
Moi je dis, à ce niveau la de bêtise, il faut arrêter le vba.

Merci ucfoutu de m'avoir sorti la tête du guidon...
Commenter la réponse de Lameche15
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
259
0
Merci
Non : pas "arrêter le VBA", mais simplement commencer à t'y intéresser. Il est à la portée de tous, crois-moi.
Il te faut maintenant libérer cette discussion. Cela se fait par un clic sur le tag RESOLU au niveau de ton tout premier message.
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.