Probleme méthode PasteSpécial

Résolu
Lameche15 Messages postés 156 Date d'inscription mardi 9 septembre 2008 Statut Membre Dernière intervention 15 septembre 2022 - 17 févr. 2015 à 12:01
ucfoutu Messages postés 18038 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

6 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 17/02/2015 à 18:17
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
1
Lameche15 Messages postés 156 Date d'inscription mardi 9 septembre 2008 Statut Membre Dernière intervention 15 septembre 2022
17 févr. 2015 à 17:11
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 févr. 2015 à 17:31
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
0
Lameche15 Messages postés 156 Date d'inscription mardi 9 septembre 2008 Statut Membre Dernière intervention 15 septembre 2022
17 févr. 2015 à 18:04
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"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lameche15 Messages postés 156 Date d'inscription mardi 9 septembre 2008 Statut Membre Dernière intervention 15 septembre 2022
18 févr. 2015 à 08:57
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...
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 févr. 2015 à 13:04
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.
0
Rejoignez-nous