Dépassement de capacité (Erreur 6)

Signaler
Messages postés
170
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
22 avril 2021
-
Messages postés
15564
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 mai 2021
-
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
15921
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 mai 2021
701
Bonsoir

Tu as défini comme long, donc un entier.
Tu ne peux pas y mettre un décimal.
Messages postés
170
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
22 avril 2021
7
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
15921
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 mai 2021
701
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
32426
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 mai 2021
3 479
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
15921
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 mai 2021
701 >
Messages postés
32426
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 mai 2021

Ha oui, la virgule!
Messages postés
170
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
22 avril 2021
7 >
Messages postés
32426
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 mai 2021

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
170
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
22 avril 2021
7
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
15921
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 mai 2021
701
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
170
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
22 avril 2021
7
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
15921
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 mai 2021
701
Je sais pas, mais j'ai testé sous windows et je pense que Jordane aussi.

Messages postés
15921
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 mai 2021
701
Par contre, je suis sûr que les accents ne sont pas géré pareil sous mac et sous windows
Messages postés
170
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
22 avril 2021
7 >
Messages postés
15921
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 mai 2021

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
15564
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 mai 2021
850 >
Messages postés
170
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
22 avril 2021

peux-tu donner suite, ou marquer comme résolu?
Messages postés
32426
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 mai 2021
3 479
Je confirme.
Mac... C'est le mal.. :-)
Messages postés
15921
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 mai 2021
701 >
Messages postés
32426
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 mai 2021

Jaloux ;)
Messages postés
15921
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 mai 2021
701
Peux tu poster ton code modifié?
Messages postés
170
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
22 avril 2021
7
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
15921
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 mai 2021
701
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
15921
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 mai 2021
701
PS pour utiliser correctement les balises de code https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Messages postés
170
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
22 avril 2021
7
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
32426
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 mai 2021
3 479 >
Messages postés
170
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
22 avril 2021

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
15921
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 mai 2021
701
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
170
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
22 avril 2021
7
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
15921
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 mai 2021
701
T'es sous Mac?
Messages postés
170
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
22 avril 2021
7
Exacte, tu penses que cela joue ?