OVH Cloud OVH Cloud

detecter si un tableau est vide

33 réponses
Avatar
Emcy
bonjour,

existe t-il un moyen de voir si une variable tableau (vba) est vide sans
utiliser les OnError ?

3 réponses

1 2 3 4
Avatar
Emcy
d'accord (j'avais pu vu que tu avais dis d'enlever les parentheses)
si je fais call toto i, j ou call toto(i, j) => la rapidité d'execution sera
t-elle la meme ? est-ce qu'il y a une syntaxe qu'il faut mieux utilisée
(entre les deux) ? si oui pourquoi ?


"Michel Gaboly" a écrit dans le message de news:

C'est normal ; dans mon premier message à propos de Call, je disais :

"Tu peux enlever Call et les parenthèses dans l'appel de la Sub
RemplirListBox, cela marchera aussi bien ;-)) "


Or ici tu as laissé les parenthèses. C'est cela qui provoque l'erreur de
syntaxe : il faut simplement écrire

Toto i, j

Les parenthèses sont nécessaires si l'élément appelé est l'argument d'autre
chose : si Toto est une fonction qui renvoie
un résultat, il faut écrire :

Res = Toto(i, j)


Voilà.


pourtant si, j'ai une erreur de syntaxe pour ce bout de code au niveau de
l'appele de la procédure Toto(i, j) (il faut mettre call) :
Sub Main()
Dim i As Integer
Dim j As Integer

i = 1
j = 1
Toto(i, j)
End Sub

Sub Toto(a As Integer, b As Integer)
a = a + 1
b = b + 1
End Sub
=> remarque la version de visual basic est la 6.3 (Excel 2002)


"Michel Gaboly" a écrit dans le message de
news:
Sûrement pas, j'ai écrit des dizaines de milliers de lignes en VBA sans
jamais avoir besoin de Call.


s'il u a plus d'un argument dans la procédure, il faut obligatoirement
utiliser call, autrement j'ai une erreur de compil...

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

La vitesse d'exécution, pourquoi pas ?

Mais je ne suis pas sûr que la différence de temps soit mesurable.

Quant à la lecture, il s'agit de préférences personnelles : des goûts et
des couleurs ;-)))

Personnellement, je préfère discriminer en donnant des noms en clair et en
français
(ControleSaisie, ReportDonnees, MAJLabels, ...)

Mais je conçois que d'autres puissent réagir différemment.




Bonjour Michel,

| Bien sûr, mais le mot Call, hérité du Basic d'autrefois est superflu en
VBA


L'utilisation du mot "Call" permet à l'application au moment de la
compilation
d'identifier le lieu où se situe la procédure appelée. Conséquence,
l'exécution
du code serait plus "rapide". De plus, dans certains cas, cela pourrait
aider
à la lecture du code en discriminant les procédures appelées et les
méthodes
supportées par le code VBA.

Évidemment, personne ne dit que la présence de ce mot "Call" soit
obligatoire !
;-)


Salutations!












--
Cordialement,

Michel Gaboly
www.gaboly.com



Avatar
Michel Gaboly
Bonjour,

En vitesse, je nee pense pas qu'il y ait d différence.

Personnellement je n'aime pas les efforts inutiles, et malgré ce que po urrait laisser croire certaines de mes
explications détaillées ici ;-)), je préfère un code concis.

Par conséquent, je préconise la version sans Call et sans parenthès e.


d'accord (j'avais pu vu que tu avais dis d'enlever les parentheses)
si je fais call toto i, j ou call toto(i, j) => la rapidité d'execu tion sera
t-elle la meme ? est-ce qu'il y a une syntaxe qu'il faut mieux utilisé e
(entre les deux) ? si oui pourquoi ?


"Michel Gaboly" a écrit dans le message de news:

C'est normal ; dans mon premier message à propos de Call, je disais :

"Tu peux enlever Call et les parenthèses dans l'appel de la Sub
RemplirListBox, cela marchera aussi bien ;-)) "


Or ici tu as laissé les parenthèses. C'est cela qui provoque l'erre ur de
syntaxe : il faut simplement écrire

Toto i, j

Les parenthèses sont nécessaires si l'élément appelé est l'ar gument d'autre
chose : si Toto est une fonction qui renvoie
un résultat, il faut écrire :

Res = Toto(i, j)


Voilà.



pourtant si, j'ai une erreur de syntaxe pour ce bout de code au niveau de
l'appele de la procédure Toto(i, j) (il faut mettre call) :
Sub Main()
Dim i As Integer
Dim j As Integer

i = 1
j = 1
Toto(i, j)
End Sub

Sub Toto(a As Integer, b As Integer)
a = a + 1
b = b + 1
End Sub
=> remarque la version de visual basic est la 6.3 (Excel 2002)


"Michel Gaboly" a écrit dans le message de
news:
Sûrement pas, j'ai écrit des dizaines de milliers de lignes en VBA sans
jamais avoir besoin de Call.



s'il u a plus d'un argument dans la procédure, il faut obligatoireme nt
utiliser call, autrement j'ai une erreur de compil...

"Michel Gaboly" a écrit dans le message d e
news:
Bonjour Michel,

La vitesse d'exécution, pourquoi pas ?

Mais je ne suis pas sûr que la différence de temps soit mesurable.

Quant à la lecture, il s'agit de préférences personnelles : des goûts et
des couleurs ;-)))

Personnellement, je préfère discriminer en donnant des noms en cla ir et en
français
(ControleSaisie, ReportDonnees, MAJLabels, ...)

Mais je conçois que d'autres puissent réagir différemment.





Bonjour Michel,

| Bien sûr, mais le mot Call, hérité du Basic d'autrefois est s uperflu en
VBA


L'utilisation du mot "Call" permet à l'application au moment de la
compilation
d'identifier le lieu où se situe la procédure appelée. Conséq uence,
l'exécution
du code serait plus "rapide". De plus, dans certains cas, cela pourra it
aider
à la lecture du code en discriminant les procédures appelées et les
méthodes
supportées par le code VBA.

Évidemment, personne ne dit que la présence de ce mot "Call" soit
obligatoire !
;-)


Salutations!














--
Cordialement,

Michel Gaboly
www.gaboly.com




Avatar
Emcy
merci de ta repnse

"Michel Gaboly" a écrit dans le message de news:

Bonjour,

En vitesse, je nee pense pas qu'il y ait d différence.

Personnellement je n'aime pas les efforts inutiles, et malgré ce que
pourrait laisser croire certaines de mes
explications détaillées ici ;-)), je préfère un code concis.

Par conséquent, je préconise la version sans Call et sans parenthèse.


d'accord (j'avais pu vu que tu avais dis d'enlever les parentheses)
si je fais call toto i, j ou call toto(i, j) => la rapidité d'execution
sera t-elle la meme ? est-ce qu'il y a une syntaxe qu'il faut mieux
utilisée (entre les deux) ? si oui pourquoi ?


"Michel Gaboly" a écrit dans le message de
news:
C'est normal ; dans mon premier message à propos de Call, je disais :

"Tu peux enlever Call et les parenthèses dans l'appel de la Sub
RemplirListBox, cela marchera aussi bien ;-)) "


Or ici tu as laissé les parenthèses. C'est cela qui provoque l'erreur de
syntaxe : il faut simplement écrire

Toto i, j

Les parenthèses sont nécessaires si l'élément appelé est l'argument
d'autre chose : si Toto est une fonction qui renvoie
un résultat, il faut écrire :

Res = Toto(i, j)


Voilà.



pourtant si, j'ai une erreur de syntaxe pour ce bout de code au niveau de
l'appele de la procédure Toto(i, j) (il faut mettre call) :
Sub Main()
Dim i As Integer
Dim j As Integer

i = 1
j = 1
Toto(i, j)
End Sub

Sub Toto(a As Integer, b As Integer)
a = a + 1
b = b + 1
End Sub
=> remarque la version de visual basic est la 6.3 (Excel 2002)


"Michel Gaboly" a écrit dans le message de
news:
Sûrement pas, j'ai écrit des dizaines de milliers de lignes en VBA sans
jamais avoir besoin de Call.



s'il u a plus d'un argument dans la procédure, il faut obligatoirement
utiliser call, autrement j'ai une erreur de compil...

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

La vitesse d'exécution, pourquoi pas ?

Mais je ne suis pas sûr que la différence de temps soit mesurable.

Quant à la lecture, il s'agit de préférences personnelles : des goûts et
des couleurs ;-)))

Personnellement, je préfère discriminer en donnant des noms en clair et
en français
(ControleSaisie, ReportDonnees, MAJLabels, ...)

Mais je conçois que d'autres puissent réagir différemment.





Bonjour Michel,

| Bien sûr, mais le mot Call, hérité du Basic d'autrefois est superflu
en VBA


L'utilisation du mot "Call" permet à l'application au moment de la
compilation
d'identifier le lieu où se situe la procédure appelée. Conséquence,
l'exécution
du code serait plus "rapide". De plus, dans certains cas, cela pourrait
aider
à la lecture du code en discriminant les procédures appelées et les
méthodes
supportées par le code VBA.

Évidemment, personne ne dit que la présence de ce mot "Call" soit
obligatoire !
;-)


Salutations!














--
Cordialement,

Michel Gaboly
www.gaboly.com




1 2 3 4