Optimisation utilisation d'index

Bonjour,

J'utilise un select case qui pour le moment contient 3 index.

Je vais avoir une centaine d'index

Comment éviter l'appel à ces index un par un comme je le fait dans résultat ?

Dim Data As String
Dim Code As Variant
Dim Resultat As String

        Select Case Data
            Case "1"
                index = 0

            Case "2"
                index = 1

            Case Else
                index = 3
        End Select

        Code(index) = Data

        Resultat = Code(0) + Code(1) + Code(2)

bonjour, bonsoir,

une façon de faire

    Dim resultat As Long
    '(...)
    resultat = 0
    For i = LBound(code) To UBound(code)
        resultat = resultat + code(i)
    Next i
    MsgBox resultat

Bonjour

Un fichier est TOUJOURS le bienvenu

Apparamment ton index=data-1 donc code(val(data)-1) = Data

A+ François

Bonjour,

Voici un fichier exemple, J'ai une incompatibilité de type.

8exemple.xlsm (12.86 Ko)

Ci joint ma solution

17exemple.xlsm (12.79 Ko)

A+ François

bonjour,

hello fanfan38

Voici un fichier exemple, J'ai une incompatibilité de type.

le signe plus m'a induit en erreur, je pensais que tu voulais additionner des valeurs.

une correction

Dim resultat As string
    '(...)
    resultat = join(code,"/")
    MsgBox resultat

Merci à vous 2!

@h2so4, je pense que votre solution est la bonne.

Voyez-vous quelle est mon erreur concernant l'incompatibilité de type ?

Sub test()
Dim Data As Variant
Dim Code As Variant
Dim Resultat As String

Data = Array("22", "10", "21")

        Select Case Data
            Case "22"
                Index = 0

            Case "10"
                Index = 1

            Case Else
                Index = 3
        End Select

        Code(Index) = Data

        Resultat = Code(0) + " / " + Code(1) + " / " + Code(2)

        MsgBox Resultat
End Sub

re-bonjour,

Ce code n'est pas complet et ne peut donc fonctionner. Que cherches-tu à faire ?

Cette exemple n'est qu'un test pour essayer de comprendre! Que manque-t-il pour qu'il soit fonctionnel?

Bonjour,

je ne sais pas car je ne comprends pas ce que tu veux faire.

data est un tableau, dans ton select case tu dois faire référence à un élément du tableau pas à tout le tableau. Code est une variable variant non initialisée, plus tard tu essaies de l'utiliser comme un tableau, il manque une instruction qui lui donne le type tableau.

voici ta macro complétée avec des instructions qui lui permettent de fonctionner. Mais est-ce le résultat que tu souhaites ...

Sub test()
    Dim Data As Variant
    Dim Code As Variant
    Dim Resultat As String

    Data = Array("22", "10", "21")
    ReDim Code(LBound(Data) To UBound(Data)) 'on redefinit code comme étant un tableau de même dimension que Data
    For i = LBound(Data) To UBound(Data)
        Select Case Data(i)
            Case "22"
                Index = 0

            Case "10"
                Index = 1

            Case Else
                Index = 2
        End Select

        Code(Index) = Data(i)
    Next i

    Resultat = Join(Code, "/")

    MsgBox Resultat
End Sub

macro que l'on aurait pu écrire ainsi :

Sub test()
  Dim Data As Variant
  Data = Array("22", "10", "21")
  MsgBox Join(Data, "/")
End Sub

Bonsoir,

@h2so4, tu as vraiment cerné mon besoin, c'est exactement ce que je cherchais à faire.

La 2éme macro ne convient pas que je dois pouvoir changer l'ordre via les index.

Merci J

@fanfan38, merci d'avoir essayé de m'aider, comme l'a dit h2so4, mes explications n'étaient pas très claire.

Bonne soirée

Rechercher des sujets similaires à "optimisation utilisation index"