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 SubVoici a quoi ressemble l'userfrom si ça peut aider.
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