msgbox intro(A7).Name & vbcrlf & intro(0).Nameet tu sauras ce que "cela fait" .
If Intro(A7) And Val(Age) < TrancheAge - Chaine Or _ Intro(A10) And Age > TrancheAge - Chaine Then
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionil est assez curieux de lui demander par ailleurs de cocher sa tranche d'âge, puis de contrôler que ce qui a été coché correspond bien à l'année saisieL'âge est déjà calculé suivant l'année saisie.
Imagine donc (par exemple) une utilisation faite le 1er janvier alors que l'utilisateur est né un 31 décembre ! ===>> une erreur sur l'âge de 364 ou 365 jours (si année bissectile)Tu sais, ce genre d'erreur n'interviendra que très très rarement !
une vérification de cohérence des saisies ne sert à rien car : soit l'utilisateur ment et il mentira alors deux fois, soit il est honnête et indiquera d'emblée sa vraie tranche d'âge.Au contraire, la cohérence est nécessaire parce que le mode de calcul est différent pour chaque tranche d'âge.
Que fait la fonction Intro ?C'est la page de lancement de l'appli.
Sinon, question pratique, je te conseil de donner des noms explicites à tes variables, ce sera plus facile pour la maintenance".Pour ça, il n'y a pas besoin de maintenance puisque ce sont des valeurs définies et fixes uniquement pour le test.
Genre :
gAge : Variable globale de l'age
mAge : Variable privée d'un module/form
lAge : Variable locale
pAge : Paramètre
Ensuite, penses à toujours mettre "Option Explicit" (sans les " ) en haut de tout tes fichiers de code.Tout est déclaré dans un module, donc, je ne pense pas que ça soit vraiment utile, d'autant plus que plusieurs variables servent dans les autres forms (y en a plus de 50) !
Que fait la fonction Intro
C'est la page de lancement de l'appli.
Intro(A7)
Intro.OptTrancheAge1.Value = True Intro.OptTrancheAge2.Enabled = False Intro.OptTrancheAge3.Enabled = False
Incompréhensible et contradictoire !C'est vrai que pour celles ou ceux qui ne connaissent pas le fonctionnement du prog auront sans doute du mal à interpréter.
Et qu'est donc, dans ton esprit : (Intro(A7)C'est parce qu'à l'origine, ces variables A7, A10, etc., se trouvaient dans la form "Intro" et comme le test je le faisais dans une autre form, j'étais obligé de comparer avec l'age (suivant l'année de naissance) avec ces variables qui se trouvaient dans "Intro".
Ne serait-ce que parce que si un optionbutton est coché, les autres sont automatiquement décochés, sans aucun code.C'est exactement ça et je ne pense pas qu'il faille d'autres codes.
C'est vrai que pour celles ou ceux qui ne connaissent pas le fonctionnement du prog auront sans doute du mal à interpréter.
[i]Si tu vois que l'on comprend mal, il y a que 2 raisons :
- Soit tu expliques mal et donc, tu n'aides pas à la compréhension.
- Soit ton raisonnement n'est pas logique et donc le problème peut venir de là.
/i[quote]
Ben ! Je pense que les 2 sont à retenir !
Je vais essayer d'être plus précis dans mes explications et dans mes codes.
De cette manière, je pense qu'il y aura moins de post où beaucoup d'explications me sont demandées.
[quote]Comment as-tu déclarer la fonction Intro ?
Je sais pas si tu comprends bien !
[i]Intro(nom_de_variable)C'est vrai, mais alors, pourquoi, il n'y avait pas d'erreur ?
n'a jamais été une syntaxe permettant de contacter la variable d'une forme.
Intro.nom_de_variable
serait plus juste ... si ta variable est déclarée en Public dans la partie Déclarations de la forme susnommée ET que cette forme est chargée./i
MsgBox TypeName(UserForm1(A7))
déclare en Public dans un Module .Bas tes variables A7 et A10 (j'ignore totalement où tu as placé, déclaré et initialisé toutes les autres)C'est pour cette raison que je n'ai pas utilisé Option Explicit.
[- Age y est trantôt une chaîne de caractère et tantôt un nombreC'est vrai que c'est un peu rébarbatif ce que j'avais expliqué, mais les variables en question ont toutes été déclaré comme "Integer", alors, que je mette "Age" ou "Val(Age)", je ne pense pas que faille une grande différence puisque les résultats sont les mêmes.