XL 2016 erreur 13

jerome313131

XLDnaute Nouveau
Bonjour quand je lance ma macro j'ai une erreur code erreur d’exécution 13 incompatible de type
Pouvez vous m'aider merci

Sub relance()
Dim C As Range, olApp As Object, M As Object
Set olApp = CreateObject("Outlook.application")
For Each C In Range("A2", Cells(Rows.Count, 1).End(xlUp))
If IsDate(C.Offset(, 1)) And Date - C.Offset(, 1) > 5 Then
If C.Offset(, 1).Interior.ColorIndex = 6 Then
Set M = olApp.CreateItem(olMailItem)
With M
.Subject = "RELANCE commande " + C.Offset(, 4).Value
.Recipients.Add C.Offset(, 3).Value
.Body = " Bonjour, pouvez vous nous donner le délais de livraison concernant notre commande citée en objet . Cordialement Climax-sav Mr Charrier J."
.Display
End With
End If
End If
Next C
End Sub
 
Solution
C'est la valeur de la colonne B qui n'est pas une date. Comme l'indique @Dranreb :

VB:
Sub relance()
  Dim C As Range, olApp As Object, M As Object
  Set olApp = CreateObject("Outlook.application")
  For Each C In Range("A2", Cells(Rows.Count, 1).End(xlUp))
    If IsDate(C.Offset(, 1)) Then
      If Date - C.Offset(, 1) > 5 Then
        If C.Offset(, 1).Interior.ColorIndex = 6 Then
          Set M = olApp.CreateItem(olMailItem)
          With M
          .Subject = "RELANCE commande " + C.Offset(, 4).Value
            .Recipients.Add C.Offset(, 3).Value
            .Body = " Bonjour, pouvez vous nous donner le délais de livraison concernant notre commande citée en objet . Cordialement Climax-sav Mr Charrier J."...

Dranreb

XLDnaute Barbatruc
Bonjour.
Décomposez, parce que l'opérateur And ne marche pas comme le AndThen de certains autres Visual Basic: l'expression Date - C.Offset(, 1) > 5 est évaluée même si Not IsDate C.Offset(, 1)) et ensuite les deux expressions sont combinées.
 

danielco

XLDnaute Accro
C'est la valeur de la colonne B qui n'est pas une date. Comme l'indique @Dranreb :

VB:
Sub relance()
  Dim C As Range, olApp As Object, M As Object
  Set olApp = CreateObject("Outlook.application")
  For Each C In Range("A2", Cells(Rows.Count, 1).End(xlUp))
    If IsDate(C.Offset(, 1)) Then
      If Date - C.Offset(, 1) > 5 Then
        If C.Offset(, 1).Interior.ColorIndex = 6 Then
          Set M = olApp.CreateItem(olMailItem)
          With M
          .Subject = "RELANCE commande " + C.Offset(, 4).Value
            .Recipients.Add C.Offset(, 3).Value
            .Body = " Bonjour, pouvez vous nous donner le délais de livraison concernant notre commande citée en objet . Cordialement Climax-sav Mr Charrier J."
            .Display
          End With
        End If
      End If
    End If
  Next C
End Sub

(non testé)

Daniel
 

Statistiques des forums

Discussions
312 024
Messages
2 084 718
Membres
102 638
dernier inscrit
TOTO33000