Probleme méthode PasteSpécial

Résolu
Lameche15
Messages postés
155
Date d'inscription
mardi 9 septembre 2008
Statut
Membre
Dernière intervention
29 décembre 2021
- 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
235
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
155
Date d'inscription
mardi 9 septembre 2008
Statut
Membre
Dernière intervention
29 décembre 2021

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
235
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
155
Date d'inscription
mardi 9 septembre 2008
Statut
Membre
Dernière intervention
29 décembre 2021

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
155
Date d'inscription
mardi 9 septembre 2008
Statut
Membre
Dernière intervention
29 décembre 2021

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
235
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