Dépassement de capacité (Erreur 6)

everes Messages postés 169 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
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

Utilisateur anonyme
 
Bonsoir

Tu as défini comme long, donc un entier.
Tu ne peux pas y mettre un décimal.
1
everes Messages postés 169 Date d'inscription   Statut Membre Dernière intervention   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 ?
0
Utilisateur anonyme
 
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
1
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
0
Utilisateur anonyme > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
Ha oui, la virgule!
0
everes Messages postés 169 Date d'inscription   Statut Membre Dernière intervention   7 > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
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.
0
everes Messages postés 169 Date d'inscription   Statut Membre Dernière intervention   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.
0
Utilisateur anonyme
 
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
1
everes Messages postés 169 Date d'inscription   Statut Membre Dernière intervention   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.
0
Utilisateur anonyme
 
Je sais pas, mais j'ai testé sous windows et je pense que Jordane aussi.

1
Utilisateur anonyme
 
Par contre, je suis sûr que les accents ne sont pas géré pareil sous mac et sous windows
0
everes Messages postés 169 Date d'inscription   Statut Membre Dernière intervention   7 > Utilisateur anonyme
 
J'ai enlevé tous les accents juste pour voir mais rien n'a changé.
Bon ben plus qu'à apprendre le VBA sur Windows.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > everes Messages postés 169 Date d'inscription   Statut Membre Dernière intervention  
 
peux-tu donner suite, ou marquer comme résolu?
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Je confirme.
Mac... C'est le mal.. :-)
0
Utilisateur anonyme > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
Jaloux ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
 
Peux tu poster ton code modifié?
0
everes Messages postés 169 Date d'inscription   Statut Membre Dernière intervention   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.
0
Utilisateur anonyme
 
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?
0
Utilisateur anonyme
 
PS pour utiliser correctement les balises de code https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
everes Messages postés 169 Date d'inscription   Statut Membre Dernière intervention   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.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > everes Messages postés 169 Date d'inscription   Statut Membre Dernière intervention  
 
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 ?
0
Utilisateur anonyme
 
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?
0
everes Messages postés 169 Date d'inscription   Statut Membre Dernière intervention   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à.

0
Utilisateur anonyme
 
T'es sous Mac?
0
everes Messages postés 169 Date d'inscription   Statut Membre Dernière intervention   7
 
Exacte, tu penses que cela joue ?
0