OVH Cloud OVH Cloud

Règle pour le premier item d'une collection ?

4 réponses
Avatar
Michel S.
Bonjour,

En VBA (2003), le premier Item de la collection "Worksheets" est à
l'indice 1

Le premier Item de la collection "Controls" est à l'indice 0


Y'a-t-il une règle ou une façon de connaitre avec certitude à quel
indice commence une collection, si possible sans utiliser de "On Error"
?

Merci !

4 réponses

Avatar
MichDenis
à chaque fois que la désignation représente un objet
réelle du modèle objet VBA, la collection débute à 1.
et un bon indice est le nom que l'objet reçoit. La première
fois que tu crées un objet .... son nom est NomObjet1

En contrepartie, Controls ne représente pas un objet particulier
du modèle objet Excel, tu ne créées au sens stricte un nouveau
control de la famille Controls .. tu ajouter un élément à une collection
comme un bouton de commande à une barre d'outils, à la collection Shapes
...etc...En ce sens Control n'a pas de Caption ou de Name qui
lui sont propres si ce n'est l'objet de la collection qu'il représente
d'où le décompte des élément à partir de 0


"Michel S." a écrit dans le message de news:
Bonjour,

En VBA (2003), le premier Item de la collection "Worksheets" est à
l'indice 1

Le premier Item de la collection "Controls" est à l'indice 0


Y'a-t-il une règle ou une façon de connaitre avec certitude à quel
indice commence une collection, si possible sans utiliser de "On Error"
?

Merci !
Avatar
Michel S.
Merci !

Est-ce que je me trompe ou en VBA 5 (excel 97), la collection
commençait à l'indice 1 ?

Est-ce que VB .NET apporte des changements à la situarionh de VBA 6 ?


MichDenis avait soumis l'idée :
à chaque fois que la désignation représente un objet
réelle du modèle objet VBA, la collection débute à 1.
et un bon indice est le nom que l'objet reçoit. La première
fois que tu crées un objet .... son nom est NomObjet1

En contrepartie, Controls ne représente pas un objet particulier
du modèle objet Excel, tu ne créées au sens stricte un nouveau
control de la famille Controls .. tu ajouter un élément à une collection
comme un bouton de commande à une barre d'outils, à la collection Shapes
...etc...En ce sens Control n'a pas de Caption ou de Name qui
lui sont propres si ce n'est l'objet de la collection qu'il représente
d'où le décompte des élément à partir de 0

"Michel S." a écrit dans le message de news:
Bonjour,

En VBA (2003), le premier Item de la collection "Worksheets" est à
l'indice 1

Le premier Item de la collection "Controls" est à l'indice 0

Y'a-t-il une règle ou une façon de connaitre avec certitude à quel
indice commence une collection, si possible sans utiliser de "On Error"
?

Merci !


Avatar
Michel S.
(reprise de mon post précédent, mais en plus précis)

Merci !

Est-ce que je me trompe ou en VBA 5 (Excel 97), un objet "Collection"
(et non pas la collection de contrôles) commençait à l'indice 1 alors
que maintenant (VBA 6) ils commencent à l'indice 0 ?

Cela ne fait que renforcer ce que tu avances..


Est-ce qu'en VB .NET cela demeure inchangé par rapport à VBA 6 ?




MichDenis a utilisé son clavier pour écrire :
à chaque fois que la désignation représente un objet
réelle du modèle objet VBA, la collection débute à 1.
et un bon indice est le nom que l'objet reçoit. La première
fois que tu crées un objet .... son nom est NomObjet1

En contrepartie, Controls ne représente pas un objet particulier
du modèle objet Excel, tu ne créées au sens stricte un nouveau
control de la famille Controls .. tu ajouter un élément à une collection
comme un bouton de commande à une barre d'outils, à la collection Shapes
...etc...En ce sens Control n'a pas de Caption ou de Name qui
lui sont propres si ce n'est l'objet de la collection qu'il représente
d'où le décompte des élément à partir de 0

"Michel S." a écrit dans le message de news:
Bonjour,

En VBA (2003), le premier Item de la collection "Worksheets" est à
l'indice 1

Le premier Item de la collection "Controls" est à l'indice 0

Y'a-t-il une règle ou une façon de connaitre avec certitude à quel
indice commence une collection, si possible sans utiliser de "On Error"
?

Merci !


Avatar
MichDenis
Je ne suis pas en mesure de vérifier pour Excel 97, cette version
n'est pas disponible sur mon ordi. (je serais surpris qu'il en soit
différent.... Mais pour la version 2003

Si tu déclares une variable comme collection comme ceci :
Dim x As New Collection

Le premier item de la collection aura l'index 1 et non pas 0.
Msgbox X(1)

| Est-ce qu'en VB .NET cela .....

Aucune idée



"Michel S." a écrit dans le message de news:
(reprise de mon post précédent, mais en plus précis)

Merci !

Est-ce que je me trompe ou en VBA 5 (Excel 97), un objet "Collection"
(et non pas la collection de contrôles) commençait à l'indice 1 alors
que maintenant (VBA 6) ils commencent à l'indice 0 ?

Cela ne fait que renforcer ce que tu avances..


Est-ce qu'en VB .NET cela demeure inchangé par rapport à VBA 6 ?




MichDenis a utilisé son clavier pour écrire :
à chaque fois que la désignation représente un objet
réelle du modèle objet VBA, la collection débute à 1.
et un bon indice est le nom que l'objet reçoit. La première
fois que tu crées un objet .... son nom est NomObjet1

En contrepartie, Controls ne représente pas un objet particulier
du modèle objet Excel, tu ne créées au sens stricte un nouveau
control de la famille Controls .. tu ajouter un élément à une collection
comme un bouton de commande à une barre d'outils, à la collection Shapes
...etc...En ce sens Control n'a pas de Caption ou de Name qui
lui sont propres si ce n'est l'objet de la collection qu'il représente
d'où le décompte des élément à partir de 0

"Michel S." a écrit dans le message de news:
Bonjour,

En VBA (2003), le premier Item de la collection "Worksheets" est à
l'indice 1

Le premier Item de la collection "Controls" est à l'indice 0

Y'a-t-il une règle ou une façon de connaitre avec certitude à quel
indice commence une collection, si possible sans utiliser de "On Error"
?

Merci !