Cours VBA gratuit | Erreurs

Erreur 91

Gratuit, sans inscription Niveau 2 / 3 | Intermédiaire Lecture 5 min V1.2 | 29/10/2026

L'erreur 91 apparaît quand la macro utilise un objet qui n'existe pas encore, ou plus. Dans neuf cas sur dix, c'est un Set oublié ou une recherche qui n'a rien trouvé.

Télécharger la fiche PDF gratuiteSans inscription, mise en page prête à imprimer

01Le message

En une phrase

Erreur d'exécution 91 : Variable objet ou variable de bloc With non définie. La variable devrait désigner un objet (cellule, feuille, classeur), mais elle est vide : elle vaut Nothing.

02Les causes les plus fréquentes

CauseExempleCorrection
Set oubliéws = Worksheets("Ventes")Set ws = Worksheets("Ventes")
Find ne trouve rienRange("A:A").Find("Dupont").Rowtester Is Nothing avant d'utiliser le résultat
Objet jamais affectéDim c As Range puis c.Value = 1affecter avec Set avant l'usage

03Le cas classique : Find

Find renvoie la cellule trouvée... ou Nothing si la valeur est absente. Utiliser directement le résultat déclenche l'erreur 91 dès que la recherche échoue.

Chercher sans planter
Sub TrouverClient()
    Dim trouve As Range
    Set trouve = Worksheets("Clients").Range("A:A").Find(What:="Dupont", LookAt:=xlWhole)

    If trouve Is Nothing Then
        MsgBox "Client introuvable."
    Else
        MsgBox "Client trouvé en ligne " & trouve.Row
    End If
End Sub
💡 AstuceIs Nothing

On ne compare pas un objet avec =. Pour savoir si une variable objet est vide, on écrit If maVariable Is Nothing Then.

04Pièges à éviter

⚠️ PiègeSet pour les objets, pas pour les valeurs

Set total = Range("B10") range la cellule ; total = Range("B10").Value range sa valeur. Le type déclaré (Range ou Double) doit correspondre.

05Questions fréquentes

Que signifie l'erreur 91 en VBA ?

Erreur d'exécution 91 : Variable objet ou variable de bloc With non définie. La variable devrait désigner un objet (cellule, feuille, classeur), mais elle est vide : elle vaut Nothing.

Quel est le piège le plus fréquent avec l'erreur 91 ?

Set pour les objets, pas pour les valeurs. Set total = Range("B10") range la cellule ; total = Range("B10").Value range sa valeur. Le type déclaré (Range ou Double) doit correspondre.

La fiche « Erreur 91 » 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.

Pour les formateurs

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-05
Voir aussi

Toutes 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