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

Crochets

5 réponses
Avatar
pb
Bonjour,
Est ce que quelqu'un peut l'expliquer la différence
entre
Range ("A1"). Select

et

[a1]

Quelle la syntaxe la plus propre pour sélectionner A1

Même question pour

Call Toto
et
Toto

Merci
Pascal

5 réponses

Avatar
JeanYvesGascon
On 29 juil, 14:46, "pb" wrote:
Bonjour,
Est ce que quelqu'un peut l'expliquer la différence
entre
Range ("A1"). Select

et

[a1]

Quelle la syntaxe la plus propre pour sélectionner A1

Même question pour

Call Toto
et
Toto

Merci
Pascal



[A1] n'est elle pas la valeur d'A1 ?

à pluche

Jean-Yves
Avatar
MichDenis
Question I
| Est ce que quelqu'un peut l'expliquer la différence
| entre Range ("A1"). Select et [a1].Select

"Range" est une classe objet dûment défini dans le modèle
objet Excel. Comme objet, il a des propriétés et méthodes
qui lui sont attribuées. Lorsque tu saisis Range("A1"), tu as
accès à une liste déroulante affichant toutes les caractéristiques
de l'objet "Range". La méthode "Select" est l'une d'elles.

Dans cette expression "[a1]", les crochet droits signifient la
même chose que l'expression suivante : Application.Evaluate("A1")
Il n'y a pas de différence entre
[A1].select
et
Application.Evaluate("A1").Select
si ce n'est qu'avec "Evaluate", on peut inclure dans la parenthèse des
variables, ce que l'on ne peut pas faire avec les crochets droits.

En fait, comme son nom l'indique, "Evaluate" ou les crochets droits
évalue le contenu de la parenthèse et converti son contenu (un nom Microsoft
Excel) en un objet ou une valeur. (voir l'aide sur "Nom Microsoft Excel")
Autrement dit, si Evaluate arrive à la conclusion que le contenu est
un objet "Range", cet objet aura les mêmes propriétés et méthodes
qu'un "vrai" objet "Range" du modèle objet d'Excel. La question
devrait être pourquoi utiliser un truc qui "évalue" la chaîne de
caractères si on a déjà un objet "Range" qu'Excel reconnaît comme tel ?

Personnellement, je préfère utiliser "Range"

Question II
Différence entre Call Toto et Toto ?
Les 2 font la même chose. Cependant, lorsque tu utilises
"Call" lors de la compilation du code, Excel a déjà identifié
où la procédure était située (le module) . Résultat, l'exécution
du code "serait" quelques nanosecondes plus rapide...parce
qu'Excel n'a pas à "trouver" la location de la procédure appelée.

Aujourd'hui, comme les ordinateurs sont de plus en plus puissants,
la différence n'est pas "grande".
Disons qu'en plus, cela peut aider la lecture et la compréhension du
code si tu n'en es pas l'auteur !
Avatar
papou
Bonjour Pascal
Pour ta première question :
- d'une part, vois le fil de discussion initié par la question de Michel MTO
du 24/07/2009 à 13:51 dont l'objet est Réf [A1].
- d'autre part, j'ajoute qu'il ne doit pas être nécessaire de sélectionner
une cellule pour effectuer des opérations.

Pour ta deuxièrme question, voici ce que dit l'aide d'Excel :
Remarques

Il n'est pas obligatoire d'employer le mot clé Call pour appeler une
procédure. Toutefois, si vous utilisez ce mot clé dans le cadre de l'appel
d'une procédure nécessitant des arguments, l'élément argumentlist doit être
placé entre parenthèses. Dans le cas d'une procédure appelée sans le mot clé
Call, vous ne devez pas encadrer argumentlist par des parenthèses. Quelle
que soit la syntaxe adoptée pour appeler une fonction intrinsèque ou définie
par l'utilisateur, la valeur renvoyée par la fonction est perdue.

Pour passer un tableau entier à une procédure, entrez le nom du tableau,
suivi de parenthèses vides.



Cordialement

Pascal

"pb" a écrit dans le message de news:

Bonjour,
Est ce que quelqu'un peut l'expliquer la différence
entre
Range ("A1"). Select

et

[a1]

Quelle la syntaxe la plus propre pour sélectionner A1

Même question pour

Call Toto
et
Toto

Merci
Pascal



Avatar
pb
Merci
Je serai toujours étonné par la qualité et la pertinence de tes réponses.
Donc si je comprends bien [A1] demande à Excel d'évaluer la contenu avant
d'attribuer des propriètés et des méthodes
alors que Range ("A1") attribue directement ces propriètés et méthodes?
Lorsque Papou dans ce fil dit qu'il n'est pas nécessaire de sélectionner une
cellule avant de lui affecter des calculs,
--> Range("a1").Select
("A1").value = ("A2").value+ ("A3").value
ou
[A1]
[A1].value=[A2].value+[A3].value

Pascal



"MichDenis" a écrit dans le message de news:

Question I
| Est ce que quelqu'un peut l'expliquer la différence
| entre Range ("A1"). Select et [a1].Select

"Range" est une classe objet dûment défini dans le modèle
objet Excel. Comme objet, il a des propriétés et méthodes
qui lui sont attribuées. Lorsque tu saisis Range("A1"), tu as
accès à une liste déroulante affichant toutes les caractéristiques
de l'objet "Range". La méthode "Select" est l'une d'elles.

Dans cette expression "[a1]", les crochet droits signifient la
même chose que l'expression suivante : Application.Evaluate("A1")
Il n'y a pas de différence entre
[A1].select
et
Application.Evaluate("A1").Select
si ce n'est qu'avec "Evaluate", on peut inclure dans la parenthèse des
variables, ce que l'on ne peut pas faire avec les crochets droits.

En fait, comme son nom l'indique, "Evaluate" ou les crochets droits
évalue le contenu de la parenthèse et converti son contenu (un nom
Microsoft
Excel) en un objet ou une valeur. (voir l'aide sur "Nom Microsoft Excel")
Autrement dit, si Evaluate arrive à la conclusion que le contenu est
un objet "Range", cet objet aura les mêmes propriétés et méthodes
qu'un "vrai" objet "Range" du modèle objet d'Excel. La question
devrait être pourquoi utiliser un truc qui "évalue" la chaîne de
caractères si on a déjà un objet "Range" qu'Excel reconnaît comme tel ?

Personnellement, je préfère utiliser "Range"

Question II
Différence entre Call Toto et Toto ?
Les 2 font la même chose. Cependant, lorsque tu utilises
"Call" lors de la compilation du code, Excel a déjà identifié
où la procédure était située (le module) . Résultat, l'exécution
du code "serait" quelques nanosecondes plus rapide...parce
qu'Excel n'a pas à "trouver" la location de la procédure appelée.

Aujourd'hui, comme les ordinateurs sont de plus en plus puissants,
la différence n'est pas "grande".
Disons qu'en plus, cela peut aider la lecture et la compréhension du
code si tu n'en es pas l'auteur !







Avatar
MichDenis
| Donc si je comprends bien [A1] demande à Excel d'évaluer la contenu avant
| d'attribuer des propriètés et des méthodes

La méthode "evaluate" ou [ ] peuvent aussi évaluer des formules
L'expression entre leur guillemets n'est pas nécessairement un objet "Range"
d'où l'obligation d'évaluer d'abord le contenu. Si excel arrive à la conclusion
que le contenu des parenthèses est un objet "Range" alors, ledit objet
a les mêmes propriétés et méthodes qu'un objet "Range"

| alors que Range ("A1") attribue directement ces propriètés et méthodes?
La classe objet "Range" contient, possède toutes les caractéristiques qu'on
lui a attribué par programmation dans son "module de classe".
Exemple : Si tu utilises le mot chien, tous ont en tête les principales
caractéristiques de ce qu'est un chien. Tu n'as rien à lui attribuer... il
est ce qu'il est... il a des propriétés "Grosseur", "Couleur", etc, et des
méthodes (actions) "Japper" , "Mordre", etc ... Il est tout cela.
Lorsque les programmeurs de l'application Excel ont élaboré
la classe objet "Range", ils lui ont données toutes les méthodes
et propriétés qu'ils jugeaient utile. Il incarne toutes ces caractéristiques
au même titre que le chien. ;-))


3 façons d'écrire la même chose

Range("A1").Value = Range("A2").Value + Range("A3").Value
With Range("A1")
.Value = .Offset(1).Value + .Offset(2).Value
End With

[A1].value = [A2].value + [A3].Value


Pascal



"MichDenis" a écrit dans le message de news:

Question I
| Est ce que quelqu'un peut l'expliquer la différence
| entre Range ("A1"). Select et [a1].Select

"Range" est une classe objet dûment défini dans le modèle
objet Excel. Comme objet, il a des propriétés et méthodes
qui lui sont attribuées. Lorsque tu saisis Range("A1"), tu as
accès à une liste déroulante affichant toutes les caractéristiques
de l'objet "Range". La méthode "Select" est l'une d'elles.

Dans cette expression "[a1]", les crochet droits signifient la
même chose que l'expression suivante : Application.Evaluate("A1")
Il n'y a pas de différence entre
[A1].select
et
Application.Evaluate("A1").Select
si ce n'est qu'avec "Evaluate", on peut inclure dans la parenthèse des
variables, ce que l'on ne peut pas faire avec les crochets droits.

En fait, comme son nom l'indique, "Evaluate" ou les crochets droits
évalue le contenu de la parenthèse et converti son contenu (un nom
Microsoft
Excel) en un objet ou une valeur. (voir l'aide sur "Nom Microsoft Excel")
Autrement dit, si Evaluate arrive à la conclusion que le contenu est
un objet "Range", cet objet aura les mêmes propriétés et méthodes
qu'un "vrai" objet "Range" du modèle objet d'Excel. La question
devrait être pourquoi utiliser un truc qui "évalue" la chaîne de
caractères si on a déjà un objet "Range" qu'Excel reconnaît comme tel ?

Personnellement, je préfère utiliser "Range"

Question II
Différence entre Call Toto et Toto ?
Les 2 font la même chose. Cependant, lorsque tu utilises
"Call" lors de la compilation du code, Excel a déjà identifié
où la procédure était située (le module) . Résultat, l'exécution
du code "serait" quelques nanosecondes plus rapide...parce
qu'Excel n'a pas à "trouver" la location de la procédure appelée.

Aujourd'hui, comme les ordinateurs sont de plus en plus puissants,
la différence n'est pas "grande".
Disons qu'en plus, cela peut aider la lecture et la compréhension du
code si tu n'en es pas l'auteur !