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 ! :p

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 ! :p 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 :


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
 

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
374
Réponses
2
Affichages
135

Statistiques des forums

Discussions
312 223
Messages
2 086 403
Membres
103 201
dernier inscrit
centrale vet