Problème code VBA

Bonjour à toute et à tous,

J'ai un code vba que j'essaye d'exécuter dans une de mes feuilles excel mais je n'arrive pas j'ai un message d'erreur "Erreur incompatibilité de type". Ce code est censé calculer le délais d'intervention d'une personne en fonction de l'heure d'appel (en colonne A) et de l'heure d'arriver (en colonne B) tout en prenant en compte que cette personne ne peut pas intervenir entre 22h et 6h, il faut donc aussi que ce code prenne en compte les jours de décalage.

Ci-dessous ce que j'ai fait:

Sub CalculerDelaiIntervention()

' Déclaration des variables
Dim heureAppel As Date
Dim heureArrivee As Date
Dim delaiIntervention As Long
Dim heureDebutInterdite As Date
Dim heureFinInterdite As Date
Dim jourAppel As Date
Dim jourArrivee As Date

' Récupération de l'heure d'appel
heureAppel = ActiveWorkbook.Sheets(1).Range("A1").Value

' Récupération de l'heure d'arrivée
heureArrivee = ActiveWorkbook.Sheets(1).Range("B1").Value

' Récupération du jour d'appel et du jour d'arrivée
jourAppel = DateValue(heureAppel)
jourArrivee = DateValue(heureArrivee)

' Calcul du délai d'intervention en minutes
If jourAppel = jourArrivee Then
' Si l'heure d'arrivée est le même jour que l'heure d'appel, on calcule le délai d'intervention en utilisant la formule
delaiIntervention = DateDiff("n", heureAppel, heureArrivee)
Else
' Si l'heure d'arrivée est un jour différent de l'heure d'appel, on ajoute 24 heures pour prendre en compte le jour de décalage
delaiIntervention = DateDiff("n", heureAppel, DateAdd("d", 1, heureArrivee))
End If

' Vérification si l'intervention a lieu pendant la plage horaire où on ne peut pas travailler
heureDebutInterdite = TimeValue("22:00:00")
heureFinInterdite = TimeValue("06:00:00")
If (heureArrivee >= heureDebutInterdite And heureArrivee <= TimeValue("23:59:59")) _
Or (heureArrivee >= TimeValue("00:00:00") And heureArrivee <= heureFinInterdite) Then
' Si l'intervention a lieu pendant la plage horaire où on ne peut pas travailler, on ajoute le temps correspondant au délai d'intervention
delaiIntervention = delaiIntervention + DateDiff("n", heureArrivee, DateAdd("h", 6, jourArrivee))
End If

' Affichage du délai d'intervention en minutes
MsgBox "Le délai d'intervention est de " & delaiIntervention & " minutes."

End Sub

Merci à ceux qui peuvent m'aider .

Cdt

Edit modo : lorsque vous postez un code merci de veiller à utiliser les balises de code disponibles dans le menu en cliquant sur l'icone </>

Rebonjour j'ai réussi à régler le problème ci-dessus mais j'aimerais maintenant que mon code affiche la valeur trouvé dans une cellule du classeur excel et qu'il fasse le calcul pour toute mes cellules car dans le code ci-dessous c'est à moi de renseigner la valeur de la cellule à chaque fois..

Merci à vous.

Ci-dessus le code corriger

</>

Sub CalculerDelaiIntervention()

' Déclaration des variables
Dim heureAppel As Date
Dim heureArrivee As Date
Dim delaiIntervention As Long
Dim heureDebutInterdite As Date
Dim heureFinInterdite As Date
Dim jourAppel As Date
Dim jourArrivee As Date

' Récupération de l'heure d'appel
heureAppel = ActiveWorkbook.Sheets(1).Range("A2").Value

' Récupération de l'heure d'arrivée
heureArrivee = ActiveWorkbook.Sheets(1).Range("B2").Value

' Récupération du jour d'appel et du jour d'arrivée
jourAppel = DateValue(heureAppel)
jourArrivee = DateValue(heureArrivee)

' Calcul du délai d'intervention en minutes
If jourAppel = jourArrivee Then
' Si l'heure d'arrivée est le même jour que l'heure d'appel, on calcule le délai d'intervention en utilisant la formule
delaiIntervention = DateDiff("n", heureAppel, heureArrivee)
Else
' Si l'heure d'arrivée est un jour différent de l'heure d'appel, on ajoute 24 heures pour prendre en compte le jour de décalage
delaiIntervention = DateDiff("n", heureAppel, DateAdd("d", 1, heureArrivee))
End If

' Vérification si l'intervention a lieu pendant la plage horaire où on ne peut pas travailler
heureDebutInterdite = TimeValue("22:00:00")
heureFinInterdite = TimeValue("06:00:00")
If (heureArrivee >= heureDebutInterdite And heureArrivee <= TimeValue("23:59:59")) _
Or (heureArrivee >= TimeValue("00:00:00") And heureArrivee <= heureFinInterdite) Then
' Si l'intervention a lieu pendant la plage horaire où on ne peut pas travailler, on ajoute le temps correspondant au délai d'intervention
delaiIntervention = delaiIntervention + DateDiff("n", heureArrivee, DateAdd("h", 6, jourArrivee))
End If

' Affichage du délai d'intervention en minutes
MsgBox "Le délai d'intervention est de " & delaiIntervention & " minutes."

End Sub

Bonjour YSS,

Vous êtes sérieux quand vous postez ce genre de chose

Ce que l'on vous demande sur ce forum est de placer le code dans la fenêtre qui s'affiche quand vous cliquez sur

image

C'est pour cette raison que l'on vous parle de </>

Bonjour,

D'accord je n'avais pas compris. Merci et désolé.

Sub CalculerDelaiIntervention()

    ' Déclaration des variables
    Dim heureAppel As Date
    Dim heureArrivee As Date
    Dim delaiIntervention As Long '"Long" est un type de données numériques. Il est comme integer mais pour un très grand nombre de donnée
    Dim heureDebutInterdite As Date
    Dim heureFinInterdite As Date
    Dim jourAppel As Date
    Dim jourArrivee As Date
    Dim resultat As Range

    ' Récupération de l'heure d'appel
    heureAppel = ActiveWorkbook.Sheets(1).Range("A6").Value

    ' Récupération de l'heure d'arrivée
    heureArrivee = ActiveWorkbook.Sheets(1).Range("B6").Value

    ' Récupération du jour d'appel et du jour d'arrivée
    jourAppel = DateValue(heureAppel)
    jourArrivee = DateValue(heureArrivee)

    ' Calcul du délai d'intervention en minutes
    If jourAppel = jourArrivee Then
        ' Si l'heure d'arrivée est le même jour que l'heure d'appel, on calcule le délai d'intervention en utilisant la formule
        delaiIntervention = DateDiff("n", heureAppel, heureArrivee)
    Else
        ' Si l'heure d'arrivée est un jour différent de l'heure d'appel, on ajoute 24 heures pour prendre en compte le jour de décalage
        delaiIntervention = DateDiff("n", heureAppel, DateAdd("d", 1, heureArrivee))
    End If

    ' Vérification si l'intervention a lieu pendant la plage horaire où on ne peut pas travailler
    heureDebutInterdite = TimeValue("22:00:00")
    heureFinInterdite = TimeValue("06:00:00")
    If (heureArrivee >= heureDebutInterdite And heureArrivee <= TimeValue("23:59:59")) _
        Or (heureArrivee >= TimeValue("00:00:00") And heureArrivee <= heureFinInterdite) Then
        ' Si l'intervention a lieu pendant la plage horaire où on ne peut pas travailler, on ajoute le temps correspondant au délai d'intervention
        delaiIntervention = delaiIntervention + DateDiff("n", heureArrivee, DateAdd("h", 6, jourArrivee))
    End If

    ' Affichage du délai d'intervention en minutes dans la colonne E
    Set resultat = ActiveWorkbook.Sheets(1).Range("E6")
    resultat.Value = delaiIntervention

End Sub
Rechercher des sujets similaires à "probleme code vba"