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
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
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.
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
si case >1
tu appelles une sub paramétrée (ou fonction) avec comme paramètres (cas, a, b)
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
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.
ben, tu as l'algo que je t'ai communiqué avec toutefois 2 ou 3 !