Problème de compatibilité avec une fonction FIND (VBA)

Vorens

XLDnaute Occasionnel
Bonjour tout le monde,


J'ai un petit problème dans mon projet avec mes fonctions find. Le problème est que si mon string rechercher est trop long, VBA me donne une code d'erreur d'incompatibilité de type.

Le code est le suivant

Code:
Sub test()


Dim s As String


's = Range("C5").Value
's = Range("C4").Value
s = Range("C7").Value

 Set rechercheNomObjet = ThisWorkbook.Sheets("Feuil1").Range("B" & "2").EntireColumn.Find(s, lookat:=xlWhole, MatchCase:=True)

End Sub


Je vous joins le fichier pour exemple. Il faut exécuter le code en manuel je n'ai pas mis de bouton. Le code est dans la feuille 1.


La question est : Que pouvons nous faire pour palier ce problème. Si un sage d'excel peut m'éclairer je lui en serait très reconnaissant.


Par avance merci pour votre aide

Meilleures salutations


Vorens
 

Pièces jointes

  • Problème Find .xls
    38 KB · Affichages: 55
  • Problème Find .xls
    38 KB · Affichages: 54
  • Problème Find .xls
    38 KB · Affichages: 57

GIBI

XLDnaute Impliqué
Re : Problème de compatibilité avec une fonction FIND (VBA)

Bonjour,

effectivement le string doit être limité à 255 ce qui est déjà bien

si le critère est > 255 tu peux faire une boucle

Code:
    s = Range("C5").Value

    Set rechercheNomObjet = Nothing

    With ThisWorkbook.Sheets("Feuil1")
        For l = 1 To .Range("B65000").End(xlUp).Row
            If s = Cells(l, 2) Then
                Set rechercheNomObjet = .Cells(l, 2)
                Exit For
            End If
        Next
    End With
    
    If rechercheNomObjet Is Nothing Then
        'pas trouvé
    End If

GIBI
 
Dernière édition:

Vorens

XLDnaute Occasionnel
Re : Problème de compatibilité avec une fonction FIND (VBA)

Hello GIBI,

Merci pour ta réponse. c'est effectivement une solution mais j'ai peur qu'elle affecte grandement les performances du code sachant que dans mon projet, j'effectue cette recherche sur un tableau de 15'000 ligne tout en sachant que la recherche est elle même dans une boucle de 20'000 itérations.

Je me demande si il n'y a pas un moyen de faire quelque chose de plus rapide à l’exécution.

Meilleures salutations
 

pierrejean

XLDnaute Barbatruc
Re : Problème de compatibilité avec une fonction FIND (VBA)

Bonjour Vorens

Salut GIBI

Vois si cela te convient
 

Pièces jointes

  • Problème Find .xls
    39.5 KB · Affichages: 60
  • Problème Find .xls
    39.5 KB · Affichages: 63
  • Problème Find .xls
    39.5 KB · Affichages: 62

Vorens

XLDnaute Occasionnel
Re : Problème de compatibilité avec une fonction FIND (VBA)

Re,

Bonjours pierrejean,


Merci pour ta réponse, je la regarderais dès que possible mais j'ai une autre urgence sur le feux, je n’oublierais pas de revenir pour dire c'est ce que je recherche.

Encore merci.


Meilleures salutations


Vorens
 

Vorens

XLDnaute Occasionnel
Re : Problème de compatibilité avec une fonction FIND (VBA)

Re bonjour,


Comme promis j'ai regarder la solution de pierrejean. Elle est bien mais j'y ajoute un autre test pour encore affiner la recherche. J'ai pas préciser mais dans mon projet le problème du string trop long n'est pas valable pour toute les lignes. Donc j'ajoute un test pour contrôler si le string fait plus de 250 alors je find avec le string tronquer + la boucle en cas de test positif, si le string est plus cours ou égale a 250 je fais le find normal.

Merci encore pour vos réponses et à la prochaine !

Meilleures salutations


Vorens
 

Discussions similaires

Statistiques des forums

Discussions
312 336
Messages
2 087 389
Membres
103 534
dernier inscrit
Kalamymustapha