Réf [A1]

Le
Michel MTO
Bonjour à toutes et à tous,

Je me demandait si on peut mettre en VBA :
[E & i] où i représente une variable, pour référence une cellule.

Je sais qu'on peut le faire comme ceci :
Range("E" & i)

Merci pour vos réponses

Michel MTO
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #19822671
Bonjour.
A mon avis, non.
Tu pourrais mettre :
[E1].Offset(i)
mais l'intérêt est moindre.
Daniel

Bonjour à toutes et à tous,

Je me demandait si on peut mettre en VBA :
[E & i] où i représente une variable, pour référence une cellule.

Je sais qu'on peut le faire comme ceci :
Range("E" & i)

Merci pour vos réponses

Michel MTO


MichDenis
Le #19822941
Bonjour Michel,

L'objet en vba pour désigner une plage de cellule est : "Range"
Les crochets droits c'est une façon d'appeler la propriété "Evaluate"
de l'objet "Application" qui a pour but d'évaluer en vba, l'expression
saisie entre les crochets ou entre les parenthèses de Application.Evaluate( )
Cette façon de faire ne devrait pas remplacer l'utilisation de Range() ou cells()

La saisie de l'expression à évaluer entre les crochets droits n'accepte pas les
variables. Tu dois alors utiliser la propriété "Evaluate"

Quelques façons de faire :
'---------------------------------
x = 8
a = Range("A" & x)
a = cells(x,1)
a = cells(x, "A")
'---------------------------------

et si tu y tiens réellement !!!!
x = 8
a = Application.Evaluate("A" & x)
a = Evaluate("A" & x)
a = [A8]
Il est préférable d'y ajouter le nom de l'onglet de la feuille
a = Evaluate("Feuil1!A" & x)
a = [Feuil1!A8]

P.S. L'usage des crochets ne donne pas droit à la liste déroulante
proposant toutes les méthodes et propriétés de l'objet "Range".





"Michel MTO" 4a699eb2$0$296$
Bonjour à toutes et à tous,

Je me demandait si on peut mettre en VBA :
[E & i] où i représente une variable, pour référence une cellule.

Je sais qu'on peut le faire comme ceci :
Range("E" & i)

Merci pour vos réponses

Michel MTO
Michel MTO
Le #19823221
Merci Daniel pour ta réponse.

Michel

"Daniel.C" news:OV$
Bonjour.
A mon avis, non.
Tu pourrais mettre :
[E1].Offset(i)
mais l'intérêt est moindre.
Daniel

> Bonjour à toutes et à tous,
>
> Je me demandait si on peut mettre en VBA :
> [E & i] où i représente une variable, pour référence une cellule.
>
> Je sais qu'on peut le faire comme ceci :
> Range("E" & i)
>
> Merci pour vos réponses
>
> Michel MTO




Michel MTO
Le #19823211
Merci également Michdenis,
tes réponses sont toujours aussi claires, précises et constructives.

Michel

"MichDenis" news:
Bonjour Michel,

L'objet en vba pour désigner une plage de cellule est : "Range"
Les crochets droits c'est une façon d'appeler la propriété "Evaluate"
de l'objet "Application" qui a pour but d'évaluer en vba, l'expression
saisie entre les crochets ou entre les parenthèses de


Application.Evaluate( )
Cette façon de faire ne devrait pas remplacer l'utilisation de Range() ou


cells()

La saisie de l'expression à évaluer entre les crochets droits n'accepte


pas les
variables. Tu dois alors utiliser la propriété "Evaluate"

Quelques façons de faire :
'---------------------------------
x = 8
a = Range("A" & x)
a = cells(x,1)
a = cells(x, "A")
'---------------------------------

et si tu y tiens réellement !!!!
x = 8
a = Application.Evaluate("A" & x)
a = Evaluate("A" & x)
a = [A8]
Il est préférable d'y ajouter le nom de l'onglet de la feuille
a = Evaluate("Feuil1!A" & x)
a = [Feuil1!A8]

P.S. L'usage des crochets ne donne pas droit à la liste déroulante
proposant toutes les méthodes et propriétés de l'objet "Range".





"Michel MTO"

de discussion :
4a699eb2$0$296$
Bonjour à toutes et à tous,

Je me demandait si on peut mettre en VBA :
[E & i] où i représente une variable, pour référence une cellule.

Je sais qu'on peut le faire comme ceci :
Range("E" & i)

Merci pour vos réponses

Michel MTO



Daniel.C
Le #19823611
Bonjour Denis.
Toutefois, dans le but de faire progresser le débat :
Si [A1] est équivalent à Evaluate("a1"), c'est à dire à
Range("A1").Value, comment expliquer que [A1] soit considéré comme
l'objet Range lui-même ?
[A1].Interior.ColorIndex=3
par exemple ?
Daniel

Bonjour Michel,

L'objet en vba pour désigner une plage de cellule est : "Range"
Les crochets droits c'est une façon d'appeler la propriété "Evaluate"
de l'objet "Application" qui a pour but d'évaluer en vba, l'expression
saisie entre les crochets ou entre les parenthèses de Application.Evaluate( )
Cette façon de faire ne devrait pas remplacer l'utilisation de Range() ou
cells()

La saisie de l'expression à évaluer entre les crochets droits n'accepte pas
les variables. Tu dois alors utiliser la propriété "Evaluate"

Quelques façons de faire :
'---------------------------------
x = 8
a = Range("A" & x)
a = cells(x,1)
a = cells(x, "A")
'---------------------------------

et si tu y tiens réellement !!!!
x = 8
a = Application.Evaluate("A" & x)
a = Evaluate("A" & x)
a = [A8]
Il est préférable d'y ajouter le nom de l'onglet de la feuille
a = Evaluate("Feuil1!A" & x)
a = [Feuil1!A8]

P.S. L'usage des crochets ne donne pas droit à la liste déroulante
proposant toutes les méthodes et propriétés de l'objet "Range".





"Michel MTO" discussion : 4a699eb2$0$296$
Bonjour à toutes et à tous,

Je me demandait si on peut mettre en VBA :
[E & i] où i représente une variable, pour référence une cellule.

Je sais qu'on peut le faire comme ceci :
Range("E" & i)

Merci pour vos réponses

Michel MTO


lolo
Le #19823841
salut
tu peux dire que E est la ligne 5 donc tu peux écrire

cells(5,i) i étant une variable entière

"Michel MTO" 4a69af9f$0$292$
Merci Daniel pour ta réponse.

Michel

"Daniel.C" news:OV$
Bonjour.
A mon avis, non.
Tu pourrais mettre :
[E1].Offset(i)
mais l'intérêt est moindre.
Daniel

> Bonjour à toutes et à tous,
>
> Je me demandait si on peut mettre en VBA :
> [E & i] où i représente une variable, pour référence une cellule.
>
> Je sais qu'on peut le faire comme ceci :
> Range("E" & i)
>
> Merci pour vos réponses
>
> Michel MTO








MichDenis
Le #19824051
Bonjour Daniel,

| Si [A1] est équivalent à Evaluate("a1"), c'est à dire à
| Range("A1").Value, comment expliquer que [A1] soit
| considéré comme l'objet Range lui-même ?
| [A1].Interior.ColorIndex=3 par exemple ?

La définition de l'aide :
Application.Evaluate, méthode
Cette méthode convertit un nom Microsoft Excel en un objet ou une valeur.

Voir la suite de l'aide de la propriété "Evaluate" dans Excel.
Si elle est capable d'évaluer un nom (défini dans l'aide), il est soit converti
en un objet : exemple [A1] -> reconnut comme une cellule et l'expression
est convertie en un objet.. Dans ce cas "Range" et à ce titre, les propriétés
et méthodes d'un objet "Range" lui sont accessibles. Un autre exemple
provenant de l'aide d'Excel :
Charts("Chart1").Evaluate("Légende").Font.Name renvoie le nom de la
police utilisée dans la légende.
La propriété "Evaluate" ne s'adresse pas particulièrement à un nom
désignant un objet "Range". De plus, elle est capable d'évaluer (convertir)
une formule : [5+10+25] en une valeur 40.

Mon propos n'est pas de reconnaître l'étendue des possibilités
de la propriété "Evaluate" ou des crochets droit, ça c'est acquis !
Mais, je considère que l'usage de l'expression "Range" pour désigner
spécifiquement une plage de cellules, la possibilité d'avoir une liste
déroulante contenant les propriétés et méthodes (réduisant les
fautes d'orthographe) en cours de saisie du code représente des
avantages indélébiles sur l'usage de la propriété "Evaluate"

Chacun a le droit à ses choix !
;-)
FS
Le #19824421
Bonjour,

Pour faire, peut-être, avancer le débat, je dirais quant à moi qu'il est
fort probable que nous soyons victimes en l'occurence de ce que
j'appelle le laxisme du langage VB/VBA, très (trop) tolérant à une
insuffisance de qualification par le recours (abusif à mon avis) aux
propriétés par défaut.
Je m'esseplique.
Lorsque tu écris

> Si [A1] est équivalent à Evaluate("a1"), c'est à dire à
> Range("A1").Value

tu es victime de cette tolérance...

En fait
[A1] est équivalent à Evaluate("a1") cad à Range("A1")
(l'objet)

ou bien
[A1].Value est équivalent à Evaluate("a1").Value cad à Range("A1").Value
(la propriété)

Value étant la propriété par défaut de l'objet Range, personne ne peut
savoir si [A1] désigne l'objet ou l'objet qualifié de sa propriété par
défaut ([A1].Value).
Mais mon avis est que [A1] désigne bien l'objet Range("A1") puisque
justement VBA ne fait aucune difficulté pour qualifier [A1] avec
d'autres propriétés comme tu le remarques pour Interior par exemple.

Lorsque l'aide d'Evaluate mentionne la conversion d'un nom Excel en une
valeur, je pense qu'il s'agit plutôt de fonctions, genre :

MsgBox [SUM(A1:A2)]
ou
MsgBox Evaluate("SUM(A1:A2)")

Moralité : évitez les propriétés par défaut tout autant que l'utilitaire
d'analyse :)

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

Daniel.C a écrit :
Bonjour Denis.
Toutefois, dans le but de faire progresser le débat :
Si [A1] est équivalent à Evaluate("a1"), c'est à dire à
Range("A1").Value, comment expliquer que [A1] soit considéré comme
l'objet Range lui-même ?
[A1].Interior.ColorIndex=3
par exemple ?
Daniel

Bonjour Michel,

L'objet en vba pour désigner une plage de cellule est : "Range"
Les crochets droits c'est une façon d'appeler la propriété "Evaluate"
de l'objet "Application" qui a pour but d'évaluer en vba, l'expression
saisie entre les crochets ou entre les parenthèses de
Application.Evaluate( )
Cette façon de faire ne devrait pas remplacer l'utilisation de Range()
ou cells()

La saisie de l'expression à évaluer entre les crochets droits
n'accepte pas les variables. Tu dois alors utiliser la propriété
"Evaluate"

Quelques façons de faire :
'---------------------------------
x = 8
a = Range("A" & x)
a = cells(x,1)
a = cells(x, "A")
'---------------------------------

et si tu y tiens réellement !!!!
x = 8
a = Application.Evaluate("A" & x)
a = Evaluate("A" & x)
a = [A8]
Il est préférable d'y ajouter le nom de l'onglet de la feuille
a = Evaluate("Feuil1!A" & x)
a = [Feuil1!A8]

P.S. L'usage des crochets ne donne pas droit à la liste déroulante
proposant toutes les méthodes et propriétés de l'objet "Range".





"Michel MTO" groupe de discussion : 4a699eb2$0$296$
Bonjour à toutes et à tous,

Je me demandait si on peut mettre en VBA :
[E & i] où i représente une variable, pour référence une cellule.

Je sais qu'on peut le faire comme ceci :
Range("E" & i)

Merci pour vos réponses

Michel MTO






MichDenis
Le #19824681
Bonjour Frédéric,

Je suis d'accord avec toi sur la permissivité d'Excel lorsque
vient le temps de coder !

Dans le cas présent, Excel définit la propriété Evaluate :
"Cette méthode convertit un nom Microsoft Excel en un OBJECT ou une valeur"
En conséquence, je suppose que [A1] est converti en un OBJET RANGE. Si ce qui
précède est vrai, je suppose qu'il ne doit pas y avoir une très grande différence
entre :
Dim Rg as range
Set Rg = Range("A1")

Rg , Range("A1") ou [A1]. Toutes ces présentations doivent avoir la même
propriété par défaut : "Value" puisqu'elle personnifie un objet "Range".
Dans le modèle objet Excel, je ne connais qu'un objet "Range".
Daniel.C
Le #19825201
Merci à tous deux pour vos réponses.
La possibilité d'écrire :
Evaluate("A1").Interior.ColorIndex = 3
m'avait totalement échappé.
Daniel

Bonjour Denis.
Toutefois, dans le but de faire progresser le débat :
Si [A1] est équivalent à Evaluate("a1"), c'est à dire à Range("A1").Value,
comment expliquer que [A1] soit considéré comme l'objet Range lui-même ?
[A1].Interior.ColorIndex=3
par exemple ?
Daniel

Bonjour Michel,

L'objet en vba pour désigner une plage de cellule est : "Range"
Les crochets droits c'est une façon d'appeler la propriété "Evaluate"
de l'objet "Application" qui a pour but d'évaluer en vba, l'expression
saisie entre les crochets ou entre les parenthèses de Application.Evaluate(
)
Cette façon de faire ne devrait pas remplacer l'utilisation de Range() ou
cells()

La saisie de l'expression à évaluer entre les crochets droits n'accepte pas
les variables. Tu dois alors utiliser la propriété "Evaluate"

Quelques façons de faire :
'---------------------------------
x = 8
a = Range("A" & x)
a = cells(x,1)
a = cells(x, "A")
'---------------------------------

et si tu y tiens réellement !!!!
x = 8
a = Application.Evaluate("A" & x)
a = Evaluate("A" & x)
a = [A8]
Il est préférable d'y ajouter le nom de l'onglet de la feuille
a = Evaluate("Feuil1!A" & x)
a = [Feuil1!A8]

P.S. L'usage des crochets ne donne pas droit à la liste déroulante
proposant toutes les méthodes et propriétés de l'objet "Range".





"Michel MTO" discussion : 4a699eb2$0$296$
Bonjour à toutes et à tous,

Je me demandait si on peut mettre en VBA :
[E & i] où i représente une variable, pour référence une cellule.

Je sais qu'on peut le faire comme ceci :
Range("E" & i)

Merci pour vos réponses

Michel MTO




Publicité
Poster une réponse
Anonyme