OVH Cloud OVH Cloud

Tableau vide

3 réponses
Avatar
Jean-Michel
Bonjour,

Si Ubound(tablo,1) retourne 0, c'est qu'il y a une ligne dans le tableau
Mais si il n'y a aucune ligne, il retourne quoi, car j'arrive pas a le voir
ca !

Merci !

3 réponses

Avatar
jmn
Une erreur 9,indice en dehors de la plage.

Donc :

on error resume next
i=ubound(tableau)
if err.number then
msgbox "tableau vide")
...
else
...
end if
Avatar
ng
Salut,
Il retourne 'Indice en dehors de la plage (erreur 9)' car le tableau n'est
pas définit, on peut donc créer une fonction pour savoir si un tableau est
vide ou non :

Private Sub Form_Load()
Dim sTbl() As String
If EstTableauVide(sTbl) Then
Debug.Print "sTbl est vide !"
Else
Debug.Print "sTbl comporte " & UBound(sTbl) & " éléments !"
End If
End Sub

Public Function EstTableauVide(tbl() As String) As Boolean
On Error Resume Next
Dim lTest As Long
lTest = UBound(tbl)
EstTableauVide = (Err.Number = 9)
Err.Clear
End Function


Nicolas.
"Jean-Michel" a écrit dans le
message de news:
Bonjour,

Si Ubound(tablo,1) retourne 0, c'est qu'il y a une ligne dans le tableau
Mais si il n'y a aucune ligne, il retourne quoi, car j'arrive pas a le


voir
ca !

Merci !




Avatar
Zoury
ou encore

<non testé>
'***
' Module1
Option Explicit

Private Sub Main()

Dim l() As Long
Debug.Print Not Not l ' False

ReDim l(0 To 10) As Long
Debug.Print Not Not l ' True

End Sub
'***

Cette technique, bien que très tentante, se base sur un fonctionnement peu
habituel de VB. Les prochains ServicePack (SP6 bientot.. a quand les
autres..? je doute qu'il y en ait) pourraient très bien modifier ce
fonctionnement inhabituel. J'opterais donc pour une fonction qui trap
"l'erreur" comme t'a montré Nicolas.

Il est également possible d'aller lire directement dans la structure interne
du tableau en mémoire (SAFEARRAY) :

How to Determine if an Array has been Dimensioned
http://www.mvps.org/vbnet/code/helpers/isbounded.htm

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
"Jean-Michel" wrote in message
news:
Bonjour,

Si Ubound(tablo,1) retourne 0, c'est qu'il y a une ligne dans le tableau
Mais si il n'y a aucune ligne, il retourne quoi, car j'arrive pas a le


voir
ca !

Merci !