VBA PasteSpecial qui ne fonctionne pas

Maxitos

XLDnaute Nouveau
Bonjour tout le monde !

J'ai un problème qui me turlupine, et je pense que vos regards éclairés sauront me dire ce qui ne va pas.

Le code suivant fonctionne :

Code:
dim adresse as string
Workbooks(classeur).Sheets(feuille).Activate

Range("A1").Value = 1000
Range("A1").Copy

adresse = Range("plagenommée").Address

Range(adresse).Parent.Activate
Range(adresse).Activate

ActiveSheet.Paste

Le même mais avec un PasteSpecial ne fonctionne pas (1004 : Erreur definie par l'application ou par l'objet) :

Code:
dim adresse as string
Workbooks(classeur).Sheets(feuille).Activate

Range("A1").Value = 1000
Range("A1").Copy

adresse = Range("plagenommée").Address

Range(adresse).Parent.Activate
Range(adresse).Activate

'erreur ici :
ActiveSheet.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _
        SkipBlanks:=False, Transpose:=False

Quelqu'un aurait une idée d'où mon problème pourrait venir ?

Merci d'avance ;)

Max
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : VBA PasteSpecial qui ne fonctionne pas

Bonjour à tous


Pas certain d'avoir compris toutes les subtilités de cette discussion... À tout hasard :​
VB:
Sub tata()
    Workbooks(classeur).Worksheets(feuille).Activate
    With Range("A1"): .Value = 1000: .Copy: End With
    With Range("plagenommée"): .Parent.Activate: .PasteSpecial Operation:=xlMultiply: End With
End Sub



ROGER2327
#5992


Dimanche 8 Gidouille 139 (Sainte Boudouille, bayadère - fête Suprême Tierce)
4 Messidor An CCXX, 3,1222h - véronique
2012-W25-5T07:29:35Z
 

Maxitos

XLDnaute Nouveau
Re : VBA PasteSpecial qui ne fonctionne pas

Merci à ceux qui ont pris du temps pour répondre à mon problème.

En ce qui concerne les remarques sur la fameuse "adresse"

Range("maplage").Address renvoie par exemple "Q3:Q10", cette adresse récupérée dans une String, en l’occurrence "adresse":

Code:
dim adresse as string
adresse = range("maplage").Address

Donc est-ce que range(adresse) revient à range("Q3:Q10") ? Auquel cas je ne comprends pas la plupart de vos remarques :confused:

Sinon que signifie range(adresse) ?

Quoiqu'il en soit j'ai résolu mon problème en faisant un barbare:

Code:
For Each Cell In Range("maplage")
Cell.Value = Cell.Value * x
Next



Troll :
Note à Misange, être nouveau sur un forum ne signifie pas être un abruti fini, donc je tiens compte des remarques et cela ne m'empêche pas d'avoir mes avis/objections/questions (du fait de mon faible niveau VBA), c'est le principe de la pédagogie.
Je ne comprendrai jamais cet esprit "Montre moi ton nombre de messages et je te dirais qui tu es", mais c'est un autre débat, très certainement le propre de l'être humain :).
 

tototiti2008

XLDnaute Barbatruc
Re : VBA PasteSpecial qui ne fonctionne pas

Bonjour à tous,

être nouveau sur un forum ne signifie pas être un abruti fini, donc je tiens compte des remarques et cela ne m'empêche pas d'avoir mes avis/objections

ça ne signifie pas nécessairement le contraire non plus, d'ailleurs
Je ne comprend pas la violence de ton retour, il me semble que nous n'avons fait que te préciser les habitudes d'utilisation du forum, personne ne te traite d'abruti.
Il ne me semble pas que nous l'ayons fait violemment, je t'ai précisé que les fils multiples sur le même sujet ne sont pas appréciés, tu considères que ce sont des sujets différents, très bien.

Je ne comprendrai jamais cet esprit "Montre moi ton nombre de messages et je te dirais qui tu es"

Eh oui, on est habitué du forum, et on finit par avoir la prétention de connaître les habitudes de son utilisation, très orgueilleux de ma part, désolé...
 

Maxitos

XLDnaute Nouveau
Re : VBA PasteSpecial qui ne fonctionne pas

Eh oui, on est habitué du forum, et on finit par avoir la prétention de connaître les habitudes de son utilisation

Alors allons-y ...

Charte du Forum :

2 - La Présentation de la Question

c) A moins que deux questions soient réellement liées au même problème, il est souhaitable de faire un nouveau sujet par question. Ceci dans le but de rester dans un sujet précis tout au long d’un fil de discussion. Donc autant que possible : Une Question = Un fil de discussion

Bref.

Encore merci à ceux qui contribuent à ce forum sans jugement de valeur et avec humilité. ;)

Max.
 

Si...

XLDnaute Barbatruc
Re : VBA PasteSpecial qui ne fonctionne pas

Salut Tous

et Si... on se posait la question existentialiste : "Où est écrite la macro ?"

exemple : plagenommée en B4:B14 d'une feuille quelconque

Avec cette macro :
Code:
Sub f()
  Dim adresse As String
  Sheets("Feuil1").Activate
  Range("A1").Value = 1000
  Range("A1").Copy

  adresse = Range("plagenommée").Address

  Range(adresse).Parent.Activate
  Range(adresse).Select

  Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply
End Sub
écrite dans un Module standard. Cela fonctionne :
les cellules de B4:B14 de la feuille "Feuil1" sont multipliées par 1000

écrite dans le Module de la feuille où plagenommée est définie.Cela fonctionne :
les cellules de plagenommée sont multipliées par 1000

écrite dans le Module d'une autre feuille que celle où plagenommée est définie
ne fonctionne pas car A1 n'y est pas initialisée.
A1 est à 1000 dans feuil1 et non dans cette feuille !


Bien entendu Range(adresse) est différent de Range(plagenommée) mais le tout est de savoir ce que l'on veut et ne pas exclure l'une ou l'autre éventualité !

Pour ma part, je l'écrirais autrement (affaire d'habitude personnelle).
 

Misange

XLDnaute Barbatruc
Re : VBA PasteSpecial qui ne fonctionne pas

Merci à ceux qui ont pris du temps pour répondre à mon problème.

En ce qui concerne les remarques sur la fameuse "adresse"

Range("maplage").Address renvoie par exemple "Q3:Q10", cette adresse récupérée dans une String, en l’occurrence "adresse":

Code:
dim adresse as string
adresse = range("maplage").Address

Donc est-ce que range(adresse) revient à range("Q3:Q10") ? Auquel cas je ne comprends pas la plupart de vos remarques :confused:

Sinon que signifie range(adresse) ?

Quoiqu'il en soit j'ai résolu mon problème en faisant un barbare:

Code:
For Each Cell In Range("maplage")
Cell.Value = Cell.Value * x
Next



Troll :
Note à Misange, être nouveau sur un forum ne signifie pas être un abruti fini, donc je tiens compte des remarques et cela ne m'empêche pas d'avoir mes avis/objections/questions (du fait de mon faible niveau VBA), c'est le principe de la pédagogie.
Je ne comprendrai jamais cet esprit "Montre moi ton nombre de messages et je te dirais qui tu es", mais c'est un autre débat, très certainement le propre de l'être humain :).

Tu peux toujours compliquer les choses à souhait :
définir une plage truc
récupérer l'adresse de la plage truc
machin=range("truc").adresse
passer l'adresse de la plage truc en paramètre un range
bidule=range(machin).value

n'empêche qu'il est plus simple de faire directement
bidule=range("truc")
mais tu fais comme tu veux.
tu as l'air très sur de toi, au point qu'on se demande pourquoi tu viens chercher des conseils. Conseils répétés par 3 personnes différentes qui plus est.


Pour ta remarque de troll (c'est pas moi qui utilise ce terme, c'est toi, mais là je suis d'accord avec toi)
je ne t'ai pas traité d'abruti, ni personne ici que je sache.
Il se trouve que des gens qui ont beaucoup de messages à leur compteur sont des gens qui REPONDENT à des questions depuis très longtemps, de nombreuses années en fait. Donc il ne s'agit pas de dire "montre moi ton nombre de messages je te dirai qui tu es" mais simplement de réfléchir une seconde et de se dire
- je viens ici parce que j'ai un problème sur VBA
- des gens qui répondent depuis de nombreuses années sur un forum entièrement consacré à excel me répondent, essayons de comprendre leurs conseils et de les tester
- si ces mêmes personnes me donnent un conseil sur la façon d’utiliser au mieux un forum que je fréquente depuis très peu de temps, ils sont probablement mieux placés que moi pour savoir comment ce forum fonctionne depuis plus de 10 ans.
Si on suit ta réponse à Tototiti, il faudrait faire une question par ligne de macro ou presque ! bonjour pour s'y retrouver.

Ne t'étonne pas si après une sortie aussi agressive de ta part envers des gens qui n'ont fait que vouloir t'aider tu rencontres assez peu d'attention.
 

Maxitos

XLDnaute Nouveau
Re : VBA PasteSpecial qui ne fonctionne pas

Bonjour Si...

Effectivement je ne m'étais pas posé cette question.
Sachant que chacune de mes plages sont définies dans une unique feuille car pour des raisons pratiques, les mêmes noms de plage sont réutilisés dans d'autres feuilles, je pense que j'ai du m’emmêler les pinceaux avec ça :eek:

Misange,

Au sujet du .Address qui fait polémique

Le fait est que, bien que plus "alambiqué" selon toi, c'est un raisonnement correct et donc qui fonctionne (dans certains cas, cf le message de Si... ).

Faire 1+4-3-1+1 donnera 2 , c'est évidemment fastidieux mais cela peut avoir un intérêt de passer par des étapes intermédiaires (intérêt qui, je te l'accorde peut t'échapper étant donné l'aléa d'informations). Cela dit, merci d'avoir tenté de simplifier les choses.
 

Discussions similaires

Réponses
2
Affichages
117

Statistiques des forums

Discussions
312 215
Messages
2 086 318
Membres
103 176
dernier inscrit
jean.yvesjean.yves