[VBA] une variable de type "Variant" Empty ?

madlolo

XLDnaute Junior
Bonjour à tous,

je manipule souvent dans mes programmes des tableaux (matrices), donc de type "Variant".
De temps en temps alors, j'ai besoin d'effacer certaines lignes du tableau.
Code:
myArray = HideZero(myArray)
(1)
Ainsi, mon tableau peut passer de n lignes à p lignes (p <= n)

Mais, cas rare mais possible, toutes les lignes du tableau peuvent devoir être enlevés, aussi je me retrouve avec un tableau vide (ou Empty), cas que je pourrais éventuellement traiter ainsi :
Code:
If IsEmpty(myArray) Then 
    '...
Else 
    '...
End If
(2)
(encore que ce code je ne l'ai pas encore testé)

Le problème est que l'exécution de ce code plante à (1) avec l'erreur suivante :
"Erreur d'exécution '13':
Incompatibilité de type"

Comment régler ce problème ?
Comment puis je quand même manipuler des tableaux vides ?

Merci d'avance,

Cordialement,
 

Pierrot93

XLDnaute Barbatruc
Re : [VBA] une variable de type "Variant" Empty ?

Bonjour,

pas sur d'avoir tout compris, mais regarde peut être le code ci-dessous si il peut t'aider :

Code:
Dim t() As Variant
t = Range("D1:D4")
If Application.CountA(t) = 0 Then MsgBox "tabeau vide"

bon après midi
@+
 

madlolo

XLDnaute Junior
Re : [VBA] une variable de type "Variant" Empty ?

En fait, le tableau que je manipule ne correspond pas à un tableau dans une feuille Excel, c'est un tableau ad-hoc.

En fait, j'aimerais éviter d'avoir à faire ça :

Code:
If Application.CountA(HideZero(myArray)) = 0 Then 
    'code si le tableau est vide 
Else 
    myArray = HideZero(myArray)
    'code si le tableau n'est pas vide
End If

Pourquoi ? Tou simplement parceque je passe alors DEUX fois dans la méthode "HideZero()", alors que je ne devrais y passer qu'une seule fois !
 

skoobi

XLDnaute Barbatruc
Re : [VBA] une variable de type "Variant" Empty ?

Bonjour madlolo, Pierrot :),

peut-être en passant par UBound, à condition que tu redimentionnes le tableau après chaque mise à jour et que le premier indice soit 0:

Code:
 If UBound(tablo) = 0 Then
 

madlolo

XLDnaute Junior
Re : [VBA] une variable de type "Variant" Empty ?

Bonsoir à tous,
effectivement à lire vos messages ce n'est pas claire ...
Je m'en suis sorti autrement en "catchant" l'erreur ("On Error ...") : S'il y a une erreur, c'est que le calcul n'a pas etre fait, alors je mets 0.

Le Tableau "myArray" est un tableau contenant différentes colonnes (disons par exemple une colonne pour le code, une pour le libelle, et une autre pour la position).
Si la position était vide (=0), je devais effacer la ligne de mon tableau, d'où la méthode "HideZero" qui me renvoie un nouveau tableau "expurgé" des lignes à positions nulles.
Sauf que, cas rare, le tableau retourné par la dite méthode est ... vide (Empty), et dans ce cas, et bien la ligne de commande
Code:
myArray = HideZero(myArray)
me renvoie l'erreur indiquée ci-dessus.

Or je voudrais pouvoir traiter le cas où, justement, le tableau retourné est vide, sans qu'une erreur me soit renvoyée en pleine tête !
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 846
dernier inscrit
Silhabib