Hello,
J'ai une macro qui fait appel à une fonction, à laquelle j'envoie des arguments pour effectuer une action.
Ca marchait bien jusqu'à il y a quelques jours, et puis j'ai eu ce msg "Type d'Argument ByRef incompatible".
En effet je déclarais les arguments de la fonction sans préciser ByVal/ByRef, donc c'est ByRef qui était pris par défaut.
J'ai précisé ByVal, et ça marche.
Mais j'aimerais comprendre un peu mieux.
J'ai lu Les options ByRef et ByVal et je comprends le truc, mais je ne comprends pas pourquoi ça ne fonctionnait pas.
Tel que je le comprends, "qui peut le plus peut le moins", et donc, ByRef permet de modifier ou pas l'argument envoyé.
Pourquoi cela ne passait il pas ?
PS : ma macro de base déclare des variables du genre
et ensuite appelle la fonction :
(qui envoyait le msg d'erreur)
est devenu pour que ça marche :
J'ai une macro qui fait appel à une fonction, à laquelle j'envoie des arguments pour effectuer une action.
Ca marchait bien jusqu'à il y a quelques jours, et puis j'ai eu ce msg "Type d'Argument ByRef incompatible".
En effet je déclarais les arguments de la fonction sans préciser ByVal/ByRef, donc c'est ByRef qui était pris par défaut.
J'ai précisé ByVal, et ça marche.
Mais j'aimerais comprendre un peu mieux.
J'ai lu Les options ByRef et ByVal et je comprends le truc, mais je ne comprends pas pourquoi ça ne fonctionnait pas.
Tel que je le comprends, "qui peut le plus peut le moins", et donc, ByRef permet de modifier ou pas l'argument envoyé.
Pourquoi cela ne passait il pas ?
PS : ma macro de base déclare des variables du genre
VB:
Dim Toto As String
VB:
MaFonction (Toto)
VB:
Function MaFonction (MonArg As String)
est devenu pour que ça marche :
VB:
Function MaFonction (ByVal MonArg As String)
Dernière édition: