Erreur 9 lors d'une exécution normale mais aucun problème avec pas à pas détaillé

WUTED

XLDnaute Occasionnel
Bonjour le forum,

Je me retrouve face à un problème que j'ai du mal à résoudre. Je m'explique, dans le cadre de mon stage, je dois réaliser un planning sous excel et je dois maintenant assigner des horaires à chaque tâche.
Le problème est que quand je lance ma macro aprés avoir chargé mon planning, j'ai une erreur 9, je ne voyais pas vraiment pourquoi sachant que je reproduis la même chose en chaine et que ça bug à un endroit à première vu anodin mais en plus, ma macro marche sans problème en mode "pas à pas détaillé" et quand je la relance suite au premiere échec.
Du coup je reste un peu indécis, je ne comprends pas vraiment pourquoi cela ne fonctionne pas, sûrement une erreur de débutant que j'ai du faire quelquepart.
Je vous joins mon fichier avec la macro simulation_chargement() et test_horaires() dans la module test : simulation_chargement() permet de mettre ma feuille 1 dans la même état que si je venais de charger mes donnés via mon fichier externe et test_horaires qui assigne les horaires à chaque tâche.
Merci d'avance pour vous être penché sur mon problème.

Bonne journée,
WUTED
 

Pièces jointes

  • XLD_WUTED.xlsm
    103.6 KB · Affichages: 39

job75

XLDnaute Barbatruc
Re : Erreur 9 lors d'une exécution normale mais aucun problème avec pas à pas détaill

Bonjour WUTED,

Votre fonction sommeHeures beugue forcément si l'un des items temp(0) temp2(0) temp(1) temp2(1) n'existe pas.

Le plus simple paraît donc de mettre On Error Resume Next au début du code de cette fonction.

J'ai testé sans bug, mais n'ai pas vérifié les résultats...

A+
 

WUTED

XLDnaute Occasionnel
Re : Erreur 9 lors d'une exécution normale mais aucun problème avec pas à pas détaill

Bonjour job75,

Merci pour votre réponse,

J'avais vu avec le debug que c'était l'une de ses valeurs qui étaient nulle, apparemment, au moment où j'arrive sur la tâche qui me pose problème, H DEBUT est vide dans mon planning au moment de l'appel de ma fonction sommeHeures alors que la ligne de code précédente me permet directement de remplir cette cellule.

J'ai essayé avec On Error Resume Next, comme vous me l'avez suggéré, l'exécution ne pose donc plus de problème mais ma fonction n'assigne plus d'horaires pour toutes les tâches ayant la même machine que ma tâche buguée, le même jour qu'elle.

Je comprends vraiment pas pourquoi cette ligne en particulier pose problème.

Y'a sûrement moyen que je bricole pour faire boucler ma fonction tant que toutes les valeurs ne sont pas remplies, mais j'aimerai vraiment faire une application "propre".

WUTED
 

job75

XLDnaute Barbatruc
Re : Erreur 9 lors d'une exécution normale mais aucun problème avec pas à pas détaill

Re,

Bon, voyez peut-être avec ces 2 fonctions modifiées :

Code:
Function sommeHeures(h1 As String, h2 As String) As String
    Dim temp() As String, temp2() As String
    Dim sommeH As Integer, sommeM As Integer
    temp = Split(h1 & "h", "h")
    temp2 = Split(h2 & "h", "h")
    sommeH = Val(temp(0)) + Val(temp2(0))
    If Val(temp(1)) + Val(temp2(1)) >= 60 Then
        sommeM = (Val(temp(1)) + Val(temp2(1))) Mod 60
        sommeH = sommeH + 1
    Else
        sommeM = Val(temp(1)) + Val(temp2(1))
    End If
    If sommeM = 0 Then
        sommeHeures = sommeH & "h00"
    Else
        sommeHeures = sommeH & "h" & sommeM
    End If
End Function

Function comparerHeures(h1 As String, h2 As String) As Boolean
    Dim temp() As String, temp2() As String
    temp = Split(h1 & "h", "h")
    temp2 = Split(h2 & "h", "h")
    If Val(temp(0)) < Val(temp2(0)) Then
        comparerHeures = True
    ElseIf Val(temp(0)) = Val(temp2(0)) Then
        If Val(temp(1)) <= Val(temp2(1)) Then
            comparerHeures = True
        Else
            comparerHeures = False
        End If
    Else
        comparerHeures = False
    End If
End Function
Je n'ai toujours pas vérifié les résultats...

A+
 

WUTED

XLDnaute Occasionnel
Re : Erreur 9 lors d'une exécution normale mais aucun problème avec pas à pas détaill

Re,

Je viens de tester, il n'y a plus d'erreurs mais ça n'assigne pas d'horaires à la ligne en question, je constate que y'a vraiment un soucis avec cette ligne, j'vais regarder, le problème, c'est que comme dit précédemment, j'peux rien faire en mode "pas à pas détaillé" car la seule fois où j'ai eu la patience d'arriver jusqu'à la ligne buguée, tout s'est déroulé sans problème.

Juste pour info, il n'y a plus d'erreurs car vous avez utilisé la fonction Val, j'en déduis qu'elle renvoie 0 en cas de chaîne vide?

Quoiqu'il en soit, encore merci pour ce temps accordé à mon soucis.
WUTED
 

Pierrot93

XLDnaute Barbatruc
Re : Erreur 9 lors d'une exécution normale mais aucun problème avec pas à pas détaill

Bonjour Wuteb, Job:)

pas tout suivi, mais s'il s'agit d'horaire, peux être convertir avec la fonction CDate... A voir, non testé...

bon après midi
@+
 

WUTED

XLDnaute Occasionnel
Re : Erreur 9 lors d'une exécution normale mais aucun problème avec pas à pas détaill

Bonjour Pierrot,

Pour l'instant j'ai fait quelques fonctions qui me permettent de gérer tous mes horaires sous forme de String. Cependant si CDate peut simplifier le code... j'débute un peu en VBA donc j'ai été chercher un petit peu le fonctionnement de CDate et que ce soit sur des sites ou sur l'aide Excel, cette fonction a l'air très approprié pour les dates mais je trouve rien sur les heures. Pourrais-tu poste une ou deux lignes de code permettant d'illustrer ça?

Merci d'avance,
WUTED
 

WUTED

XLDnaute Occasionnel
Re : Erreur 9 lors d'une exécution normale mais aucun problème avec pas à pas détaill

Re,

C'est sympa comme fonction, je pense que je vais finir par simplifier mon code avec ça, juste une question, j'remarque que quand je passe au jour suivant en sommant deux heures :

VB:
Dim s As String, d As String
s = "1.25"
d = "23.20"
MsgBox CDate(s) + CDate(d)

J'ai la date "31/12/1899" qui s'affiche en plus, j'me doute que ça a un lien avec la date de référence "1/1/1900" mais j'comprends pas trop pour le coup.

WUTED
 

Discussions similaires

Statistiques des forums

Discussions
312 370
Messages
2 087 696
Membres
103 642
dernier inscrit
nolem