Dépassement de capacité (Erreur 6)

Signaler
Messages postés
167
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
12 octobre 2020
-
Messages postés
167
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
12 octobre 2020
-
Bonjour,

Constamment en voulant programmer en VBA je tombe sur une erreur 6.
Peu importe ce que je fais je me retrouve avec un dépassement de capacité alors que j'ai défini mes variables comme étant des "Double".
Etrangement, souvent, en passant de "Double" à "Long" tout fonctionne.

L'exercice sur lequel je peine actuellement est le suivant (et pourtant il est d'une facilité) :

Sub Puissance()
Dim lngVal As Long
Dim lngPuissance As Long
Dim lngElevation As Long

lngVal = InputBox("Entrez une valeur")
lngPuissance = InputBox("A quelle puissance voulez-vous l'élever ?")
lngElevation = lngVal ^ lngPuissance

MsgBox lngElevation

End Sub


Il m'est impossible d'élever un pauvre nombre décimal à une quelconque puissance.
Ici l'erreur apparaît lorsque je cherche à faire 7,4^8.
En voulant débogger, il apparaît que lngElevation vaut 0 alors lngVal vaut 7,4 et lngPuissance vaut 8.

En vous remerciant pour l'aide apportée.

8 réponses

Messages postés
14854
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 octobre 2020
589
Bonsoir

Tu as défini comme long, donc un entier.
Tu ne peux pas y mettre un décimal.
Messages postés
167
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
12 octobre 2020
6
Effectivement mais même malgré cela, je devrais avoir un résultat.
Mais alors pourquoi quand je définis tous mes variables comme étant des "Double" rien ne fonctionne ? Alors que le corrigé de l'exercice indique que le type est bien un "Double ?
Messages postés
14854
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 octobre 2020
589
Je ne fais que très rarement de vba, je dirais que l'inputbox retourne une string qu'il faut convertir en double avec Cdbl ou Val
Messages postés
29735
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 octobre 2020
2 839
Bonjour
Code testé sous excel.
Aucun souci de fonctionnement (après avoir modifié le type des variables en Double) y compris avec le calcul de la question.
A noter qu'il faut bien utiliser une virgule et non le point pour le 7,4
Messages postés
14854
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 octobre 2020
589 >
Messages postés
29735
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 octobre 2020

Ha oui, la virgule!
Messages postés
167
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
12 octobre 2020
6 >
Messages postés
29735
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 octobre 2020

Bonjour jordane45,

Le code est tiré d'un livre que j'ai acheté dont le corrigé prouve bien que c'est supposé fonctionné.
Sauf que chez-moi cela ne fonctionne absolument pas. Et ce n'est pas la première fois.
Et je vous rassure j'emploie bien la virgule. J'en viens limite à remettre en cause ma version d'Excel.
Messages postés
167
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
12 octobre 2020
6
Comment est-ce possible alors que j'ai déclaré mes variables en Double ?
Je vais quand même essayé ce que vous me dites. Je vous remercie.
Messages postés
14854
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 octobre 2020
589
En fait, si ton ordinateur est configuré de sorte que le symbole décimal est le point, alors c'est le point qu'il faut utiliser
Messages postés
167
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
12 octobre 2020
6
Non j'avais déjà essayé et ça ne marchait pas non plus.
Quand je saisi 7.4 au lieu de 7,4 j'ai une erreur 13 incompatibilité de type tandis qu'avec 7,4 j'ai un dépassement de capacité.
Mon ordinateur est configuré de sorte que la virgule soit utilisée comme séparateur décimal.
Messages postés
14854
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 octobre 2020
589
Je sais pas, mais j'ai testé sous windows et je pense que Jordane aussi.

Messages postés
14854
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 octobre 2020
589
Par contre, je suis sûr que les accents ne sont pas géré pareil sous mac et sous windows
Messages postés
167
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
12 octobre 2020
6 >
Messages postés
14854
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 octobre 2020

J'ai enlevé tous les accents juste pour voir mais rien n'a changé.
Bon ben plus qu'à apprendre le VBA sur Windows.
Messages postés
29735
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 octobre 2020
2 839
Je confirme.
Mac... C'est le mal.. :-)
Messages postés
14854
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 octobre 2020
589 >
Messages postés
29735
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 octobre 2020

Jaloux ;)
Messages postés
14854
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 octobre 2020
589
Peux tu poster ton code modifié?
Messages postés
167
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
12 octobre 2020
6
Sub Puissance()
Dim dblNombre As Double
Dim dblPuissance As Double
Dim dblRésultat As Double
Dim strChaîne As String

On Error GoTo Sortie_Sur_Erreur
dblNombre = InputBox("Entrer le nombre")
dblPuissance = InputBox("Entrer la puissance")
dblRésultat = dblNombre ^ dblPuissance
strChaîne = dblNombre & " ˆ " & dblPuissance & " = "
MsgBox strChaîne & Format(dblRésultat, "### ### ###.00")
Sortie_Sur_Erreur:
End Sub


Ci-joint le code tiré du corrigé du livre mais qui ne marche absolument pas chez-moi.
Ce n'est pas la première fois que cela m'arrive.
Messages postés
14854
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 octobre 2020
589
Je te conseille d'éviter les accents ou cédilles dans les noms

Sub Puissance()
  Dim dblNombre As Double
  Dim dblPuissance As Double
  Dim dblResultat As Double
  Dim strChaine As String
  
  dblNombre = InputBox("Entrer le nombre")
  dblPuissance = InputBox("Entrer la puissance")
  dblResultat = dblNombre ^ dblPuissance
  strChaine = dblNombre & " ˆ " & dblPuissance & " = "
  MsgBox strChaine & Format(dblResultat, "### ### ###.00")

End Sub

Ce code fonctionne chez moi.
J'ai enlevé la clause On Error, car elle te fait sortir de la macro.

qui ne marche absolument pas chez-moi.
peux tu préciser?
Quelle erreur as tu?
Messages postés
14854
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 octobre 2020
589
PS pour utiliser correctement les balises de code https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Messages postés
167
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
12 octobre 2020
6
Les accents ne viennent pas de moi mais du corrigé du bouquin qui dit que VBA gère les accents sans soucis.
Jusqu'ici je n'ai jamais été embêté par les accents.

Si je saisis 7.4 j'obtiens une erreur 13 : incompatibilité de type.
Si je saisis 7,4 j'obtiens une erreur 6 : dépassement de capacité.

Merci pour les balises mais j'avais essayé ce qui est décrit dans l'article sauf que je n'ai pas trouvé les balises pour du VBA j'ai donc laissé tomber.

Le code ne fonctionne pas chez-moi.
Messages postés
29735
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 octobre 2020
2 839 >
Messages postés
167
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
12 octobre 2020

Pour le langage, le VBA signifiant Visual Basic for Application ... il est facile de deviner que le langage à utiliser est le BASIC.

Quoi qu'il en soit, le code fonctionne parfaitement.
Le souci ne vient donc pas du code.

As tu essayé de désinstaller/réinstaller ton office ?
Quelle version utilises tu ?
Sous quel OS es tu ?
Messages postés
14854
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 octobre 2020
589
Oui VBA gère les accents, en français, si tu envoies ton fichiers à un ordinateur en anglais ça peut poser des problèmes.

Pour les balises, VBA est un dérivé de basic, donc basic.


A quelle ligne apparait le dépassement de capacité?
7,4 est il le nombre à élever en puissance ou la valeur de la puissance?
Quelle est l'autre valeur?
Messages postés
167
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
12 octobre 2020
6
Je n'avais pas penser à ça, pas faux.

Merci pour le rappel.

A cette ligne :
dblNombre = InputBox("Entrer le nombre")


7,4 est le nombre à élever en puissance.
L'autre valeur est 8.

J'ai joint un capture d'écran de la valeur contenue dans la variable dblNombre comme on peut s'apercevoir c'est bien 7,4 et pourtant l'erreur est là.

Messages postés
14854
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 octobre 2020
589
T'es sous Mac?
Messages postés
167
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
12 octobre 2020
6
Exacte, tu penses que cela joue ?