arreter une boucle si aucune demande[RESOLU]

breakers

XLDnaute Junior
bonjour à tous !

pouvez vous me dire dans le code suivant ou et comment faire pour introduire un arrêt d'une boucle macro.

en effet quand le message box apparait, si par malheur on ne tape pas de recherche il recopie à l'infini une ligne et impossible de l'arrêter.

Code:
Sub recherche(mot)
Sheets("page d'ouverture").Range("A9:IV65536").Clear
ligne = 9
For Each ws In Sheets
If ws.Name <> "page d'ouverture" Then
With ws.Cells
    Set c = .Find(mot, LookIn:=xlValues, lookat:=xlPart)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
         
          ws.Rows(c.Row).Copy Destination:=Sheets("page d'ouverture").Cells(ligne, 1)
          ligne = ligne + 1
          Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
      trouve = True
    End If
End With
End If
Next ws
x = Sheets("page d'ouverture").Range("B65536").End(xlUp).Row
If x > 14 Then
For n = x To 15 Step -1
 For m = 1 To 7
  xx = xx & Sheets("page d'ouverture").Cells(n, m)
  yy = yy & Sheets("page d'ouverture").Cells(n - 1, m)
 Next m
 If yy = xx Then Sheets("page d'ouverture").Rows(n).Delete
 xx = ""
 yy = ""
Next n
End If
If Not trouve Then MsgBox ("Le mot " & mot & " n'a pas été trouvé dans ce fichier")
End Sub

sa c'est le code une fois la recherche ou non ! lancé.

merci d 'avance à eux qui pourront m'aider.
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : arreter une boucle si aucune demande

Bonjour breakers
Sans exemple pour vérifier, donc à l'aveugle:
ajoute:
If mot ="" then exit sub
En tête de code, ce qui donnerai:
VB:
Sub recherche(mot)
If mot ="" then exit sub
Sheets("page d'ouverture").Range("A9:IV65536").Clear
'etc....

Cordialement
 

vgendron

XLDnaute Barbatruc
Re : arreter une boucle si aucune demande

Hello,

Je ne saisi pas ton souci.
j'ai copié ta macro dans un module
et appelé avec deux mots différents: un qui existe, et un inexistant.
à chaque fois. ca fonctionne correctement..

il nous manque des éléments de ton projet pour comprendre quel est ton problème.

Comment appelles tu ta macro
tu parles d'un msgbox pour lancer une recherche.. il est ou?
si tu peux joindre ton fichier, ca pourrait etre utile
 

breakers

XLDnaute Junior
Re : arreter une boucle si aucune demande

bonjour à vous !!

et déjà merci pour vos réponses !

en effet je me suis mal exprimé l'erreur apparait lorsque la case reste vide ! et non avec avec mot erroné car dans ce cas la phrase apparait pardon.
 

Efgé

XLDnaute Barbatruc
Re : arreter une boucle si aucune demande [RESOLU]

Re
Bonjour vgendron
L'explication :
en utilisant
VB:
With ws.Cells
    Set c = .Find(mot, LookIn:=xlValues, lookat:=xlPart)
Tu ne limite pas ta plage.
Si tu cherche un vide "", le code le trouve dans toutes les cellules en dessous de tes données et copie / colle toutes les lignes de toutes les cellules.
Ca ne boucle pas, tu copies juste 16 384 fois chaque ligne vide :D

Cordialement
 

breakers

XLDnaute Junior
Re : arreter une boucle si aucune demande

re !

merci pour cette info !

derniere chose avec le code précité comment limité la recherche à l'onglet 2 ? ou feuil2 pour extraire, car là du coup elle extrait tout même si plusieurs onglets... donc il faut limiter a la feuille 2

mercid 'avance !!
 

Statistiques des forums

Discussions
312 413
Messages
2 088 201
Membres
103 763
dernier inscrit
p.michaux