Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Les pros auront peut-être une solution par module de classe...
Néanmoins un bon code est celui qui a été réalisé en imaginant tous les cas de figures lors de l'analyse préalable, testé après réalisation et où le risque d'erreur doit donc être minime...
Néanmoins un bon code est celui qui a été réalisé en imaginant tous les cas de figures lors de l'analyse préalable, testé après réalisation et où le risque d'erreur doit donc être minime...
Actuellement dans mon code j'utilise les classiques "On Error Goto ou Resume Next" et, a priori, cela fonctionne plutôt bien puisque je n'ai pas de retour de mes collaboratrices.
Mais disons que c'est par curiosité intellectuelle, n'étant absolument pas développeur
Tout comme vous, je m’interrogeais sur les modules de classe.
Les modules de classes.... toute une histoire...
D'apres ce que j'ai compris (et utilisé), cela te permet de créer des propres types de données avec leurs propres fonctions, procédures et propriétés...
La premiere que j'ai créé ma permit de recreer une donnée de type integer avec les méthodes inc, dec, reset....
inc pour incremente de 1
dec pour decrementer de 1
reset pour remettre à la valeur de base
Je ne peux qu'abonder dans le sens de Chris. Et m'étonner que tu aies besoin de coller des on error resume next toutes les deux lignes.
Cette façon de faire n'est normalement destinée qu'à intercepter des erreurs dont on sait qu'avec raison elles peuvent se produire. PAr exemple :
je veux tester si un classeur toto.xls existe et si ce n'est pas le cas le créer.
je demande l'ouverture du fichier tot.xls. Si il n'existe pas, ça génère une erreur qui devrait arrêter la macro. On error resume next me permet d'aller à la ligne suivante qui contient les instructions de création de toto.xls
Mais dans un code bien fichu, en dehors de ce genre de situation, c'est à éviter.
Disons que tu demandes à l'utilisateur de saisir une date mais que ce soit optionnel
mieux vaut écrire
if madate <>"" then range ("truc")=madate
au lieu de mettre
on error resume next
range(truc)=madate
De même si tu travailles via des formulaires. Tu testes à la sortie du contrôle par exemple que les données saisies le sont et correctement plutot que renvoyer à des étiquettes d'erreur.
Si tu veux qu'on jette un oeil à ton code, mets en un bout.
ouh là tes noms de variables sont un peu longuettes ça rend le code très difficile à lire. Je te conseille de faire des noms certes explicatifs mais plus courts. Quand tu déclare tes variables, rien ne t'empêche de mettre à côté un commentaire pour bien expliquer à quoi elles correspondent.
pour éviter une erreur liée à une division par 0, il faut simplement tester si le dénominateur est égal à 0
donc
un truc du genre
Code:
if Worksheets("STAT").Range("BR" & VAR_INDEX_REMPLISSAGE_DES_TEXTBOX) <>0 then
UserForm_STAT.Controls("TextBox_Pourcent_RÉA_ETAT_MENS_CUMUL_FàF_Sept_Aout_" & VAR_FORM_SUR_USR_S).Value = Format(Worksheets("STAT").Range("BO" & VAR_INDEX_REMPLISSAGE_DES_TEXTBOX) / Worksheets("STAT").Range("BR" & VAR_INDEX_REMPLISSAGE_DES_TEXTBOX), "#,##0.00 %")
else
msgbox("attention la valeur de la cellule truc ne doit pas être nulle")
end if
après le msgbox, tu as deux possibilités : tu peux soit laisser comme ça et ton textbox ne reçoit rien, soit ajouter
exit sub et dans ce cas tu termines ta macro.
Mais un on error resume next n'a pas vraiment de sens ici.
Il y a d'autres possibilités moins violentes pour l'utilisateur pour lui redonner la main pour qu'il corrige
regarde par exemple ici Ce lien n'existe plus (avec un classeur exemple)
tu trouveras des conseils plus généraux sur cette page par exemple Ce lien n'existe plus
pour ton truc avec l'imprimante c'est différent car tu ne peux pas à priori savoir à l'avance si l'imprimante supporte ou pas le A3 (alors que tester ce qui est contenu dans une cellule ça oui tu peux)
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.