IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

"erreur d'exécution" dépassement de capacité


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 138
    Points : 54
    Points
    54
    Par défaut "erreur d'exécution" dépassement de capacité
    bonjour tout le monde

    Alors j'ai presquoi fini ma macro VBA mais une erreur persiste et je n'arrive pas à la résoudre.

    Voici mon programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Sub calculette()
    Dim module As String
    Dim cdedt As Integer
    Dim age As Integer
    Dim T1
    Dim rachatfr As Integer
    Dim T1XM
    Dim T1T2XM
    Dim gt As Integer
     
    module = InputBox("choisir le nom du module")
    Sheets(module).Activate
    cdedt = InputBox("saisir la classe, la franchise et la limite")
    age = InputBox("saisir l'âge de l'assuré")
    rachatfr = InputBox("si rachat franchise, tapez 1, si non, tapez 0")
    gt = InputBox("saisir le numéro de la GT")
    n = 10000
     
    For i = 1 To n
    If gt = Cells(i, 1).Value Then
        If cdedt = Cells(i, 7).Value Then
            If age = Cells(i, 8).Value Then
                If rachatfr = 1 Then
     
    T1 = Cells(i, 9).Value
    T1XM = Cells(i, 13).Value
    T1XMT2 = Cells(i, 15).Value
    MsgBox ("T1 est égal à " & T1)
    MsgBox ("T1 - XM = " & T1XM)
    MsgBox ("T1 - XM x T2 = " & T1XMT2)
                Else
    T1 = Cells(i, 9).Value
    T1XM = Cells(i, 13).Value
    MsgBox ("T1 = " & T1)
    MsgBox ("T1 - XM = " & T1XM)
                End If
            End If
        End If
    End If
    Next i
     
    End Sub
    et voici le message d'erreur qui apparait :

    erreur d'exécution '6' :
    dépassement de capacité.
    Pouvez vous m'aider à résoudre mon problème svp?

    et sinon une autre question, comment faire pour que si l'utilisataire ce trompe dans les saisies qu'il doit fair elors de mes messages box, crééer un message d'erreur et lui permettre de réécrire correctement sa saisie?

    Merci d'avance

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut guigui71 et le forum
    Avec autant d'infos, on peut facilement aider
    Je ne peux que supposer que l'une des valeurs dépasse 32768 (ou le 17 octobre 1989 en format date).

    Pour me répéter, on n'est ni dans ta tête, ni devant ton écran et on ne connaît pas le fichier => tout ce qui te semble évident ne l'est que pour toi !!!
    A+

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 138
    Points : 54
    Points
    54
    Par défaut


    bon, en faite après avoir testé mon programme ligne par ligne, l'erreur se trouve au niveau de ma variable GT, qui correspond à une série de 6 chiffres( ex : 123456)

    Mon classeur est constitué de 7 feuilles, et dans ses 7 feuilles composées de diverse colonnes.

    En faite, mon programme doit permettre à l'utilisateur du faite de rentrer des données( cf mes inputbox) de lui donner directement les prix associés à ses critères( correspond à T1, T1XM, T1XMT2).

    Parmis les critères que doit saisir l'utilisateur , on retoruve l'age, la GT( qui me pose pb) le module(qui correspond à ma feuille excel), cdedt(une série de 5 chiffres qui détermine un produit) et rachatfr( si le client à renouvellé sa franchise)

    Voila en gros le principe de mon programme

    et je ne comprends pas pourquoi j'ai ce message d'erreur uniquement quand je veux mettre ma variable GT.

    1 hypothèse : plusieurs valeurs correspondent à la GT ( 3000 au max )

    Ca te parait plus clair comme sa mon grand?
    merci

  4. #4
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    bonjour guigui71,

    tu as déclaré la variable gt as integer mais InputBox retourne toujours une valeur String, d'autre part est ce que tu compare une valeur String avec une valeur Integer ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If gt = Cells(i, 1).Value Then

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 138
    Points : 54
    Points
    54
    Par défaut
    je n'ai pas bien compris ce que tu m'as dit mais en tout cas ma variable gt est integer car dans le inputbox l'utilisateur doit entrer une série de chiffres.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 128
    Points : 55 940
    Points
    55 940
    Billets dans le blog
    131
    Par défaut
    Les variables de type integer peuvent aller de -32768 à 32767...

    il n'est utile de déclarer en long que si tu réalises pas la suite des opérations mathématiques avec la variable. Dans les autres cas, tu as intérêt à manipuler une chaine de caractères. Note aussi qu'avec des valeurs numériques, les 0 à gauche seront perdus...

    Tu peux t'aider de ce tutoriel de Didier Gonard pour contrôler la saisie de valeurs numériques dans un textbox

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 138
    Points : 54
    Points
    54
    Par défaut
    bonjour sabzzz

    alors ce matin j'ai remplacé integer par string et sa marche

    mais par contre, ce que je ne comprends pas c'est pourquoi ca ne marche pas avec intger et que sa marche avec string?

    Pourtant quand on définit une variable string c'est pour une chaine de caractère non?

    merci en tout cas

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 128
    Points : 55 940
    Points
    55 940
    Billets dans le blog
    131
    Par défaut
    La réponse à ta question de trouve dans mon message de hier à 21h26...

    Les variables de type integer acceptent des valeurs comprises entre -32768 et 32767

    Une saisie de 6 chiffres sans zéro à gauche donnera forcément une valeur supérieure aux limites permises pour une variable integer => dépassement de capacité.

    C'est pourquoi, si tu veux réaliser des opérations mathématiques sur la variable, tu dois la déclarer as LONG qui te donne une plage de valeurs entre +/- -2.000.000.000 et +/- +2.000.000.000

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 138
    Points : 54
    Points
    54
    Par défaut
    ah oui exact!

    désolé je n'ai pas pris le temps de voir ton tuto et je n'avais pas essayé ta méthode mais elle marche aussi

    merci à toi maintenant je vais essayer d'améliorer mon programme sur le faite que si l'utilisateur saisit une donnée fausse, celà annul le programme et le fait recommencer.

    Je viendrais surment vous revoir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    For i = 1 To n
     
    If gt = Cells(i, 1) Then
        If cdedt = Cells(i, 7).Value Then
            If age = Cells(i, 8).Value Then
                If rachatfr = "oui" Then
    T1 = Cells(i, 9).Value
    T1XM = Cells(i, 13).Value
    T1XMT2 = Cells(i, 15).Value
    MsgBox ("T1 est égal à " & T1)
    MsgBox ("T1 - XM = " & T1XM)
    MsgBox ("T1 - XM x T2 = " & T1XMT2)
                Else
    T1 = Cells(i, 9).Value
    T1XM = Cells(i, 13).Value
    MsgBox ("T1 = " & T1)
    MsgBox ("T1 - XM = " & T1XM)
                End If
            End If
        End If
    End If
    Next i
    voici le gros de mon programme
    mais je voudrai ajouté des msgbox pour avertir l'utilisateur si il s'est trompé dans la saisie

    par exemple : si 'lutilasateur a saisie une gt inexistant, lui afficher un message pour le lui dire et lui permette de corriger son erreur.

    Pouvez vous m'apporter un peu d'aide svp

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 128
    Points : 55 940
    Points
    55 940
    Billets dans le blog
    131
    Par défaut
    Utilise des combobox, basés par exemple sur une plage de données contenant les GT...

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 138
    Points : 54
    Points
    54
    Par défaut
    un exemple?

    car je ne sais pas du tout ce que c'est !

    j'ai un faible niveau en vba pour l'instant ...

  12. #12
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    bonjour guigui71,

    car je ne sais pas du tout ce que c'est !
    les explications sont ici, notion de base et quelque notion plus avancé
    http://excel.developpez.com/faq/?page=ObjFormulaire

    bonne lecture !

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 138
    Points : 54
    Points
    54
    Par défaut
    Bonjour sabzzz et merci pour le lien

    Je voudrais savoir si il est possible que le texte de mes mesbox soit en couleurs afin de rendre plus lisible les résultats;

    Merci d'avance

  14. #14
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    bonjour guigui71,

    cela dépend de ce que tu as choisi comme objets,
    TextBox, ListBox, Combobox ou autre ?

    les objets ont t'ils été créé avec la barre d'outils "Formulaires" ou "Boîte à outils contrôles" ?

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 138
    Points : 54
    Points
    54
    Par défaut
    Bonjour sabzzz,

    mes objets ont juste été créer dans des inputbox tout simplement

  16. #16
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    bonjour guigui71,

    on ne peut pas modifier le format d'un inputbox.

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 138
    Points : 54
    Points
    54
    Par défaut
    bonjour tout le monde alors voilà mon problème : j'aimerai imbrigué des else mais je ne sais pas si celà est possible :

    je vous explique par une partie de mon programme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For i = 1 To n
    If gt = Cells(i, 1) Then
        If cdedt = Cells(i, 3).Value Then
            If age = Cells(i, 8).Value Then
                If rachatfr = "oui" Then
     
    else .... (avec les résultats)
    alors voilà j'ai déjà un else, mais je voudrai en imbriqué pour dire à l'utilisateur s'il s'est trompé de saisi pour les variables

    par exemple pour lui dire "erreur de saisie de la gt"...

    Je ne sais pas du tout comment m'y prendre :
    !!!


    merci de bien vouloir m'aider!

  18. #18
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut guigui71 et le forum
    Il ne peut y avoir qu'un seul else, mais tu peux avoir plusieurs Else If :
    iF condition1 then
    actions si condition1=vrai
    else if Condtion2 then
    actions si condition2=vrai
    else if Condtion2 then
    actions si condition3=vrai
    else if etc...
    .....
    Else
    Actions si acune des conditions n'est vraie
    endif
    Mais dans ton cas, ce n'est pas bon, à mon sens : comme il faut tester chacune de tes variables, je ferais des tests de validation indépendants :
    if gt = Cells(i, 1) then
    actions (Msgbox par exemple)
    Exit sub (on sort
    endif
    If cdedt = Cells(i, 3)Then
    actions
    exit sub
    endif
    etc...

    Si tu as une suite de If Else, il faut penser que si plusieurs sont vrais, seul le premier sera pris en compte. le fait de les séparer permet une maintenance plus facile, surtout si tu veux faire des modifs alors que tu n'as plus l'algoritme en tête.
    A+

Discussions similaires

  1. [XL-2003] Erreur d'exécution 6 Dépassement de capacité
    Par Vadorblanc dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 08/11/2010, 22h43
  2. Erreur d'exécution '6': Dépassement de capacité
    Par XpFive dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 05/08/2009, 10h31
  3. Erreur d'éxecution '6' : dépassement de capacité
    Par mariafan dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 12/06/2008, 11h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo