Tableau inversé...

Signaler
Messages postés
14
Date d'inscription
mercredi 5 juillet 2006
Statut
Membre
Dernière intervention
19 février 2008
-
Messages postés
14
Date d'inscription
mercredi 5 juillet 2006
Statut
Membre
Dernière intervention
19 février 2008
-
Bonjour, voici mon problème :

J'ai besoin d'associer à des string une valeur, ex :

"0001-400" -> 24
"0001-401 "->46
"0001-450" -> 103
"0021-450" -> 841

je veux a partir de la  string retrouver le numéro en 1 ou 2 instruction (c'est à dire sans boucle)

genre chiffre=fct("0001-400") mais sans boucle

remarque : c'est faire l'inverse d'un tableau, avec le nom retrouver l'index, mais sans boucle

D'avance merci

5 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
47
salut,
à moins que les valeurs de gauche ne donnent les valeurs de droite par un cacul, sinon impossible de récupérer sans boucle.
qui plus est... quel intérêt (à moins que ton tableau ne soit trop grand et que la raison ait été le temps d'éxecution)

Option Explicit
Private Type MyTab
    sVal As String
    lVal As Long
End Type
Dim tTab(3) As MyTab

Private Sub Form_Load()
    tTab(0).sVal = "0001-400": tTab(0).lVal = 24
    tTab(1).sVal = "0001-401": tTab(1).lVal = 46
    tTab(2).sVal = "0001-450": tTab(2).lVal = 103
    tTab(3).sVal = "0021-450": tTab(3).lVal = 841

    MsgBox fct("0001-400")
End Sub

Private Function fct(ByVal sVal As String) As Long
    fct = -1 'erreur
    Dim i As Long
    
    For i = LBound(tTab) To UBound(tTab)
        If tTab(i).sVal = sVal Then fct = tTab(i).lVal: Exit For
    Next i
End Function

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
14
Date d'inscription
mercredi 5 juillet 2006
Statut
Membre
Dernière intervention
19 février 2008

Comme tu l'as dit, le tableau est grand, et le temps d'execution est malheuresement trop critique...


d'autres idées ?
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
47
peut-être avec cette source :
http://www.vbfrance.com/codes/FASTCOLLECTION-COLLECTION-10000-FOIS-PLUS-RAPIDE-LECTURE-INDEX_42861.aspx

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Bonsoir,
Pas ouvert VB mais il y a peu être moyen en passant par une collection ou un Dictionnaire non?

bon j'vais ouvrir VB pour éviter de dire des bêtises.

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
14
Date d'inscription
mercredi 5 juillet 2006
Statut
Membre
Dernière intervention
19 février 2008

Je ne trouve vraiment pas, du nouveau ?