Dépassement capacité

Bonjour à tous,

il s'agit du message d'erreur qui me stoppe la macro.

Pour savoir ou, j'ai mis des msgbox pour voir jusqu'ou çà se passait bien.

apparemment çà se passe dans la boucle d'une boucle ou il doit trouver la variable Jrsmois.

sans titre
8conges-2019.xlsm (188.85 Ko)

fronck

bonsoir,

tu définis jrsmois comme entier > les valeurs qu'il peut contenir sont limitées à la plage -32768 à 32767. et cells(j,5) contient une date (qui au format interne excel correspond au nombre de jours depuis le 1/1/1900, qui peut être plus grand que 32767. tu reçois une msg dépassement quand c'est le cas). Une façon de corriger est de définir cette variable comme long.

mais plus loin tu utilises cette variable jrsmois dans la fonction dateserial(année, mois, jrsmois) dans ce cas jrsmois doit contenir une valeur de jour comprise entre 1 et 31 max. tu recevras également un dépassement de capacité sur cette instruction quand tu auras corrigé la première erreur.

j'en conclus que pour corriger ton problème tu peux laisser jrsmois comme integer mais changer l'instruction

jrsmois=cells(j,5)

par

jrsmois=day(cells(j,5))

après tu devras encore corriger cette ligne

If Sheets("cascade").Round(Range("G" & i)) <> Range("G" & i) Then

en

If Round(Sheets("cascade").Range("G" & i)) <> Range("G" & i) Then

Bonjour h2so4 (un chimiste ?)

Merci pour ton explication sur les variables, je découvre.

pour le jrsmois dans la boucle, çà s'est confirmé quand j'ai changé le code de l'une des pages concernée par le module,

et il a fallut mettre sheets("data") avec la variable dans la condition et le résultat de la condition de la boucle.

Pour le round ou weekday c'est pas la 1ere fois que je fais l'erreur de pas le mettre avant la feuille.

pour les day, finalement il a fait sans puisque ma macro va jusqu'au bout, mais je finis les contrôles y'a encore un bug

merci

a+

fronck

Rechercher des sujets similaires à "depassement capacite"