Tableau à 2 dimensions

Résolu
Cramroque Messages postés 4 Date d'inscription jeudi 6 mars 2014 Statut Membre Dernière intervention 6 mars 2014 - Modifié par jordane45 le 6/03/2014 à 18:30
jordane45 Messages postés 37725 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 26 septembre 2023 - 6 mars 2014 à 18:29
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

jordane45 Messages postés 37725 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 26 septembre 2023 342
6 mars 2014 à 10:34
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..


0
Cramroque Messages postés 4 Date d'inscription jeudi 6 mars 2014 Statut Membre Dernière intervention 6 mars 2014
6 mars 2014 à 11:46
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 ...
0
jordane45 Messages postés 37725 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 26 septembre 2023 342
6 mars 2014 à 13:33
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

0
Cramroque Messages postés 4 Date d'inscription jeudi 6 mars 2014 Statut Membre Dernière intervention 6 mars 2014
6 mars 2014 à 17:54
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 ?
0
jordane45 Messages postés 37725 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 26 septembre 2023 342
6 mars 2014 à 18:13
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....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Cramroque Messages postés 4 Date d'inscription jeudi 6 mars 2014 Statut Membre Dernière intervention 6 mars 2014
6 mars 2014 à 18:28
désolé Jordane j'ai fait une erreur cela fonctionne.
un grand merci
0
jordane45 Messages postés 37725 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 26 septembre 2023 342
6 mars 2014 à 18:29
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. ^^
0
Rejoignez-nous