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...
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
 
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 😉
 
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
 
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: 13
  • Capture d’écran 2020-11-08 à 11.30.41.png
    Capture d’écran 2020-11-08 à 11.30.41.png
    769.1 KB · Affichages: 11
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é.
 
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
 
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:
- 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