Instruction select case vba

Bonjour,
Je suis en train de développer une petite application sur VBA et j'ai une toute petite question concernant l'instruction Select case
Pour bien comprendre ce que je veux
voici mon code :

Function insertion(a As Integer, b As Integer) ' étant donné que les contraintes sont satisfait
Dim i, j As Integer
i = 1
j = 1
Select Case cas(a, b)
Case 1
    chemin(1, temp) = a
    chemin(2, temp) = b
    Exit Function
Case 2
    If ligne(a) = 1 Then
        Do While chemin(i, colonne(a)) <> 0
            i = i + 1
        Loop
        Do While i >= 1
            chemin(i + 1, colonne(a)) = chemin(i, colonne(a))
        Loop
        chemin(1, colonne(a)) = b
    Else:
        chemin(ligne(a) + 1, colonne(a)) = b
    End If
    If temp <> colonne(a) Then
       'function permutation de colonne a definir
    End If
    Exit Function
Case 3
    If ligne(b) = 1 Then
        Do While chemin(i, colonne(b)) <> 0
            i = i + 1
        Loop
        Do While i >= 1
            chemin(i + 1, colonne(b)) = chemin(i, colonne(b))
        Loop
        chemin(1, colonne(b)) = a
    Else:
        chemin(ligne(b) + 1, colonne(b)) = a
    End If
    If temp <> colonne(b) Then
       'function permutation de colonne a definir
    End If
    Exit Function
End Function 


Si vous remarquez bien les instructions pour le cas 2 et cas 3 sont symétriques ( il n 'y a que le a et b qui changent de rôle)
ce que j'aimerai bien savoir est : est ce qu'il y a une façon de faire appel aux instructions du cas 2 au cas 3 tout en permutant le a et le b sans être obligé de reprendre tout le code

Merci pour votre aide
et bonne journée :)

1 réponse

  1. Contributeur
    Bonjour

    Select Case cas(a, b)
    "cas" ques aco ?

    chemin(1, temp) = a
    m^ question...

    etc

     Michel
    1. bonjour Michel_m,
      le cas (a,b) est une autre fonction qui permet de définir le cas du couple (a,b)
      elle prend des valeurs entières entre 1 et 4
    2. Contributeur
      @RaihanaTaget temp ?

      si case >1
      tu appelles une sub paramétrée (ou fonction) avec comme paramètres (cas, a, b)
      si case =2 alors X=A sinon X=B
      et ensuite
      If ligne(X) = 1 Then
      Do While chemin(i, colonne(X)) <> 0
      etc


      mais comme on ne connait pas le type des données ni d'où sortent et signifient presque toutes tes variables et leur type, il est difficile de choisir la solution fonction ou sub la + adaptée
    3. Je vois ce que vous vouliez dire, je m'excuse si mes données ne sont pas claires
      En fait: Cas ( a ,b ) est une fonction qui reçoit en paramètres le couple d'entiers (a,b) et retourne un entier entre 0 et 4 / Chemin () est une matrice / colonne (a) (respectivement ligne(a)) est une fonction qui reçoit en paramètre un entier et retourne l'indice de sa colonne (resp.ligne) de de l'entier dans la matrice chemin / temp est un entier naturel

      Si vous remarquez bien le bloc d'instruction lié à case 2 et celui a case 3 le a et le b joue des rôles symétriques c'est à dire si je prend les instructions de case 2 et je permute le a et le b je tombe dans ceux liés à Case 3.

      Ce que je chercher à savoir est un moyen d'appeler les instructions de case 2 en case 3 tout en permutant a et b question de rendre mon code plus léger

      J'espère que l'idée est claire maintenant et je tient à m'excuser une seconde fois.
    4. Contributeur
      @RaihanaTagbonjour
      ben, tu as l'algo que je t'ai communiqué avec toutefois 2 ou 3 !

      select case cas(a,b)
      case=1
      ...
      case=2
      call taproc(2)
      ...etc
      case=3
      call taproc(3)
      .....rtc
      case=4
      ....etc
      end select

      sub taproc(X)
      If ligne(X) = 1 Then
      Do While chemin(i, colonne(X)) <> 0
      ... etc