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...
j'espère quand même que tu as apprécié l'optimisation de tes 2 codes VBA :

code VBA n° 1 :

VB:
Option Explicit

Sub premSem()
  Dim dateDebut As Date, dateFin As Date
  Dim noAnnee%, noJourPremierAn%, d As Date
 
  noAnnee = Val(InputBox("N° de l’année ?"))
  If noAnnee < 1900 Or noAnnee > 2050 Then Exit Sub
 
  noJourPremierAn = Val(InputBox("N° jour du 1er janvier ?"))
  If noJourPremierAn = 0 Or noJourPremierAn > 7 Then Exit Sub
 
  dateDebut = "1/1/" & noAnnee 'avant, oubli 2ème slash « / »
  d = dateDebut + 8 - noJourPremierAn
 
  If noJourPremierAn > 4 Then
    dateDebut = d: dateFin = dateDebut + 7
  Else
    dateFin = d
  End If
 
  MsgBox "Date de début : " & dateDebut & vbNewLine _
    & "Date de fin : " & dateFin

End Sub
code VBA n° 2 :
VB:
Option Explicit

Sub afficherSemaines()
  Dim dateDebut As Date, dateFin As Date
  Dim noAnnee%, noJourPremierAn%, d As Date
  Dim numSemaine%
 
  noAnnee = Val(InputBox("N° de l’année ?"))
  If noAnnee < 1900 Or noAnnee > 2050 Then Exit Sub
 
  noJourPremierAn = Val(InputBox("N° jour du 1er janvier ?"))
  If noJourPremierAn = 0 Or noJourPremierAn > 7 Then Exit Sub
 
  numSemaine = 1
 
  dateDebut = "1/1/" & noAnnee 'avant, oubli 2ème slash « / »
  d = dateDebut + 8 - noJourPremierAn
 
  If noJourPremierAn > 4 Then
    dateDebut = d: dateFin = dateDebut + 7
  Else
    dateFin = d
  End If
 
  Do
    Debug.Print numSemaine & " - " & dateDebut
    dateDebut = dateFin + (numSemaine - 1) * 7
    numSemaine = numSemaine + 1
  Loop Until Year(dateDebut) > noAnnee

End Sub
soan
 
@Mathilde22

tu as écrit : « j'ai toujours la même erreur avec le fichier joint 🙁 »

donc c'est toujours l'erreur « 6 » : Dépassement de capacité

sur lequel des 2 codes VBA ? sur le 1er du Module1 ? sur le 2ème du Module2 ?
sur les 2 à la fois ? et sur quelle ligne de code VBA ça bloque ? si l'erreur 6
survient pour chaque code, indique pour chaque la ligne VBA en cause.

c'est toujours avec les mêmes nombres saisis 2010 et 4 ?


soan
 
@soan

Oui c'est toujours l'erreur « 6 » : Dépassement de capacité

Sur les 2 modules ca bloque sur la ligne rouge suivante :

Do
Debug.Print numSemaine & " - " & dateDebut
dateDebut = dateFin + (numSemaine - 1) * 7
numSemaine = numSemaine + 1
Loop Until Year(dateDebut) > noAnnee
C'est toujours avec les mêmes nombres saisis 2010 et 4

Mathilde
 
@Mathilde22

tu as écrit : « Sur les 2 modules ça bloque sur la ligne rouge suivante : ... »

bizarre ! vraiment très, très, bizarre ! surtout que la boucle
Do .. Loop
n'est que dans la sub de Module2, pas dans la sub de Module1 ! 😛

donc je vais chercher une solution seulement
pour la sub afficherSemaines() de Module2 !


soan
 
Re

=>soan
Pour infos: on peut ne pas utiliser les deux / 🙂
VB:
Sub Pour_Infos()
Dim dateDebut As Date
noAnnee = InputBox("N° de l’année ?", "test", Year(Date))
dateDebut = "1-" & noAnnee
MsgBox Format(dateDebut, "dddd dd mmmm yyyy")
End Sub

=>Mathilde22
[Pour infos]
C'est tout le contraire. Rien de complexe.
C'est juste la transcription en VBA de :
Clic-droit--> Série -> Jours ouvrés
Mais bon, comme ce n'est pas le cadre de ton exercice.

PS: J'ai testé les deux code de soan.
Pas de message d'erreur chez moi (mais suis sur PC)
 
@Staple1600

tu as écrit : « Pour infos: on peut ne pas utiliser les deux / 🙂 »

ah ? pourquoi ? si on n'utilise pas le deuxième slash,
on a :
"1/12010" au lieu de : "1/1/2010"

j'sais pas c'que t'en penses, mais perso, j'trouve que l'année 12010,
ça fait bien loin ! 😛 j'sais pas si j's'rai encore là pour voir la venue
du Messie... bon, alors au cas où j'trouve un philtre magique de grande longévité...


soan
 
@Mathilde22

sur mon PC, je n'ai pas d'erreur ; après avoir saisi 2010 et 4,
j'ai ceci dans la fenêtre d'exécution :


Image.jpg

j'ai fait un petit montage, car en fait, c'est bien en une seule colonne. 😉

est-ce bien ces résultats-là que tu voudrais obtenir ? et de 1 à 53
semaines ? où tu préférerais que ça s'arrête à 52 semaines ?


soan
 
@Staple1600,

dans ton code, il y a : dateDebut = "1-" & noAnnee

mais dans mon code VBA : dateDebut = "1/1/" & noAnnee

avec 2 slahs, pas avec un tiret ! 😉

donc si l'utilisateur a saisi l'année 2010, ça fait bien : 1/1/2010
et pas 1/12010 ! aurais-tu zappé mon post #69 ?

(là, j'ai pas l'temps d'tester ton code VBA car j'suis débordé !)


soan
 
- 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