OVH Cloud OVH Cloud

Tester si un tableau dynamique est vide

5 réponses
Avatar
CB
Bonjour,

En vba, je définis dans un module un tableau dynamique par :
Public monTableau() as string

Ensuite, un formulaire remplit ce tableau avec des dates, ou ne le
remplit pas, selon le choix de l'utilisateur.
Si des dates sont choisies, cela se fait à coup de redim preserve
monTableau(1)... (2) ...

Mais il se peut parfaitement qu'aucune date n'ai été choisie.

Dans le module lançant le formulaire, comment savoir, lorsque le
formulaire a rendu la main (Unload userForm), si mon tableau est vide
(pas eu de redim).

En effet, ubound(monTableau) me sort une erreur, isempty(montableau) me
sort false...

J'aimerais savoir aussi, par la même occasion, si plutôt que de déclarer
monTableau publique, je peux le passer en paramètre au formulaire.
Cela ferait plus "propre" je trouve.

Merci de votre aide.
Christophe.

5 réponses

Avatar
michdenis
Bonjour CB,

Ceci s'applique seulement si le contenu des éléments de ton tableau est de type date ( ou numérique)

a = WorksheetFunction.CountA(Tblo)
A = nombre de valeur "date" contenu dans tblo.
CountA() = NbVal() de la feuille de calcul.

Évidemment, pour que cette ligne de code soit valide, il faut que ton tableau ait été défini par Redim Tblo() ou déclaré Tblo(5)....


Salutations!



"CB" a écrit dans le message de news: 432da0da$0$1739$
Bonjour,

En vba, je définis dans un module un tableau dynamique par :
Public monTableau() as string

Ensuite, un formulaire remplit ce tableau avec des dates, ou ne le
remplit pas, selon le choix de l'utilisateur.
Si des dates sont choisies, cela se fait à coup de redim preserve
monTableau(1)... (2) ...

Mais il se peut parfaitement qu'aucune date n'ai été choisie.

Dans le module lançant le formulaire, comment savoir, lorsque le
formulaire a rendu la main (Unload userForm), si mon tableau est vide
(pas eu de redim).

En effet, ubound(monTableau) me sort une erreur, isempty(montableau) me
sort false...

J'aimerais savoir aussi, par la même occasion, si plutôt que de déclarer
monTableau publique, je peux le passer en paramètre au formulaire.
Cela ferait plus "propre" je trouve.

Merci de votre aide.
Christophe.
Avatar
Kamel
Bonsoir Christophe,

As tu essayer d'utiliser une collection à la place de ton tableau dynamique
?
Je pense que cela serait plus simple à utiliser que de faire des ReDim à
chaque fois.

Kamel


"CB" a écrit dans le message de news:
432da0da$0$1739$
Bonjour,

En vba, je définis dans un module un tableau dynamique par :
Public monTableau() as string

Ensuite, un formulaire remplit ce tableau avec des dates, ou ne le
remplit pas, selon le choix de l'utilisateur.
Si des dates sont choisies, cela se fait à coup de redim preserve
monTableau(1)... (2) ...

Mais il se peut parfaitement qu'aucune date n'ai été choisie.

Dans le module lançant le formulaire, comment savoir, lorsque le
formulaire a rendu la main (Unload userForm), si mon tableau est vide (pas
eu de redim).

En effet, ubound(monTableau) me sort une erreur, isempty(montableau) me
sort false...

J'aimerais savoir aussi, par la même occasion, si plutôt que de déclarer
monTableau publique, je peux le passer en paramètre au formulaire. Cela
ferait plus "propre" je trouve.

Merci de votre aide.
Christophe.


Avatar
docm
Bonjour.

Il faut gérer l'erreur générée par Ubound si le tableau est vide:

On Error Resume Next
a = UBound(monTableau)
If Err <> 0 Then
MsgBox "Aucune entrée effectué"
Else
MsgBox a & " entrée(s)"
End If

"CB" a écrit dans le message news:
432da0da$0$1739$
Bonjour,

En vba, je définis dans un module un tableau dynamique par :
Public monTableau() as string

Ensuite, un formulaire remplit ce tableau avec des dates, ou ne le
remplit pas, selon le choix de l'utilisateur.
Si des dates sont choisies, cela se fait à coup de redim preserve
monTableau(1)... (2) ...

Mais il se peut parfaitement qu'aucune date n'ai été choisie.

Dans le module lançant le formulaire, comment savoir, lorsque le
formulaire a rendu la main (Unload userForm), si mon tableau est vide
(pas eu de redim).

En effet, ubound(monTableau) me sort une erreur, isempty(montableau) me
sort false...

J'aimerais savoir aussi, par la même occasion, si plutôt que de déclarer
monTableau publique, je peux le passer en paramètre au formulaire.
Cela ferait plus "propre" je trouve.

Merci de votre aide.
Christophe.


Avatar
CB
As tu essayer d'utiliser une collection à la place de ton tableau dynamique
?
Je pense que cela serait plus simple à utiliser que de faire des ReDim à
chaque fois.

Kamel

Effectivement, c'est la solution. D'autant qu'au maxi je n'ai que 6

dates possible.
Sur une collection vide, .count renvoie 0, et pas d'erreur, c'est parfait.

Merci Kamel et michdenis.

J'aimerais savoir aussi, par la même occasion, si plutôt que de déclarer
monTableau publique, je peux le passer en paramètre au formulaire. Cela
ferait plus "propre" je trouve.



Et, heu, ça, c'est possible (même si la collection déclarée Public au
projet marche très bien) ?

Christophe.


Avatar
CB
docm wrote:
Bonjour.

Il faut gérer l'erreur générée par Ubound si le tableau est vide:

On Error Resume Next
a = UBound(monTableau)
If Err <> 0 Then
MsgBox "Aucune entrée effectué"
Else
MsgBox a & " entrée(s)"
End If

Cela marche aussi.

Merci.