XL pour MAC Déboggage VBA Mac

Mathilde22

XLDnaute Nouveau
Bonjour,

Je bloque lors de l'exécution de la macro 1 dans le fichier joint
J'ai le message d'erreur suivant : Erreur d'exécution "6" : dépassement de capacité

Merci d'avance
 

Pièces jointes

  • ProgVBA.xlsm
    19.6 KB · Affichages: 27
Solution
Dim codeModule$ : idem que Dim codeModule As String

il ne peut pas y avoir d'erreur pour ça : M11 est bien du texte :
c'est une chaîne de 3 caractères.

--------------------------------------------------------------------


Dim nbhPrev%, nbhReal% : idem que :
Dim nbhPrev As Integer, nbhReal As Integer

15 et 4 sont des nombres entiers qui tiennent sans aucun
problème dans une variable du type entier
Integer ; pas
d'erreur possible de c'côté-là non plus.

--------------------------------------------------------------------

ah, j'crois bien qu'j'ai trouvé ; essaye avec :


nbhPrev = Val(InputBox("Nombre d'heures...

soan

XLDnaute Barbatruc
Inactif
Bonjour @Mathilde22,

as-tu essayé le fichier de mon post #29 ?

pour ta demande, le code VBA est celui-ci :

VB:
Sub CalculerNoteArrondie()
  Dim msg$, chn$, note!, noteEntiere%, ecart!, noteArrondie!, k!

  'Saisie de la note initiale
  Do
    msg = "Saisir une note comprise entre 0 et 20." & vbLf & vbLf _
      & "Cette note peut être un nombre fractionnaire ;" & vbLf _
      & "pour la virgule, vous pouvez saisir « , » ou « . »" & vbLf
    chn = InputBox(msg): note = Val(Replace$(chn, ",", "."))
  Loop Until note >= 0 And note <= 20

  'Récupération de la partie entière de la note
  noteEntiere = Int(note)

  'Détermination de la note arrondie
  ecart = note - noteEntiere
  If ecart <> 0 Then If ecart > 0.5 Then k = 1 Else k = 0.5
  noteArrondie = noteEntiere + k
  chn = IIf(noteArrondie = note, "reste", "devient")
  MsgBox "La note était " & note & " ; elle " _
    & chn & " " & noteArrondie
End Sub
note que la boîte de dialogue est plus complète et plus explicite ;
note aussi l'utilisation de la variable k.

j'ai aussi fait des modifs au-dessus :

Code:
Option Explicit

Sub CalculerPourcentage()
  Dim codeModule$, nbhPrev%, nbhReal%, pourcentageRealise!
  codeModule = InputBox("Module ?")
  nbhPrev = InputBox("Nombre d'heures prévues")
  nbhReal = InputBox("Nombre d'heures réalisées")
  pourcentageRealise = Round(nbhReal / nbhPrev * 100, 2)
  MsgBox "Pour le module " & codeModule _
    & " le pourcentage de réalisation est de " _
    & pourcentageRealise & " %"
End Sub

Sub PermutMoyenne()
  Dim moyM11!, moyM12!, a!
  moyM11 = 8.5: moyM12 = 12.9
  a = moyM11
  moyM11 = moyM12: moyM12 = a
End Sub
(je pense que ça devrait marcher sur Mac aussi. ;))

soan
 

Mathilde22

XLDnaute Nouveau
J'ai saisi ce programme :

Option Explicit

Sub CalculerPourcentage()
Dim codeModule$, nbhPrev%, nbhReal%, pourcentageRealise!
codeModule = InputBox("Module ?")
nbhPrev = InputBox("Nombre d'heures prévues")
nbhReal = InputBox("Nombre d'heures réalisées")
pourcentageRealise = Round(nbhReal / nbhPrev * 100, 2)
MsgBox "Pour le module " & codeModule _
& " le pourcentage de réalisation est de " _
& pourcentageRealise & " %"
End Sub

L'erreur concerne la ligne pourcentageRealise

Mathilde
 

soan

XLDnaute Barbatruc
Inactif
@Mathilde22

ok, mais quelle note as-tu saisie ?

-------------------------------------------------------------------------

à tout hasard, essaye avec :


Dim codeModule$, nbhPrev%, nbhReal%, pourcentageRealise#

j'ai changé que le dernier caractère : « # » au lieu de « ! »

c'est comme :
Dim pourcentageRealise As Double (en double précision)

au lieu de :
Dim pourcentageRealise As Single (en simple précision)

soan
 
Dernière édition:

soan

XLDnaute Barbatruc
Inactif
Dim codeModule$ : idem que Dim codeModule As String

il ne peut pas y avoir d'erreur pour ça : M11 est bien du texte :
c'est une chaîne de 3 caractères.

--------------------------------------------------------------------


Dim nbhPrev%, nbhReal% : idem que :
Dim nbhPrev As Integer, nbhReal As Integer

15 et 4 sont des nombres entiers qui tiennent sans aucun
problème dans une variable du type entier
Integer ; pas
d'erreur possible de c'côté-là non plus.

--------------------------------------------------------------------

ah, j'crois bien qu'j'ai trouvé ; essaye avec :


nbhPrev = Val(InputBox("Nombre d'heures prévues"))

et :

nbhReal = Val(InputBox("Nombre d'heures réalisées"))

pour chaque ligne, n'oublie pas la parenthèse finale !

mais c'qui est bizarre, c'est qu'ça aurait plutôt dû être
une erreur de division par 0, pas un dépassement de
capacité (l'erreur 6).


soan
 

soan

XLDnaute Barbatruc
Inactif
Lis d'abord mon post précédent.

pour le calcul lui-même, ça aurait dû faire :


pourcentageRealise = Round(nbhReal / nbhPrev * 100, 2)
= Round(4 / 15 * 100, 2)
= Round(0.2666666666667 * 100, 2)
= Round(26.66666666667, 2)
=26.67

pour la virgule, j'ai mis un point façon VBA anglais ;
c'est donc le nombre : 26,67 (à la française ;))


Round(..., 2) fait un arrondi à 2 chiffres après la virgule ;
vérifie si c'est pareil avec ta version Mac d'Excel.

dans le calcul ci-dessus, je ne vois pas ce qui pourrait causer
une erreur « 6 » : Dépassement de capacité.


soan
 
Dernière édition:

Discussions similaires

Réponses
3
Affichages
409
Réponses
2
Affichages
166