bonjour,
j'ai un tableau déclaré ainsi:
J'aimerais savoir comment on peut connaitre le nb d'element du tableau, initialisé ou non.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Public branchs() As String
Merci
bonjour,
j'ai un tableau déclaré ainsi:
J'aimerais savoir comment on peut connaitre le nb d'element du tableau, initialisé ou non.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Public branchs() As String
Merci
UBound?
N'oubliez pas de cliquer surquand vous avez obtenu ou trouvé vous-même la réponse à votre question.
Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
Pensez aussi à voter pour les réponses qui vous ont aidés.
------------
Je dois beaucoup de mes connaissances à mes erreurs!
salut
avec ça ça ça fonctionne, mais pas si tu fais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Sub tableau() Dim letableau(2) MsgBox UBound(letableau) End Sub
parceque dans ce cas, l'indice n'appartient pas a la selection car si le tableau est vide, il est a -1 le ubound
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Sub tableau() Dim letableau() MsgBox UBound(letableau) End Sub
'me renvoie 'Type mismatch'
Code : Sélectionner tout - Visualiser dans une fenêtre à part MsgBox ("nb bre" + UBound(branchs))
de plus; UBound ne fait pas partie des fonctions affichées quand je fais Ctrl+espace dans l'éditeur (peut etre que ca change rien mais bon).
et sinon vous avez si on peut mettre facilement des commentaires sur pls lignes ?
merci
Remplace le + par un & (opérateur de concaténation).
Pour les commentaires, il faut afficher le menu édition et regarder dans les icônes qu'il propose.
N'oubliez pas de cliquer surquand vous avez obtenu ou trouvé vous-même la réponse à votre question.
Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
Pensez aussi à voter pour les réponses qui vous ont aidés.
------------
Je dois beaucoup de mes connaissances à mes erreurs!
Ca change effectivement
=> quel difference fais tu entre & et +?
quel est le type de retour de la fnction UBound?
Merci
je continuerai cette conversation avec toi demain si nécessaire et si tu veux bien encore répondre.
bonne soirée
5 + 5 = 10
5 & 5 = "55"
+ additionne
& concatène en convertissant les valeurs en chaîne de caractères
merci, c'est intéressant.
J'ai malgré tout toujours un problème:
'Subscript out of range' sur la ligne: 'If (UBound(branchs) > 0) Then'
Voici les lignes de code qui pourront nous aider à résoudre ce problème:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Public branchs() As String Sub display_all() Dim i As Integer 'branches if there are (3 max) For i = 0 To 2 ' branchs if there are are present in H4->J4 If Cells(4, i + 8).Value = "" Then Exit For End If ReDim Preserve branchs(i) branchs(i) = Cells(4, i + 8).Value MsgBox ("BRANCH(i) = " + branchs(i)) 'OK ca fonctionne Next If (UBound(branchs) > 0) Then MsgBox ("nb bre" & UBound(branchs)) End If end sub
Nouvelle question, et dernière normalement:
Comment savoir si un tableau a été initialisé?
(car s'il ne l'est pas, UBound() foire ).
Merci
ben tu t'arrange pour qu'il soit toujour positif![]()
ps : c'est qu'une combine que j'aurais employé, je pretend pas pas que ce soit la regle pour gerer un tableau()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Public branchs(1) As String Sub display_all() Dim i As Integer 'branches if there are (3 max) For i = 1 To 3 ' branchs if there are are present in H4->J4 If Cells(4, i + 7).Value = "" Then
je prens même pas la peine de corriger ce que j'ai dis, je pense que c'est une bétise, sorry
par contre je me suis penché sur ton code, je pense qu'il ne marche pas a cause de l'exit for. si tu teste la premiere cellule et qu'elle est vide, a cause du exit for, tu sore de la boucle, tu ne teste pas la deuxieme cellule, et tu prend l'instruction suivante sans avoir incrementé le ubound, et donc erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Sub display_all() Dim branchs() Dim i As Integer 'branches if there are (3 max) For i = 1 To 3 ' branchs if there are are present in H4->J4 If Cells(4, i + 8).Value = "" Then ' Exit For ' ici c'est pas bon, je pense essaye sans End If ReDim Preserve branchs(i) branchs(i) = Cells(4, i + 7).Value MsgBox ("BRANCH(i) = " & branchs(i)) 'OK ca fonctionne Next If (UBound(branchs) > 0) Then MsgBox ("nb bre" & UBound(branchs)) End If End Sub
Pour information une solution est donnée à ce problème dans le tutoriel de Silkyroad.
Je sais que cette réponse apparaît un peu tard mais j'espère qu'elle pourra aider ceux qui comme moi se voient confrontés au test d'un tableau vide.
Partager