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
Bonsoir Staple,

on s'est croisés ; mais en plus d'avoir précisé l'erreur, j'ai demandé des infos en plus :
est-ce bien avec une date qu'il y a un dépassement de capacité ? et quel calcul ?

d'autre part, Mathilde répondra peut-être qu'il s'agit en fait d'une autre erreur
(si oui, laquelle ? à préciser !) ; et peut-être que l'erreur ne se produit pas pour
un calcul mathématique mais pour autre chose (si oui, quoi ?).

si en plus Mathilde pouvait joindre une image du message d'erreur, ainsi que
l'extrait du code VBA avec la ligne en jaune où ça bloque, ça aiderait bien
pour la résolution du problème en cours ! (n'est-ce pas, @Mathilde22 ?)


soan
 

Staple1600

XLDnaute Barbatruc
Re

=>soan
C'est juste que j'aicru un instant être transparent
Dans les temps anciens d'XLD, on aurait plus lire
"Je plussoie aux propos de Staple
Poste le code VBA et/ou nomme la procédure qui te pose problème"

C'est que j'appelle de la "synergie à l'ancienne"
Et dès lors le message#47 ne serait pas sorti de mon clavier ;)
 

Staple1600

XLDnaute Barbatruc
Re

En attendant Godot
VB:
Const Chronos = "1-"
Sub exoDates()
Dim vDate
vDate = Chronos & Month(Date) & "-" & Year(Date)
MsgBox Format(CDate(vDate), "ddd dd mmmm yyyy"), 64, "test 1"
Dim vvDate
vvDate = Chronos & Application.RandBetween(2, 12)
MsgBox Format(CDate(vvDate), "dddd d mmmm yyyy"), 64, "test 2"
Dim vvvDate
vvvDate = DateValue(Chronos & "janvier 2031")
a = Year(vvvDate)
MsgBox DateSerial(a, Application.RandBetween(1, 12), 1), 64, "test 3"
Dim ma_Date As Date
ma_Date = Date
MsgBox "ma_Date: est une date ? : " & IsDate(ma_Date) & Chr(13) & Format(ma_Date, "yyyy mmmm dd dddd")
End Sub
 

Mathilde22

XLDnaute Nouveau
Bonjour @soan, bonjour @Staple1600,

Je tiens à préciser que j'ai pu tester mon code sur un pc windows et qu'il fonctionne.
C'est lorsque je travaille sur Mac que je rencontre ce problème.

Ce programme fonctionne très bien :
VB:
Sub premSem()
     Dim numSemaine As Integer, noAnnee As Integer
     Dim noJourPremierAn As Integer
     Dim dateDebut As Date, datefin As Date
    
noAnnee = Val(InputBox(" N° de l’année ? "))
noJourPremierAn = Val(InputBox("N° jour du 1er janvier ?"))
numSemaine = 1

dateDebut = "1 / 1 " & noAnnee

If noJourPremierAn = 1 Or noJourPremierAn = 2 Or noJourPremierAn = 3 Or noJourPremierAn = 4 Then
    dateDebut = dateDebut
Else
    dateDebut = dateDebut + 8 - noJourPremierAn
End If

If noJourPremierAn = 1 Or noJourPremierAn = 2 Or noJourPremierAn = 3 Or noJourPremierAn = 4 Then
    datefin = dateDebut + 8 - noJourPremierAn
Else
    datefin = dateDebut + 7
End If

MsgBox "Date de début : " & dateDebut & vbNewLine & "Date de fin : " & datefin

End Sub

Celui ne fonctionne pas :

Code:
Sub afficherSemaines()
     Dim numSemaine As Integer, noAnnee As Integer
     Dim noJourPremierAn As Integer
     Dim dateDebut As Date, datefin As Date
    
noAnnee = Val(InputBox(" N° de l’année ? "))
noJourPremierAn = Val(InputBox("N° jour du 1er janvier ?"))
numSemaine = 1

dateDebut = "1 / 1 " & noAnnee

If noJourPremierAn = 1 Or noJourPremierAn = 2 Or noJourPremierAn = 3 Or noJourPremierAn = 4 Then
    dateDebut = dateDebut
Else
    dateDebut = dateDebut + 8 - noJourPremierAn
End If

If noJourPremierAn = 1 Or noJourPremierAn = 2 Or noJourPremierAn = 3 Or noJourPremierAn = 4 Then
    datefin = dateDebut + 8 - noJourPremierAn
Else
    datefin = dateDebut + 7
End If

Do
    Debug.Print numSemaine & " - " & dateDebut
    dateDebut = datefin + (numSemaine - 1) * 7
     numSemaine = numSemaine + 1
Loop Until Year(dateDebut) > noAnnee

End Sub

Les variables saisies sont 2010 pour l'année et 4 pour le jour.
L'erreur est la suivante (cf pj)

Mathilde
 

Pièces jointes

  • Capture d’écran 2020-11-08 à 11.30.25.png
    Capture d’écran 2020-11-08 à 11.30.25.png
    468.9 KB · Affichages: 10
  • Capture d’écran 2020-11-08 à 11.30.41.png
    Capture d’écran 2020-11-08 à 11.30.41.png
    769.1 KB · Affichages: 8

Staple1600

XLDnaute Barbatruc
Bonjour Mathile22, le fil

Je n'ai de message d'erreur sur PC
(Mais des résultats bizarres)
VB:
Sub afficherSemaines()
     Dim numSemaine As Integer, noAnnee As Integer
     Dim noJourPremierAn As Integer
     Dim dateDebut As Date, datefin As Date
noAnnee = Val(InputBox(" N° de l’année ? "))
noJourPremierAn = Val(InputBox("N° jour du 1er janvier ?"))
numSemaine = 1

dateDebut = "1-" & noAnnee

If noJourPremierAn = 1 Or noJourPremierAn = 2 Or noJourPremierAn = 3 Or noJourPremierAn = 4 Then
    dateDebut = dateDebut
Else
    dateDebut = dateDebut + 8 - noJourPremierAn
End If

If noJourPremierAn = 1 Or noJourPremierAn = 2 Or noJourPremierAn = 3 Or noJourPremierAn = 4 Then
    datefin = dateDebut + 8 - noJourPremierAn
Else
    datefin = dateDebut + 7
End If

Do
    'Debug.Print numSemaine & " - " & Format(dateDebut, "dddd dd mmm yyyy")
    Cells(numSemaine, 1) = numSemaine
    Cells(numSemaine, 2) = Format(dateDebut, "dddd dd mmm yyyy")
    dateDebut = datefin + (numSemaine - 1) * 7
    numSemaine = numSemaine + 1
Loop Until Year(dateDebut) > noAnnee
End Sub
PS:J'ai ajouté une visualisation sur une feuille pour plus de commodité.
 

Staple1600

XLDnaute Barbatruc
Re

Juste pour infos
Pour faire ce que tu sembles vouloir faire
(afficher tous les lundis d'une année donnée)
Personnellement, je ferai un truc de genre (si je devais le faire en VBA)
VB:
Sub AfficherSemaine()
noAnnee = InputBox("Année?", "Exo", Year(Date))
Cells(1, 2) = DateSerial(noAnnee, 1, 4) - Weekday(DateSerial(noAnnee, 1, 4), vbMonday) + 1
Fin = DateSerial(noAnnee, 12, 31)
Range("A1:A53") = "=ROW()"
Range("B1:B53").DataSeries Rowcol:=xlColumns, Type:=xlChronological, Date:=xlDay, Step:=7, Stop:=Fin
Range("B1:B53").NumberFormatLocal = "jjjj jj mmmm aaaa"
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

Juste pour infos (bis*)
Une version un peu plus "aboutie" de la macro précédente
VB:
Sub version_II()
Dim PremierLundi, DernierJour, x

noAnnee = InputBox("Choix de l'année?", "Calendrier", Year(Date))

PremierLundi = DateSerial(noAnnee, 1, 4) - Weekday(DateSerial(noAnnee, 1, 4), vbMonday) + 1
MsgBox _
        "Le premier lundi de la 1ère semaine est: " & Chr(13) & Format(PremierLundi, "dddd d mmmm yyyy"), _
        vbInformation, "Année:" & noAnnee

DernierJour = DateSerial(noAnnee, 12, 31)
x = Int(DernierJour - PremierLundi) / 7 + 1
With Cells(1, 2)
    .Value = PremierLundi
    .Offset(, -1) = 1
    .Resize(x).DataSeries Rowcol:=xlColumns, Type:=xlChronological, Date:=xlWeekday, Step:=5
    .Offset(, -1).Resize(x).DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, Step:=1
    .Resize(x).NumberFormatLocal = "jjjj mmmm aaaa"
End With
End Sub
PS: Je laisse les Macistes du forum essayer de reproduire ton message d'erreur.

*: Cela ne solutionne ton souci mais cela pourrait intéresser d'autres lecteurs de ton fil. ;)

EDITION: Bonsoir soan
 
Dernière édition:

Discussions similaires

Réponses
3
Affichages
374
Réponses
2
Affichages
135

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote