Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

soan

XLDnaute Barbatruc
Inactif
@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
 

Mathilde22

XLDnaute Nouveau
@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
 

soan

XLDnaute Barbatruc
Inactif
@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
 

Staple1600

XLDnaute Barbatruc
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)
 

soan

XLDnaute Barbatruc
Inactif
@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
 

soan

XLDnaute Barbatruc
Inactif
@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 :



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
 

soan

XLDnaute Barbatruc
Inactif
@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
 

Discussions similaires

Réponses
3
Affichages
409
Réponses
2
Affichages
168
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…