Incompatibilité de type

Résolu
Bonjour,

Petit problème de pose de variable (je pense) dont je ne trouve pas la solution,

Mon code :

Sub MTBF()

Dim l As Integer 'variable recherche d'intervention'
Dim m As Integer ' variable machines'
Dim n As Long 'variable incrémentante'
Dim Nbre As Integer 'Nombre de fois qu'on a une intervention


With Worksheets("Enregistrements interventions")
For m = 5 To 20
Machine = Worksheets("Global").Range("V" & m)
Nbre = Worksheets("Enregistrements interventions").Application.CountIf(.Range("C5:C300"), Machine)
For l = 5 To 500

    If Worksheets("Enregistrements interventions").Range("C" & l) = Machine And Worksheets("Enregistrements interventions").Range("C" & l + 1) = Machine Then
    n = Worksheets("Enregistrements interventions").Range("C" & l + 1) - Worksheets("Enregistrements interventions").Range("C" & l)
    ElseIf Worksheets("Enregistrements interventions").Range("C" & l) = Machine And Worksheets("Enregistrements interventions").Range("C" & l + 1) <> Machine Then
    
    End If
    Next
    Worksheets("Global").Range("W" & m) = n / (Nbre - 1)
    Next
    End With
    
    
    
    
End Sub


C'est ma variable n qui pose problème, cette variable reçoit la différence entre deux dates.

Si michel_m passe par là, tu remarqueras que j'utilises ton code, encore une fois merci.

Merci,
DGVDR

6 réponses

  1. Bonjour le père,

    Question loin d'être bête et tout à fait pertinante, c'était des cellules de la colonne F et non C à soustraire... (erreur bête par contre !)

    Merci à vous deux.

    On peut clore.
    1. Bonjour

      La question est peut-être bête, mais les cellules concernées contiennent-elles bien toutes les 2 des valeurs numériques ?
      1. G_33,

        Merci de nouveau pour cette réponse,

        non je n'ai pas d'espace.
        1. je ne vois pas trop

          mais essaie ça

          Dim madate As Date
          Dim madate_2 As Date

          debut de ton code

          If Worksheets("Enregistrements interventions").Range("C" & l) = Machine And Worksheets("Enregistrements interventions").Range("C" & l + 1) = Machine Then

          madate = CDate(Worksheets("Enregistrements interventions").Range("C" & l))
          madate_2 = CDate(Worksheets("Enregistrements interventions").Range("C" & l + 1))
          n = madate_2 - madate

          suite de ton code
      2. Merci G_33 pour cette nouvelle réponse,

        Cependant le problème persiste.

        Il semble que c'est vraiment la ligne :

        n = Worksheets("Enregistrements interventions").Range("C" & l + 1) - Worksheets("Enregistrements interventions").Range("C" & l)

        Qui pose problème par une" incompatibilité de type."
        1. As tu vérifié si il n'y a pas un espace en début ou fin de cellule "Range("C" & l)".

          j'ai fait un test avec des dates et ça marche parfaitement.

          Par contre j'ai rajouté un espace en début de cellule et j'ai effectivement l'erreur
          "incompatibilité de type"
      3. Bonjour à vous

        Merci à vous deux pour ces réponses,

        le problème persiste même avec une déclaration en "Date"

        j'obtiens une erreur d'éxécution '13' : Incompatibilité de type.

        Des idées?

        DGVDR
        1. j'ai modifié ma précédente réponse
      4. Contributeur
        Bonjour,

        quel est exactement le problème (message d'erreur, résultat obtenu ne correspondant pas à un résultat souhaité...) ?

        Cordialement.
        1. Bonjour
          quand tu arrives à

          Worksheets("Global").Range("W" & m) = n / (Nbre - 1)

          si (Nbre - 1) =0 tu ne peux pas diviser n par zéro en vba

          cordialement