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
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
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 .
ç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é...
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
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
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).
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
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.
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
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.