Tableau à 2 dimensions [Résolu]

Signaler
Messages postés
4
Date d'inscription
jeudi 6 mars 2014
Statut
Membre
Dernière intervention
6 mars 2014
-
Messages postés
31190
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 janvier 2021
-
Bonjour,

je déclare le tableau suivant en vba

125 n30
127 n31
130 s123
132 n32
133 n33
141 n34
150 n34
155 rien
160 rien

de la façon suivante en créant un tableau à 2 dimensions et en affectant les valeurs indiquées

option base 1
dim tablo (9,2) as variant
tablo (1,1) =125
tablo (1,2) =n30
tablo (2,1) = 127
tablo (2,2) = n31
tablo (3,1) = 130
tablo (3,2) = s123
tablo (4,1) = 132
tablo (4,2) = n32
tablo (5,1) = 133
tablo (5,2) = n33
tablo (6,1) =141
tablo (6,2) =n34
tablo (7,1) = 150
tablo (7,2) = n34
tablo (8,1) = 155
tablo (8,2) = rien
tablo (9,1) = 160
tablo (9,2) = rien



en récupérant une valeur (grâce à une userform ou autre) dont le nom pourrait être MaVariable
je voudrai la comparer aux valeurs "à gauche" de mon tableau (dans tablo pas sur une feuille excel) pour trouver la valeur approchante la plus petite pour que me soit renvoyer la valeur correspondante.

Exemple :
si MaVariarable = 127.5 je veux que la valeur retournée soit n31 (puisque tablo (2,1) correspond à tablo (2,2))
si MaVariable = 129.850 je veux que la valeur retourné n31 (puisque tablo (2,1) correspond à tablo (2,2))
si MaVariable = 130.01 je veux que la valeur retournée soit s123 (puisque tablo (3,1) correspond à tablo (3,2))

Merci de votre aide, je bloque depuis plusieurs jours

5 réponses

Messages postés
31190
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 janvier 2021
342
Bonjour,

Là comme ça.. (sans trop avoir cherché plus loin) je te proposerai la chose suivante :

Tu parcours ton tableau et tu compares ta valeur à la colonne de droite..
Tant que ta valeur est supérieur à celle du tableau..tu avances de 1.
Dès qu'elle est inférieur.. tu t'arrêtes et tu prend la valeur de la cellule qui t'intéresse..


Messages postés
4
Date d'inscription
jeudi 6 mars 2014
Statut
Membre
Dernière intervention
6 mars 2014

Bonjour,
Merci de ta réponse,
mais je me suis mal expliqué, il n'y a pas de référence à une feuille de calcul, il n'y a pas de cellule ...
Messages postés
31190
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 janvier 2021
342
C'est plutot moi qui me suis mal exprimé :
Tu parcours ton ARRAY ( tablo )
Tu compares ta valeur avec la colonne 1 de ton array
tablo (1,x)
Tu récupères la valeur de ta seconde colonne:
tablo (2,x)

Function chercheArray(MaVal As Double) As String
    Dim RESULTAT As String
    Dim tablo(9, 2) As Variant
    
    
    tablo(1, 1) = 125
    tablo(1, 2) = "n30"
    tablo(2, 1) = 127
    tablo(2, 2) = "n31"
    tablo(3, 1) = 130
    tablo(3, 2) = "s123"
    tablo(4, 1) = 132
    tablo(4, 2) = "n32"
    tablo(5, 1) = 133
    tablo(5, 2) = "n33"
    tablo(6, 1) = 141
    tablo(6, 2) = "n34"
    tablo(7, 1) = 150
    tablo(7, 2) = "n34"
    tablo(8, 1) = 155
    tablo(8, 2) = ""
    tablo(9, 1) = 160
    tablo(9, 2) = ""
    
    Nbl = UBound(tablo)
    For i = 1 To Nbl
    valTablo = tablo(i, 1)
        If MaVal < valTablo Then
            Exit For
        End If
    Next
     RESULTAT = tablo(i - 1, 1) & "->" & tablo(i - 1, 2)
    chercheArray = RESULTAT
End Function

Sub test()

Debug.Print (chercheArray(127.5))
Debug.Print (chercheArray(129.85))
Debug.Print (chercheArray(130.01))
End Sub

Messages postés
4
Date d'inscription
jeudi 6 mars 2014
Statut
Membre
Dernière intervention
6 mars 2014

j'ai copié/collé et ça na fonctionne pas ...
c'est peut-être des instructions faites avec une versions supérieures d'office 2003 et qui ne sont pas reconnues par ma version ?
Messages postés
31190
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 janvier 2021
342
Heu... Peux tu expliquer ce que tu entends par : "ça ne fonctionne pas" ?

As-tu un message d'erreur ?
L'as tu essayé en mode pas à pas ?
Ou..comme je le pense.. tu n'as pas su...comment le résultat allait s'afficher....
Messages postés
4
Date d'inscription
jeudi 6 mars 2014
Statut
Membre
Dernière intervention
6 mars 2014

désolé Jordane j'ai fait une erreur cela fonctionne.
un grand merci
Messages postés
31190
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 janvier 2021
342
Ahh... tu m'as mis le doute quelques secondes....^^

Penses à clôturer la discussion si la question est résolue.
( Cliquer sur le lien MARQUER COMME RESOLU sous le titre de la question).

Bonne prog. ^^