Erreur dépassement capacité

Bonjour,

J'ai une petite question,

Mon application fonctionne au début correctement mais du moment où j'ai testé mon code dans la ligne 44865, un message d'erreur "dépassement de capacité s'affiche"

Je sais pas que faut il faire, j'ai vraiment besoin d'une solution

Une petite déception après avoir su que j'ai achevé tout le travail

SVP une solution

cdlt

erreur depassement
7test5.xlsm (40.32 Ko)

Bonjour,

dim n as long 

ou

dim n%

Bonjour,

retourne prendre un café Jean-Eric

dim n&

pour un Long

eric

RE,

Un message d'erreur s'affiche "Erreur de compilation, type d'argument byref incompatible"

ci joint

Amicalement

erreur argument
10test5.xlsm (39.92 Ko)

Bonjour seyf1981,

Dans ta sub Incrément(), il faut que ton 2ème paramètre soit aussi un Long

Cordialement

RE,

Merci pour ta réponse dhany,

Je suis vraiment désolé j 'ai pas bien saisi ta solution,

Peux tu préciser d'avantage ou rectifier le code joint

Amicalement

Dans ta sub Worksheet_Change(), tu as bien fait de changer n% en n& (comme ça t'a été conseillé) ;

donc maintenant, n est un Long et plus un Integer, ok ? ensuite, tu as plus bas, dans le If .. Else :

Me.Cells(n, 7) = Incrément(Me.Cells(n, 2), [b][color=#FF0000]n[/color][/b])

Tu envoies donc n en 2ème paramètre de la sub Incrément(), et si tu regardes cette sub Incrément(),

tu trouveras en 2ème paramètre de la déclaration : n As Integer, à remplacer par n As Long

Merci de me dire si ça a marché.

Amicalement

Re,

ça marche pas encore,

Je sais pas si j'ai bien compris

Mais ça fonctionne pas

Je sais pas aussi si ça marche sur ton PC ou non

cdlt

L'ennui, c'est que sur ta copie d'écran où il y a Worksheet_Change(), on ne voit pas ta sub Incrément() ;

plus haut, tu as écrit « Peux tu préciser d'avantage ou rectifier le code joint ? » mais tu n'as pas joint

de fichier Excel ; donc fais-le maintenant ; attention : ton fichier ne doit pas comporter de données

confidentielles (s'il y en a, remplace-les par des données fictives).

Re,

Voila le fichier excel (ci joint), pas de données confidentielles

Merci de vérifier si la saisie et l'incrémentation fonctionne correctement dans la ligne 44860

Je compte sur toi mon ami

Amicalement

cdlt

8test5.xlsm (39.92 Ko)

Je te retourne ton fichier modifié ; c'était tout simple !

Tu avais : Function Incrément(a As Integer, lna As [b][i][color=#FF0000]Integer[/color][/i][/b]) As Integer

Il fallait : Function Incrément(a As Integer, lna As [b][i][color=#0000FF]Long[/color][/i][/b]) As Integer

Je ne pouvais pas deviner que le 2ème paramètre s'appelle lna,

mais c'est bien lui qui reçoit la valeur de n quand il est envoyé

depuis la sub Worksheet_Change()

Maintenant, la compilation est OK !!!

4test5.xlsm (40.46 Ko)

RE,

Le message d'erreur ne s'affiche plus mais l'incrémentation ne fonctionne pas , le choix de valeur "non" dans la ligne 44862 donne "7" qui est le même numéro qui s'affiche dans la ligne 44857

De plus le numéro d'incrémentation doit normalement être sous la forme suivante "0000". Merci de vérifier l'incrémentation juste en haut de feuille

Amicalement

6test6.xlsm (40.06 Ko)

Le format "0000" est pour toute la colonne G ➯ 0007 : OK


En G4 : il y a un mot bizarre, que j'ai laissé : incrémanation ; « c'est nouveau, ça vient d'sortir ! »

(dixit Coluche, avec « la lessive qui lave plus blanc que blanc : c'est transparent ! »)

J'aurais pu remplacer par incrémentation, mais des fois qu't'aimes les néologismes...


Pour l'incrémentation, je n'ai rien fait : pas assez clair pour l'instant !

Les valeurs actuelles de G5 à G23 sont sans queue ni tête !

Liste (valeurs abrégées sur les 2 derniers chiffres) :

03, 01, 01, 02, 04, 02, 10, 04, 05, 03, 06, 08, 07, 05, 09

Pourquoi ça commence par 03 et pas par 01 ?

Pourquoi ça n'est pas dans l'ordre ?

Pourquoi il y a des doublons ?


CEPENDANT

Si j'ai bien deviné : ça doit être 0001, 0002, 0003, 0004, 0005, etc... pour chaque "non" en colonne D ;

si oui, il n'y a pas besoin de macro pour faire ça ! une simple formule suffit !!!

Tu trouveras un exemple bien concret dans le 2ème fichier joint Essai.xlsx ;

regarde la formule en G5 (tirée vers le bas jusqu'en G23).

Il me semble que ça devrait très bien convenir, et ta sub Incrémentation()

devient alors inutile ! qu'en dis-tu ?

7essai.xlsx (9.17 Ko)
3test6.xlsm (34.85 Ko)

Bonsoir, Salut à tous !

Après réponse en MP où j'ai confirmé à Seyf1981 (avant qu'il ne me dirige sur ce nouveau sujet) que si son tableau atteignait la ligne 32868 tous les éléments Integer étaient à passer en type Long, ceux reflétant le numéro de ligne et aussi ceux relatifs au numéro d'incrémentation également susceptible de déborder au fil de l'allongement du tableau...

NB- l'incrémentation se calcule par année, et les numéros éventuellement supprimés sont repris... la structure actuelle du code résulte d'une simplification de la structure antérieure où le calcul de l'incrémentation était opéré au sein de la procédure Change, son externalisation de la procédure vers une fonction de calcul en lui passant les paramètres clarifiait la situation et éliminait les anomalies antérieures...

La question du dépassement de capacité étant réglée, il reste à savoir si une erreur persiste pour ce qui concerne l'incrémentation. Cela ne devrait pas si elle ne se produisait pas jusque là. Mais à lui de confirmer avec les indications permettant de réexaminer la chose.

Cordialement.

Re,

Merci MFerrand, merci également à dhany pour ses efforts pertinentes

En faite l'incrémentation fonctionne correctement,

De même, la question de dépassement de capacité étant réglée (dèjà indiqué par MFerrand), ci dessous la solution de MFerrand:

Function Incrément(a As Long, lna As Long) As Long
    Dim Num, n&, i&

Je sollicite encore votre expertise, une question supplémentaire sur la fonction décaler (offset), le code ci dessous permet d'effacer les 3 colonnes B, D et G par double clic sur une valeur de B, que devient ce code si les 3 colonnes deviennent respectivement L, M et N et la feuille Excel s'affiche de Droite à gauche:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Permet de supprimer les trois Colonnes B, D et G             '
' en utilisant le Double-Clic sur la cellule en Colonne B       '
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    If Target.Column <> 2 Or Target.Row < 5 Then Exit Sub
    Application.EnableEvents = False
    With Target
        .ClearContents
        .Offset(0, 2).ClearContents
        .Offset(0, 5).ClearContents
    End With
    Application.EnableEvents = True
    Cancel = True
End Sub

Amicalement

Je te propose ce code VBA :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Permet de supprimer les trois Colonnes L, M et N          '
' en utilisant le Double-Clic sur la cellule en Colonne L   '
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
   If Target.Column <> 12 Or Target.Row < 5 Then Exit Sub
   Target.Resize(, 3).ClearContents: Cancel = True
End Sub

Amicalement, dhany

L'orientation de la feuille n'a pas d'incidence... et Dhany t'a répondu, cela simplifie ton code, les 3 colonnes se suivant.

Bonne fin de soirée à tous.

Bonjour,

ça fonctionne parfaitement

Merci à vous deux

Amicalement

Rechercher des sujets similaires à "erreur depassement capacite"