[VBA] Envoyer un listBox en paramètre à une fonction
Bonjour à tous ;)
Je veux envoyer un listbox à une fonction.
Je fais comme ceci :
Code:
1 2 3
| creerTableauExcel anneeDebut, anneeFin, moisDebut, moisFin, numeroTYPEDONNEE, _
Me!lstSh810, Me!lstProvinces, Me!lstPays, Me!CocherTousProvinces.Value, _
Me!CocherTousPays.Value |
Ceci a fonctionné et j'ai même utilisé le listbox "lstSh810" à l'intérieur de ma fonction.
Et un moment donnée. Ça a affiché le message suivant : "Utilisation incorect de null".
Bien entendu le listbox ayant le nom lstSh810 existe réellement alors il ne doit pas être null.
Quelqu'un comprend l'erreur???
Mary
Re: [VBA] Envoyer un listBox en paramètre à une fonction
slt,
Citation:
Envoyé par kissmytoe
le listbox ayant le nom lstSh810 existe réellement alors il ne doit pas être null.
c'est pas le contrôle qui est null, c'est sa valeur
à tester au préalable avec IsNull ou utiliser la fonction Nz pour transformer le Null en chaîne vide
Re: [VBA] Envoyer un listBox en paramètre à une fonction
Bonjour le Québec (ça fait plaisir :D ),
{EDIT} Ce qui suit n'est pas une solution au Pb évoqué.
Néanmoins, je suggère quand même d'éviter de typer les paramètres d'une fonction quand les valeurs de paramètres sont directement obtenues à partir de la propriété Value d'un contrôle, afin de "tolérer" une valeur Null toujours possible.{/EDIT}
Le Pb présenté me rappelle certains soucis.
Qu'est-ce qui te fait croire que le contrôle ListBox est à l'origine de l'erreur "Utilisation incorrecte de Null" ?
Citation:
Envoyé par kissmytoe
Ceci a fonctionné et j'ai même utilisé le listbox "lstSh810" à l'intérieur de ma fonction.
Et un moment donnée. Ça a affiché le message suivant : "Utilisation incorect de null".
Bien entendu le listbox ayant le nom lstSh810 existe réellement alors il ne doit pas être null.
En fait, d'après mon expérience, le Pb vient plutôt du typage des paramètres de la fonction qui se révèlent incompatibles avec le formulaire qui contient les contrôles, quand la source de données de ce formulaire est vide (ou encore à l'ouverture du formulaire, avant le chargement des données).
En effet, dans le cas d'une source de données vide, l'expression Me!CocherTousProvinces.Value retourne Null, ce qui est incompatible avec le type Boolean.
Aussi je te suggère, en ce qui concerne les valeurs de paramètres directement obtenues à partir des contrôles, d'utiliser plutôt un type Variant au lieu de Boolean.
Code:
1 2 3 4 5
| Function creerTableauExcel(ByVal anneeDebut As String, ByVal anneeFin As String, _
ByVal moisDebut As String, ByVal moisFin As String, _
ByVal numeroTYPEDONNEE As Integer, ByRef listSH810 As listBox, _
ByRef listProvinces As listBox, ByRef listPays As listBox, _
ByVal tousProvinces As Variant, ByVal tousPays As Variant) |
Dans le corps de la fonction, si le paramètre de fonction tousProvinces vaut Null, alors tu sais qu'il faut ignorer l'appel à la fonction (Exit Function).
D'une façon générale, contrôle le type des données passées en paramètres de la focntion.