Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Réf [A1]

24 réponses
Avatar
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

10 réponses

1 2 3
Avatar
Daniel.C
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


Avatar
MichDenis
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" a écrit dans le message de 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
Avatar
Michel MTO
Merci Daniel pour ta réponse.

Michel

"Daniel.C" a écrit dans le message de
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




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

Michel

"MichDenis" a écrit dans le message de
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" a écrit dans le message de 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



Avatar
Daniel.C
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" a écrit dans le message de 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


Avatar
lolo
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" a écrit dans le message de news:
4a69af9f$0$292$
Merci Daniel pour ta réponse.

Michel

"Daniel.C" a écrit dans le message de
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








Avatar
MichDenis
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 !
;-)
Avatar
FS
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" a écrit dans le message de
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






Avatar
MichDenis
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".
Avatar
Daniel.C
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" a écrit dans le message de 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




1 2 3