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

Signaler
Messages postés
126
Date d'inscription
mardi 9 septembre 2008
Statut
Membre
Dernière intervention
20 novembre 2020
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
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

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
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
Messages postés
126
Date d'inscription
mardi 9 septembre 2008
Statut
Membre
Dernière intervention
20 novembre 2020

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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
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
Messages postés
126
Date d'inscription
mardi 9 septembre 2008
Statut
Membre
Dernière intervention
20 novembre 2020

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"
Messages postés
126
Date d'inscription
mardi 9 septembre 2008
Statut
Membre
Dernière intervention
20 novembre 2020

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...
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
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.