If InStr -> message d'erreur "incompatibilité de type"

Rebonjour!

Deuxième bug du jour pour moi (ça fait depuis hier que je n'arrive pas à le résoudre en réalité et c'est pour ça que je viens vers vous).

Je souhaite que mon code supprime toutes les lignes dont la première cellule contient une chaine de caractères et j'utilise un For ligne = Y To Z avec index décroissant.

Cela fonctionnait jusqu'à hier où j'ai effacé quelques lignes inactives (mais j'en ai peut être effacé des actives sans faire exprès). Maintenant le code ne fonctionne pas et le débogueur me renvoie le message d'erreur "incompatibilité de type" par à cette ligne de code : "If InStr(1, libellé, anomalie) <> 0 Then"

Voici mon code en entier:

Sub suppr()

Index1 = 2 'index de ma feuille où supprimer les lignes

anomalie = "TTT" 'chaine de caractères que contiennent les premières cellules des lignes à supprimer

Worksheets(Index1).Activate

'Dim LastRow As Long
'LastRow = Range("A:A").SpecialCells(xlCellTypeLastCell).Row

For ligne = 623 To 7 Step -1

libellé = Rows(ligne).Cells(1, 1)

If InStr(1, libellé, anomalie) <> 0 Then  'ligne qui apparemment pose problème -> message d'erreur= "incompatibilité de type"

    Rows(ligne).Delete

    End If

Next ligne

End Sub

Si à tout hasard quelqu'un a une idée de ce qu'il se passe !

Bonne journée à vous,

Bonjour

Pour etre sur d'obtenir une réponse plus facilement, le mieux est de joindre un fichier

Cordialement

Bonjour Jeanne et bonne année

Essaie ainsi :

Sub suppr()
Dim Index1 As Integer
Dim anomalie As String
Dim ligne As Integer
Dim libellé As String

Index1 = 2 'index de ma feuille où supprimer les lignes
anomalie = "TTT" 'chaine de caractères que contiennent les premières cellules des lignes à supprimer

Worksheets(Index1).Activate

For ligne = 623 To 7 Step -1
libellé = Cells(ligne, 1)
If InStr(1, libellé, anomalie) <> 0 Then 'ligne qui apparemment pose problème -> message d'erreur= "incompatibilité de type"
Rows(ligne).Delete
End If
Next ligne

End Sub

Cela devrait marcher

Bonne continuation

Chris

Bonjour Chris,

Pour mettre du code, utilise le symbole adéquat pour améliorer la lisibilité.

Merci

image1

Bonjour @ tous !

ici : libellé = Rows(ligne).Cells(1, 1)
libellé récupère l'objet Range de la cellule testée

ici : If InStr(1, libellé, anomalie)
vous faites un test de recherche "string" entre un objet range et une variable string = incompatibilité de type.

Donc soit typer vos variables comme le suggère CHRIS1945 soit lors de votre test utilisez ".Value" pour récupérer la valeur de l'objet Range libellé, me semble-t-il...
If InStr(1, libellé.Value, anomalie), mais typer les variables c'est un "minimum"...

@ bientôt

LouReeD

Salut Jeanne,
Salut les as,

ainsi, sans doute...

Sub suppr()
'
Application.EnableEvents = False
Application.ScreenUpdating = False
'
With Sheets(2)
    For x = 623 To 7 Step -1
        If InStr(.Cells(x, 1), "TTT") > 0 Then .Rows(x).Delete shift:=xlUp
    Next
End With
'
Application.ScreenUpdating = True
Application.EnableEvents = True
'
End Sub

A+

Merci beaucoup à vous tous!! J'y vois plus clair maintenant, merci Lou_Reed pour votre explication sur la nature de l'erreur, merci Chris et Curulis pour vos propositions de code!!

Je vais tester tout ça et je reviendrait pour vous en dire plus mais à mon avis voilà qui devrais résoudre mon problème.

Re !! Alors, j'ai testé toutes vos suggestions mais aucune n'a fonctionné pour l'action de supprimer les lignes.

Je pense que ce que ne tolère pas mon code/fichier/excel c'est la combinaison de .Delete et d'une boucle par index de ligne décroissant ! Ce "bug" aura bien failli me faire perdre la tête!!

Salut Jeanne,

dans ce cas, une seule solution : un fichier et toutes les explications nécessaires!

A+

Bonsoir,

curulis57 a bien raison... Un fichier, ne serait-ce que pour vérifier qu'il n'y a pas de tableau structuré sur les lignes à supprimer... Mais l'erreur ne serait pas incompatibilité de type alors, me semble-t-il...

@ bientôt

LouReeD

Rechercher des sujets similaires à "instr message erreur incompatibilite type"