Recherhce ca marche une seule fois

  • Initiateur de la discussion Laurent
  • Date de début
L

Laurent

Guest
Bonjour le Forum
Voici un casse tete.
merci de votre aide (3 semaines sans résultat)

J'ai une macro pour une recherche de désignation qui marche bien mais si je lance le code ci-dessous une seul fois la recherche ne marche plus.

Dim c As Range 'déclare la variable c
Dim plage As Range

Set plage = Sheets('Stock').Range('A1:A' & Sheets('Stock').Range('A65536').End(xlUp).Row)
With plage
Set c = .Find(ComboArticles.Value, , xlValues, xlWhole)
If c Is Nothing Then
MsgBox 'La Référence n'existe pas dans la base'
ComboArticles.SetFocus
Stock = ''
Designation = ''
Stockmini = ''
Crit1 = ''
Exit Sub

End If 'fin condition
End With

MA reCherche avec ce code ne marche plus ( recherche infrutueuse) avec ce code:

'début de la recherche
With plage

Set r = .Find(mot, Sheets('Stock').Range(col & li), xlValues) 'définit la variable c
If r Is Nothing Then 'si recherche infructueuse
MsgBox 'Mot-clé non trouvé.' 'message
TextBox1.SetFocus 'place le curseuer dans la TextBox1
TextBox1.SelStart = 0 'début de la sélection
TextBox1.SelLength = Len(TextBox1.Value)
Exit Sub
End If
End With
'continuation de la recherche
Unload Me 'vide et ferme l'UserForm1
Module3.cherche 'lance la procédure 'cherche' du module3

Nb cette recherche fonctionne bien si je ne lance pas le code du début.

Merci de m'aider
et Bonne journée a tous
 

Hellboy

XLDnaute Accro
Bonjour Laurent

Tu as tout a fait raison, le finf ne marche qu'une seulfois lorsqu'il est appelé. Il faut que tu utilise ensuite soit le findnext ou le findprevious. Je te joint une exemple.

Code:
Set Plage = Range(Cells(6 + cherche, ColumnRef), Cells(Cells(65536, ColumnRef).End(xlUp).Row, ColumnRef))
        Plage.Find(What:=CStr(Cells(8, ColumnRef)), After:=ActiveCell, LookIn:=xlValues, LookAt:=xlWhole, _
             SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
            MatchCase:=True).EntireRow.Delete
        Do
        Plage.FindNext(After:=ActiveCell).EntireRow.Delete
        Loop Until Plage.FindNext(After:=ActiveCell).Row = 8 'Is Nothing
 

Discussions similaires

Réponses
2
Affichages
154

Statistiques des forums

Discussions
312 305
Messages
2 087 082
Membres
103 458
dernier inscrit
Vulgaris workshop