les tableaux sont ils vides?

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

awa123

XLDnaute Occasionnel
Bonjour,

je voudrais vérifier deux tableaux distincts puis de voir s'il sont tous vides

voici donc le petit code que j'utilise pour cela:

Code:
        gantt_m1(0) = M1
         
        vide1 = True
         
        For i = 0 To UBound(gantt_m1)
                If gantt_m1(i) <> "" Then
         
                    vide1 = False
         
         
                End If
        Next i
         
         
        gantt_m2(0) = M2
        vide2 = True
         
        For i = 0 To UBound(gantt_m2)
                If gantt_m2(i) <> "" Then
         
                    vide2 = False
         
                End If
        Next i
         
         
         
        If vide1=True And vide2=True  Then
         
        MsgBox "tous les tableaux sont vides"
         
        End If


mais quand je fais le test il m'affiche "tous les tableaux sont vides" alors qu'en toute logique vide1 et vide2 deviennent égale à False car je leur ai affecté un contenu (gantt_m1(0) = M1 et gantt_m2(0) = M2)

comment faire donc pour qu'il comprenne que le tableau et non complétement vide et en conséquence il ne doit plus m'afficher la message-box...

merci
 
Re : les tableaux sont ils vides?

etant débutant en VBA je ne vois pas trop ce que tu veux dire,

je n'ai jamais utilisé l'instruction erase , l'intérêt c'est justement qu'il y a conservation du contenu dans les tableaux .

mais je ne comprends toujours pas pourquoi la msgbox s'affiche alors que je lui demande bien de s'afficher exclusivement si on se retrouve avec vide1=True et vide2=True , or c'est impossible qu'ils soient égale à True car je fais les affectations suivantes : gantt_m2(0) = M2
du coup les tableaux gantt_m1(i) et gantt_m2(i) deviennent <> du vide qui se représente par ces guillemets ""
 
Re : les tableaux sont ils vides?

Bonsoir awa123,

C'est vrai que plus c'est long plus c'est bon 😉

Pour vérifier que les deux tableaux sont bien vides :

Code:
If Application.CountA(gantt_m1) + Application.CountA(gantt_m2) = 0 _
  Then MsgBox "tous les tableaux sont vides"
Edit : hello Misange 🙂

A+
 
Re : les tableaux sont ils vides?

Re,

Si les tableaux sont déclarés Variant comme ci-dessous et qu'on y entre du texte vide "", les tableaux ne sont pas vides :

Code:
Dim gantt_m1(10), gantt_m2(10)
gantt_m1(0) = "" 'facultatif
gantt_m2(2) = "" 'facultatf
If Application.CountA(gantt_m1) + Application.CountA(gantt_m2) = 0 _
  Then MsgBox "tous les tableaux sont vides"
A+
 
Re : les tableaux sont ils vides?

Re,

Mais s'ils sont déclarés autrement que Variant ils ne sont jamais vides :

Code:
Dim gantt_m1$(10), gantt_m2$(10)
If Application.CountA(gantt_m1) + Application.CountA(gantt_m2) = 0 _
  Then MsgBox "tous les tableaux sont vides"
A+
 
Re : les tableaux sont ils vides?

Bonsoir.
Pour tenter de répondre quand même à votre question, malgré le manque d'éléments, tout dépend comment vous avez déclaré vos variables M1 et M2 et ce que vous y avez mis. Il y a de fortes chances qu'elles soient converties en chaines vide lorsque vous forcer le code à les considérer comme String, de sorte que leur affectation à des élément des tableaux restent sans effet sur la comparaison.
 
Re : les tableaux sont ils vides?

Bonsoir et merci à vous Dranreb et job75

en fait j'ai trouvé pourquoi ça ne fonctionner pas j'avais écrit gantt_m1(0) = M1 alors que j'aurai du écrire avec les guillemets comme ceci gantt_m1(0) = "M1" car ce n'était pas une variable M1 (dsl de ne pas avoir été précis)

autre chose :

la fonction Application.CountA à l'air d'être très utile, je ne la connaissait pas.

cependant lorsque je fais le test comme ceci ça ne m'affiche toujours rien , est-ce normal?
Code:
Sub a()


Dim gantt_m1() As Variant
ReDim gantt_m1(10)

'gantt_m1(0) = "salut" 'facultatif

If Application.CountA(gantt_m1) = 0 _
  Then MsgBox " le tableau est vide"
End Sub
 
Re : les tableaux sont ils vides?

Bonjour
Non cela ne peut pas venir de ta version d'excel (heureusement !)
Si tu joignais plutot un petit exemple reproduisant ce que tu observes, nous parlerions tous de la même chose au lieu de spéculer 🙂.
Et si aussi tu nous disais pourquoi tu as besoin de vérifier que tes tableaux sont vides ?
 
Re : les tableaux sont ils vides?

Bonjour awa123, Misange, Bernard,

A voir, sur certaines versions il est bon de préciser WorksheetFunction :

Code:
If Application.WorksheetFunction.CountA(gantt_m1) = 0 Then
ou éventuellement :

Code:
If WorksheetFunction.CountA(gantt_m1) = 0 Then
Nota : CountA c'est la fonction Excel NBVAL.

A+
 
Re : les tableaux sont ils vides?

voici le petit test joint qui m'affiche rien 😕

Le but de ces tableaux est d'ordonnancer certaines tâches (ces tableaux feront office de machines), c'est pourquoi j'ai absolument besoin de savoir s'ils sont vides dans un premier temps avant de leur affecter des tâches à exécuter.
voir le Gantt dans le fichier complet pour voir l'illustration de cette finalité.
 

Pièces jointes

Re : les tableaux sont ils vides?

Re,

J'étais sur Excel 2003 et je suis allé sur mon portable avec Excel 2010.

Et effectivement je découvre que Application.CountA(gantt_m1) a la valeur 11 !!

C'est vraiment très curieux cette différence de comportement entre les versions 😕

Alors sur Excel 2010 il faut comme vous l'avez fait analyser chaque élément :

Code:
Sub a()
Dim gantt_m1() As Variant, vide As Boolean, t As Variant
ReDim gantt_m1(10)
'gantt_m1(0) = "salut" 'facultatif
vide = True
For Each t In gantt_m1
  If Not IsEmpty(t) Then vide = False: Exit For
Next
If vide Then MsgBox " le tableau est vide"
End Sub
A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
15
Affichages
788
Réponses
5
Affichages
914
Réponses
10
Affichages
664
Réponses
4
Affichages
281
  • Question Question
Microsoft 365 Erreur UBound
Réponses
4
Affichages
293
Retour