Erreur d'exécution '6' : Dépassement de capacité

Bonjour à tous,

Tout d'abord, j'espère que ce sujet n'a pas déjà été abordé (je n'ai moi-même rien trouvé en faisant une recherche).

(Il est important de noter que je ne suis pas l'auteur de ce fichier et que je n'avais aucune connaissance des macros jusqu'à mon auto-formation express de ce jour).

Voici mon problème :

J'utilise un fichier excel pour gérer une base de données. Ce fichier fonctionnait comme un charme jusqu'à la semaine dernière, où le message "Erreur d’exécution '6' : Dépassement de capacité est apparu.

En cliquant sur débogage, le panneau VBA s'affiche et me surligne la ligne suivante : lignetot = Selection.Row

Après quelques recherches, j'ai vu que le problème pouvait venir du fait que la feuille qui pose problème a atteint les 32 768 lignes et qu'apparemment c'est le maximum que certaines fonctions peuvent atteindre. Seulement, lorsqu'on parle de ce maximum, on dit de remplacer la fonction "integer" avec la selection "long" mais je n'ai aucune de ces fonctions dans le macro...

Voici la partie problématique :

Sheets("Identifiants").Select

Range("A2").Select

Selection.End(xlDown).Select

lignetot = Selection.Row

Set rgFound = Range("D2:D" & lignetot).Find(nomajouter)

Quelqu'un pourrait-il m'aider ?

Slt fvieira,

c'est mieux de poster tout le code, sinon ajoute en haut de ton code un truc du genre:

Dim lignetot  As Long

ou

Dim lignetot  As Variant

Bonjour,

pour contourner le problème je te propose cette solution qui fera exactement la même chose:

lignetot = Range("A2").end(xldown).row

Toi qui commences en VBA, je te donne ce conseil, évite au maximum de passer par Select ou Selection, tu trouveras souvent largement mieux, comme la solution que je viens de te proposer

Tu me diras si le fait de ne plus utiliser Select pose des soucis pour la suite de ton code

Slt fvieira,

c'est mieux de poster tout le code, sinon ajoute en haut de ton code un truc du genre:

Dim lignetot  As Long

ou

Dim lignetot  As Variant

Je ne pense pas que le souci vienne de la variable, car j'ai fait quelque chose de similaire pour tester, variable non déclarée, classeur vide, j'atteins donc la ligne 1 million quelque chose, et la valeur s'enregistre parfaitement, je pense que le souci vient plus du Selection.Row

Bonjour Ausecour, bonjour m3ellem1 !

Un grand merci pour votre aide ! Effectivement ajouter Dim lignetot As Long a reglé mon problème !

C'est bien noté pour le Select ou Selection... Ce n'est pas simple, mais je vais persévérer.

Slt fvieira,

c'est mieux de poster tout le code, sinon ajoute en haut de ton code un truc du genre:

Dim lignetot  As Long

ou

Dim lignetot  As Variant

Je ne pense pas que le souci vienne de la variable, car j'ai fait quelque chose de similaire pour tester, variable non déclarée, classeur vide, j'atteins donc la ligne 1 million quelque chose, et la valeur s'enregistre parfaitement, je pense que le souci vient plus du Selection.Row

Non mais la declaration d'une variable est parfois trés trés importante

Je suis d'accord que c'est parfois très important, car VBA peut prendre par défaut le mauvais type de variable et créer des bugs qu'une simple déclaration peut régler

Je suis d'accord que c'est parfois très important, car VBA peut prendre par défaut le mauvais type de variable et créer des bugs qu'une simple déclaration peut régler

exactement

Rechercher des sujets similaires à "erreur execution depassement capacite"