Erreur d’exécution '13': incompatibilité de type

Bonjour,

J'ai une erreur que je n'arrive pas a résoudre (je suis novice en VBA) avec un userform

c'est un userform "Moteur de recherche" pour un classeur excel, lorsque je rentre un mot recherché et que je clique sur le bouton validé il me met les resultats trouvé dans une listView et un double clique sur le mot trouver m'ouvre la page ou il se trouve.

Mais depuis aujourd'hui, lorsque je clique sur validé il me met : Erreur d’exécution '13': incompatibilité de type

et voici le code ou ce trouve l'erreur: (la ligne ou il me montre l'erreur est surligner)

Option Compare Text
Sub EnTête()
    Dim i%, lbvis As Boolean
    If lbxPrest.RowSource <> "" Then
        lbvis = True
    Else
        lbvis = False
    End If
    For i = 1 To 3
        Controls("lbPr" & i).Visible = lbvis
    Next i

End Sub

Private Sub cbQuit_Click()
    Unload Me
End Sub

Private Sub cbValid_Click()
Dim Cel As Range
    Application.ScreenUpdating = False
'Range("A2:A24").Interior.ColorIndex = 2
    Me.ListView1.ListItems.Clear
    If ComboBox1 <> "" Then
'      For i = Sheets.Count To 1 Step -1 'en mode de la dernière feuille à la première
      For i = 1 To Sheets.Count          'en mode de la première feuille à la dernière
        If Sheets(i).Name <> "Recherche" Then
            For Each Cel In Sheets(i).Range("A1:Z" & Sheets(i).Range("F" & Application.Rows.Count).End(xlUp).Row)
'            For Each Cel In Sheets(i).Range("A1:Z2000")
               If Cel.Row > 3 And Cel <> "" Then
                  If Cel Like "*" & ComboBox1 & "*" Then
'                    Cel.Interior.ColorIndex = 43
                     UserForm1.ListView1.ListItems.Add , , Cel
                     UserForm1.ListView1.ListItems(UserForm1.ListView1.ListItems.Count).ListSubItems.Add , , Sheets(i).Name
                     UserForm1.ListView1.ListItems(UserForm1.ListView1.ListItems.Count).ListSubItems.Add , , Cel.Address
                  End If
               End If
            Next Cel
         End If
      Next i
    End If
   Application.ScreenUpdating = True
End Sub

Private Sub ListView1_DblClick()
Dim Feuille As String, Cellule As String
Feuille = UserForm1.ListView1.SelectedItem.ListSubItems(1)
Cellule = UserForm1.ListView1.SelectedItem.ListSubItems(2)

If Me.ListView1.ListItems.Count <> 0 Then
   Sheets(Feuille).Activate
   Sheets(Feuille).Range(Cellule).Activate
   ActiveCell.EntireRow.Activate
End If
End Sub

Private Sub userform_initialize()
  With Me.ListView1
        With .ColumnHeaders
        'Titres des colonnes
            .Clear
            'Ajout des colonnes

            .Add , , "Liste", 300, lvwColumnLeft
            .Add , , "Onglet", 116, lvwColumnLeft
            .Add , , "Cellule", 90, lvwColumnLeft
        End With
    .View = lvwReport 'affichage en mode Rapport
    .Gridlines = True 'affichage d'un quadrillage
    .FullRowSelect = True 'Sélection des lignes comlètes
    .LabelEdit = lvwManual
    .HideSelection = False
    .HotTracking = False
  End With

End Sub

Voici a quoi ressemble l'userfrom si ça peut aider.

userfrom

Merci pour vos aides

Bonsoir,

Utilise "Surligner" qui fonctionne à l'interieur des balises Code...

Probabilité pour une erreur 13 : la cellule testée au moment de l'erreur contient une valeur d'erreur.

Cordialement

Désolè, j'avais pas vu qu'il ne s’était pas mis en rouge. j'ai edité et surligné la ligne ou ce trouve l'erreur

Merci.

As-tu vérifié ta plage de cellules ?

En faite il fait une recherche sur tout le classeur (j'ai une vingtaine de feuilles)

Je suis complétement novice en VBA, comment on vérifie la plage de cellules et qu'est ce que je dois trouver comme problème ?

Pour info hier il fonctionné normalement.

Lorsqu'une erreur d'exécution intervient, tu as un message, tu cliques sur Débogage, cela t'amène sur l'emplacement de l'erreur et la ligne sur laquelle elle est survenue est surlignée en jaune. Si tu balades le curseur de la souris sur les noms de variable, leur valeur au moment de l'erreur s'affiche dans une info-bulle.

Au cas particulier, la variable i t'indiquera sur quelle feuille est survenue l'erreur, ce qui te permet de cibler la recherche.

La probabilité, s'agissant d'une erreur 13 sur une ligne où tu testes avec <>"" est que la cellule contient une valeur d'erreur. Il est souhaitable de le vérifier et ensuite savoir ce que tu fais dans ce cas.

Selon le cas, il faudra introduire une gestion d'erreur pour au moins que la procédure puisse se poursuivre.

Tu pourrais aussi tester avec Not IsEmpty(Cel), mais dans ce cas, les cellules contenant une formule qui affiche "", éliminées par ta condition précédente, ne le seront plus...

Cordialement.

Bonjour,

Donc en pointant la sourie sur l'erreur, arrivé sur Cell.Row, l'info bulle me dit : "Cell.Row = 1162" et en pointant sur Cel : "Cel = erreur 2023"

Et i te dit quoi ?

Erreur 2023, cela confirme, c'est que tu as une cellule qui contient une erreur #REF!

VBA lui, affiche une erreur 13 car incompatibilité de type d'une valeur d'erreur avec le test : <>"" (valeur String)

Avec i, tu repèreras la feuille. Ayant déjà la ligne tu pourras vite retrouver la cellule fautive et voir le pourquoi de l'erreur...

Merci beaucoup effectivement c'était bien cette erreu sur la page 4 #réf!

Par contre sur la page 1 une c'était #valeur! et je voudrai si il peux ignorer cette erreur ?

C'est une cellule avec un calcul qui dépend d'une autre case et lorsque qu'elle est vide par défaut il met met donc cette erreur #valeur!

Pour #réf le souci lui est bien réglé.

J'ai trouvé la solution dans la cellule ou se trouve #valeur! J'ai ajouté =SIERREUR(laformule;0) et maintenant je n'est plus d'erreur dans la cellule vu qu'il replace l'erreur par 0 et le moteur de recherche fonctionne normalement.

Un GRAND merci à vous pour votre aide

Rechercher des sujets similaires à "erreur execution incompatibilite type"