Désolé mais pour le nombre de dim, le code cité plus haut (http://www.developpez.net/forums/d41...e/#post2517731)
est autrement plus propre.
Désolé mais pour le nombre de dim, le code cité plus haut (http://www.developpez.net/forums/d41...e/#post2517731)
est autrement plus propre.
Bonjour,
Ouaip ...
Tu as mille fois raisons sur ce point-là.
Attends, toi...
Tu ne savais pas que les vieux ont la peau dure ?
Je suis très très opiniâtre (pour ne pas dire un sacré têtu ...)
Je me suis attelé à mettre en oeuvre (pour m'amuser) une démarche ne faisant appel ni à l'Api, ni à la gestion d'erreur.
Je la mets là (elle est encore toute chaude), non pour des raisons de réelle utilité, mais pour ce qu'elle apporte d'intéressant sur :
- la manière dont VB dresse ses tableaux en mémoire
- comment il compte ses "éléments"
Amusant, non ?
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 Private Sub Command1_Click() Dim toto() MsgBox "pas initialisé ====> " & lebound(Not toto, toto, "bornesup", 2) MsgBox "pas initialisé ====> " & lebound(Not toto, toto, "borneinf", 1) Dim titi(6, 2 To 8, 1 To 15) MsgBox lebound(Not titi, titi, "borneinf", 1) MsgBox lebound(Not titi, titi, "bornesup", 1) MsgBox lebound(Not titi, titi, "borneinf", 2) MsgBox lebound(Not titi, titi, "bornesup", 2) MsgBox lebound(Not titi, titi, "borneinf", 3) MsgBox lebound(Not titi, titi, "bornesup", 3) End Sub Private Function lebound(quoi, qui, borne As String, dimen As Integer) As Integer Dim i As Integer, elm, cpt As Integer, nbel As Integer If Not quoi Then For Each elm In qui nbel = nbel + 1 Next elm 'MsgBox nbel Do cpt = cpt + 1 nbel = nbel \ (UBound(qui, cpt) - LBound(qui, cpt) + 1) Loop Until nbel = 1 If cpt >= dimen Then Select Case borne Case "bornesup" lebound = UBound(qui, dimen) Case "borneinf" lebound = LBound(qui, dimen) End Select End If End If End Function
Achtung : les divisions par \ et non par / ne sont pas au hasard...
Aie,
Pour le fun
titi(6,8)=titi(6,8,0)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Private Sub Command1_Click() Dim toto() MsgBox "pas initialisé ====> " & lebound(Not toto, toto, "bornesup", 2) MsgBox "pas initialisé ====> " & lebound(Not toto, toto, "borneinf", 1) 'Dim titi(6, 2 To 8, 1 To 15) Dim titi(6, 0 To 8) MsgBox lebound(Not titi, titi, "borneinf", 1) MsgBox lebound(Not titi, titi, "bornesup", 1) MsgBox lebound(Not titi, titi, "borneinf", 2) MsgBox lebound(Not titi, titi, "bornesup", 2) MsgBox lebound(Not titi, titi, "borneinf", 3) MsgBox lebound(Not titi, titi, "bornesup", 3) End Sub
Suis pas sur
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager