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.
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.