Bonjour,
Dans mon code VBA, au lieu de répéter une vingtaine de fois une boucle IF, j'ai décidé de créer une fonction et de faire appel à cette dernière.
Voici mon code initial avant la création de la fonction (ceci fonctionne):
'Initialisation des variables
M = 65
P = 0
Q = 32
N = Chr(M) 'N=A
If M = 90 Then
M = 65
Q = M + P
N = Chr(Q) & Chr(M)
P = P + 1
Else
M = M + 1
N = Chr(Q) & Chr(M)
End If
'Ici j'appelle une autre fonction.. mais pas utile que je l'insére. Ensuite, je dois ré-exécuter ma boucle
If M = 90 Then
M = 65
Q = M + P
N = Chr(Q) & Chr(M)
P = P + 1
Else
M = M + 1
N = Chr(Q) & Chr(M)
End If
'Idem. Je ré-exécute ma boucle et ainsi de suite...
If M = 90 Then
M = 65
Q = M + P
N = Chr(Q) & Chr(M)
P = P + 1
Else
M = M + 1
N = Chr(Q) & Chr(M)
End If
' ....
Ma solution a été de créer une fonction boucle afin de ne pas devoir la ré-écrire à chaque fois, sauf que j'obtiens systématiquement une erreur de compilation: Type d'argument ByRef incompatible
Function boucleM(ByRef Var_M As String) As String
MsgBox (Var_M)
If Var_M = 90 Then
M = 65
Q = M + P
N = Chr(Q) & Chr(M)
P = P + 1
Else
M = Var_M + 1
N = Chr(Q) & Chr(M)
End If
End Function
Sub Macro20()
'
' Macro20 Macro
'
M = 65
P = 0
Q = 32
N = Chr(M)
boucleM(M)
MsgBox (M)
MsgBox (N)
MsgBox (P)
MsgBox (Q)
End Sub
Questions:
1/ Comment dois-je faire pour que mon code fonctionne?
2/ Les variables gardent-elles la même valeur mais en passant dans une fonction? Si non, je dois donc récupérer les bonnes valeurs après le passage dans la fonction, mais comment faire?
3/ Je ne comprends pas bien comment appeler une fonction:
-> valeurRetournee = appelFonction(Var1, Var2)
-> appelFonction(Var1, Var2)
-> appelFonction Var1, Var2
quelle est la bonne façon de faire??
Je vous remercie par avance de votre aide.