Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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."...
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.
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
477
Réponses
4
Affichages
207
Réponses
10
Affichages
295
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
184
Réponses
2
Affichages
523
Réponses
9
Affichages
600
Retour