(VBA)Tester si une variable tableau est vide

Hervé

XLDnaute Barbatruc
Bonjour tout le monde

J'ai un petit souci avec un code.

je voudrais tester si un tableau est vide.

Comment faire pour que ce code ne bug plus :

Code:
Sub Bouton1_QuandClic()
Dim tablo()

MsgBox IsArray(tablo) 'renvoi vrai

If UBound(tablo) = 0 Then 'bug
    MsgBox "vide"
Else
    MsgBox "pas vide"
End If

End Sub
je voudrais eviter de passer par un boolean de test.

d'avance merci pour vos réponses

salut
 

Hervé

XLDnaute Barbatruc
Re : (VBA)Tester si une variable tableau est vide

bonjour hervé

tu pourrais utiliser un on error par exemple :

Code:
Sub Bouton1_QuandClic()
Dim tablo()

On Error GoTo pasbondutout
If Not UBound(tablo) = 0 Then MsgBox "pas vide"

Exit Sub

pasbondutout:
MsgBox "vide"
End Sub

salut
 

porcinet82

XLDnaute Barbatruc
Re : (VBA)Tester si une variable tableau est vide

Salut Hervé,

Pour une fois que tu as un soucis, je me suis dis que j'allais essayer de te rendre service. Je veins de tester avec On Error GoTo et chez moi ca fonctionne, si le tableau est vide il me dit qu'il est vide, si je le remplis avant, il me dit qu'il n'est pas vide.

PHP:
Sub Bouton1_QuandClic()
Dim tablo()
MsgBox IsArray(tablo)
On Error GoTo pasbondutout
If Not UBound(tablo) = 0 Then
    MsgBox "pas vide"
    Exit Sub
End If
pasbondutout:
MsgBox "vide"
End Sub

Je ne vois pas trop pourquoi ca ne passe pas chez toi???

@+
 

Hervé

XLDnaute Barbatruc
Re : (VBA)Tester si une variable tableau est vide

salut porcinet

merci de t'interréssé à mon souci (je me sentais seul sur ce coup)

Quand je disais que c'etait pas bon, c'etait simplement pour dire que ceci ne correspondait pas à mon attente.

en effet, je cherchais à tester si un tableau etait vide pour pouvoir le redimenssionné, et gerer des redim à travers des on error et des resume next, ben ca devient vite une usine à gaz.

donc je te livre mon code peu satisfaisant en espérant que tu auras une idée.

principe :

stocker en mémoire des plages de données par l'intermediaire de fonction personnalisée.

placer des valeurs de A1 à A10 , puis en b1 mettre la fonction =stocktab(a1:a10;"titi")

puis lancer le code test, et les valeurs de la plage sont retournées dans une msgbox.

le code :
PHP:
Option Explicit

Public tablo()
Public Function stocktab(cell As Range, nom As String)
Dim tablofunction

tablofunction = cell

On Error GoTo vide
    If UBound(tablo, 2) = 0 And Not UBound(tablo, 2) = 1 Then
        ReDim tablo(1 To 2, 1 To 1)
    Else
        ReDim Preserve tablo(1 To 2, 1 To UBound(tablo, 2) + 1)
    End If
    
tablo(1, UBound(tablo, 2)) = nom
tablo(2, UBound(tablo, 2)) = cell
stocktab = "stocké"
Exit Function
vide:
ReDim tablo(1 To 2, 1 To 1)
Resume Next
End Function
Sub test()
Dim t As String
Dim recherche As String
Dim i As Byte, j As Byte

recherche = "titi"
For i = 1 To UBound(tablo, 2)
    If tablo(1, i) = recherche Then
        For j = 1 To UBound(tablo(2, i))
            t = t & vbNewLine & tablo(2, i)(j, 1)
        Next j
    End If
Next i

MsgBox t
End Sub
salut
 

porcinet82

XLDnaute Barbatruc
Re : (VBA)Tester si une variable tableau est vide

re,

Je vais essayer de te filer un coup de main, mais bon si toi tu n'y arrive pas je ne vois pas trop comment je vais pouvoir faire. :confused:

Une question pour être sur d'avoir toutes les cartes en main. Je comprends bien la macro Test par contre je ne comprends pas tres bien comment fonctionne la fonction stocktab.
Enfin c'est pas tout a fait ca, je comprends son fonctionnement, mais comment est-elle appelé?
Et sinon, ce que tu veux modifier, si j'ai compris, c'est le ON Error GoTo vide

@+
 

Hervé

XLDnaute Barbatruc
Re : (VBA)Tester si une variable tableau est vide

re l'ami

:)

la fonction stocktab est appelé comme toute fonction classique d'excel, simplement taper dans une cellule.

le code fonctionne mais j'aimerais bien eviter ce on error, car pour le moment ce n'est qu'un embryon de la futur fonction, mais si des le depart j'utilise des codes spaghetti (dixit maitre ti), je suis pas encore couché :D

salut
 

MichelXld

XLDnaute Barbatruc
Re : (VBA)Tester si une variable tableau est vide

bonjour chers amis

Hervé , tu peux tester

Code:
Dim Tableau() 'As String
Dim Tmp As Variant

On Error Resume Next
Tmp = UBound(Tableau)
On Error GoTo 0

If IsEmpty(Tmp) Then MsgBox "Le tableau est vide"


bon apres midi
Ce lien n'existe plus
 
Dernière édition:

porcinet82

XLDnaute Barbatruc
Re : (VBA)Tester si une variable tableau est vide

re Hervé, Salut l'ami Michel,

J'avais également trouver cette solution, mais je me suis dis que j'allais laissé a quelqu'un d'autre le plaisir de la donner. :p

NAN je déconne, je ne voyais pas trop comment aider l'ami Hervé, donc merci Michel !!!

Au plaisir de vous croiser, et qui sais peut etre un jour de vous aider (ouai je sais l'espoir fait vivre... :rolleyes: )

@+
 

Statistiques des forums

Discussions
312 480
Messages
2 088 756
Membres
103 947
dernier inscrit
Quentin_sf