XL pour MAC Déboggage VBA Mac

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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...
Bonjour @Mathilde22, @eriiiic, @Staple1600,

Un essai avec une fonction personnalisée NoteArrondie(ByVal maNote As Single) utilisable en VBA et sur la feuille de calcul.

Notez: le InputBox renvoie un string. Mais VBA, à cause de la déclaration "maNote As Single", convertit le string retour du InputBox en single.

Pour être rigoureux, on ne laisse pas VBA convertir et on le fait explicitement. On peut donc écrire :
VB:
MsgBox NoteArrondie(Csng(Application.InputBox("Saisir une note entre 0 et 20, svp :")))

Le code VBA (version non rigoureuse 🙂) :
VB:
Sub CalculerNoteArrondie()
   MsgBox NoteArrondie(Application.InputBox("Saisir une note entre 0 et 20, svp :"))
End Sub

Function NoteArrondie(ByVal maNote As Single)
Dim ecart As Single
   ecart = maNote - Int(maNote)
   NoteArrondie = Int(maNote) + IIf(ecart <= 0.00001, 0, IIf(ecart <= 0.5, 0.5, 1))
End Function
 

Pièces jointes

Dernière édition:
Bonsoir

VB:
Sub CalculerNoteArrondie()
    Dim note As Single, ecart As Single, noteArrondie As Single
    Dim noteEntiere As Byte (Byte 2 Octet à la place de Single 4 Octet)

'Saisie de la note initiale
         note = InputBox("Saisir une note comprise entre 0 et 20") ' 0 à 20 (Byte suffit = 0 à 255)

'RŽcupŽration de la partie entire de la note
        noteEntiere = Int(note)

'DŽtermination de la note arrondie
        ecart = note - noteEntiere
        If ecart = 0 Then
            noteArrondie = note
        Else
            If ecart > 0.5 Then
                noteArrondie = noteEntiere + 1
            Else
                noteArrondie = noteEntiere + 0.5
            End If
        End If
        MsgBox "La note Žtait = ˆ " & note & " elle devient " & noteArrondie
End Sub
 
Dernière édition:
Bonsoir @laurent950 😃,

J'ai compris que c'est pour un exercice donc c'est possible d'optimiser pour la compréhension.
Tu as raison 👍. J'avais zappé le fait que c'était un "exo".

D'ailleurs le code fonctionne parfaitement dans son fichier original en Poste #1.
J'avais remarqué aussi. Mais je suis sur PC pas sur Mac donc je n'ai rien pu en déduire de vérifiable sous son OS.
 
Re, Bonsoir mapomme 😉, laurent950
Sans spécifier les dim as cela fonctionne mais la contrainte est de démarrer avec option explicit
Bah cela fonctionne avec Option Explicit, non ?
VB:
Option Explicit
Sub CalculerNoteArrondie()
Dim note, ecart, noteArrondie, noteEntiere
'Saisie de la note initiale
note = InputBox("Saisir une note comprise entre 0 et 20")
'Récupération de la partie entire de la note
noteEntiere = Int(note)
'DŽétermination de la note arrondie
        ecart = note - noteEntiere
        If ecart = 0 Then
            noteArrondie = note
        Else
            If ecart > 0.5 Then
                noteArrondie = noteEntiere + 1
            Else
                noteArrondie = noteEntiere + 0.5
            End If
        End If
        MsgBox "La note était = ˆ " & note & " elle devient " & noteArrondie
End Sub
 
@Staple1600,

Si tu regardes mon code, je n'ai pas comparé l'écart à 0 mais à 0.00001. Je me suis fait plusieurs fois piégé par des calculs sur des non-entiers devant donner un résultat nul et qui en fait donnaient un résultat certes très petit mais non nul.

D'ailleurs en toutes rigueur, on écrirait Abs(ecart)<0.00001
 
Dernière édition:
Bonjour @Mathilde22, le fil,

Je te retourne ton fichier modifié. 🙂

Fais d'abord ces 4 essais :

14,25 ➯ 14,5
14,75 ➯ 15

14 ➯ 14
14,5 ➯ 14,5

Fais encore d'autres essais.

Fais Alt F11 pour voir le code VBA, puis pour
revenir sur Excel.

Si besoin, tu peux demander une adaptation.
Merci de me donner ton avis. 😉


soan
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
188
Réponses
23
Affichages
399
Réponses
16
Affichages
401
Réponses
2
Affichages
148
Retour