Erreur 13
L'erreur 13 signale que VBA a reçu une donnée du mauvais type : du texte là où il attend un nombre, une valeur d'erreur Excel là où il attend une date. Elle vient presque toujours des données, rarement du code lui-même.
Télécharger la fiche PDF gratuiteSans inscription, mise en page prête à imprimer01Le message
Erreur d'exécution 13 : Incompatibilité de type. La valeur ne peut pas être rangée dans la variable ou utilisée dans le calcul, parce que son type ne correspond pas.
02Les causes les plus fréquentes
| Cause | Exemple | Correction |
|---|---|---|
| Texte dans une variable numérique | Dim q As Long puis q = "douze" | vérifier avec IsNumeric |
| Cellule contenant une erreur | une cellule affiche #N/A et on fait total = total + c.Value | tester IsError(c.Value) |
| Date mal formée | CDate("31/02/2026") | vérifier avec IsDate |
| Calcul sur une cellule texte | Cells(i, 2).Value * 1.2 avec "N.C." en B | tester avant de calculer |
03Sécuriser une boucle de calcul
Sub Additionner() Dim c As Range, total As Double For Each c In Range("C2:C500") If Not IsError(c.Value) Then If IsNumeric(c.Value) And c.Value <> "" Then total = total + c.Value End If End If Next c MsgBox "Total : " & total End Sub
Le test IsError passe en premier, dans un If séparé : comparer une valeur d'erreur avec <> déclencherait lui-même l'erreur 13.
| Fonction | Renvoie True si |
|---|---|
| IsNumeric(x) | x peut être converti en nombre |
| IsDate(x) | x peut être converti en date |
| IsError(x) | x est une valeur d'erreur Excel (#N/A, #DIV/0!...) |
| IsEmpty(x) | la variable ou la cellule est vide |
04Pièges à éviter
Une cellule peut afficher 120 mais contenir le texte "120" (triangle vert dans le coin). IsNumeric renvoie True, et CDbl(c.Value) convertit proprement.
Un texte comme "12.5" peut ne pas être reconnu comme un nombre sur un Excel français, qui attend une virgule. Val("12.5") lit toujours le point comme séparateur décimal.
05Questions fréquentes
Que signifie l'erreur 13 en VBA ?
Erreur d'exécution 13 : Incompatibilité de type. La valeur ne peut pas être rangée dans la variable ou utilisée dans le calcul, parce que son type ne correspond pas.
Quel est le piège le plus fréquent avec l'erreur 13 ?
Les nombres stockés en texte. Une cellule peut afficher 120 mais contenir le texte "120" (triangle vert dans le coin). IsNumeric renvoie True, et CDbl(c.Value) convertit proprement.
La fiche « Erreur 13 » est-elle gratuite ?
Oui. La fiche est en accès libre et gratuit, sans inscription : vous pouvez la lire en ligne et télécharger sa version PDF. Elle fait partie du cours VBA gratuit de mesetudesdecas.fr, qui compte 21 fiches.
Passez de la fiche à la mise en situation
Les études de cas mesetudesdecas.fr placent vos apprenants face à un vrai besoin d'entreprise. L'étude de cas XL-05 fait automatiser un devis commercial de bout en bout, macros comprises, avec énoncé, corrigé et pas-à-pas du formateur.
Découvrir l'étude de cas XL-05Toutes les fiches du cours VBA gratuit
Voir aussi le cours gratuit sur les formules Excel
Fiche V1.2 | Dernière mise à jour : 29/10/2026 | Clément Delobel, formateur Excel et VBA