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

soan

XLDnaute Barbatruc
Inactif
c'est marrant, ton « plussoie » m'a fait penser à :
«
- Anne, ma sœur Anne, ne vois-tu rien venir ?
- Je ne vois rien que le soleil qui poudroie, et l’herbe qui verdoie.

»

en attente de la réponse de @Mathilde22 !


soan
 
Dernière édition:

soan

XLDnaute Barbatruc
Inactif
@Staple1600

non, y'a pas de dates ! et c'est un exo sans dates que j'ai résolu avec Val() :
relis les posts #40 et #42 ; c'est à partir du post #44 de Mathilde que c'est
devenu un exo avec dates ; et j'ai demandé un complément d'infos.


soan
 

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

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:

soan

XLDnaute Barbatruc
Inactif
Bonsoir @Mathilde22, Staple,

je propose le fichier joint. j'ai modifié tes 2 subs ;
regarde et teste d'abord la 1ère sub (dans Module1) ;
puis idem avec la 2ème sub (dans Module2).

à te lire pour avoir ton avis.


soan
 

Pièces jointes

  • Exo Mathilde22.xlsm
    15 KB · Affichages: 2

Discussions similaires

Réponses
3
Affichages
411
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…