macro en boucle sur une recherche

Michael78

XLDnaute Nouveau
Bonjour,

Merci aux Rois et Reines du VBA pour vos précieux conseils et débogage...

Ma macro tourne dans le vide et je ne trouve pas l'erreur. je m'explique:
* 1/ J'ai une macro qui copie une feuille type, puis la renomme, puis classe les feuilles par ordre alphabétique (merci "mapomme")
*2/ Ma deuxième macro (celle qui bug) recherche une chaîne de caractère que je lui indique dans la cellule "c29" de la feuille "01.Tableau général" dans l'ensemble des feuilles visibles hormis la feuille "01.Tableau général". et la c'est le drame, elle tourne en rond... je vous met le fichier

Merci d'avance
 

Pièces jointes

  • Essai Fichier agent.xlsm
    137.1 KB · Affichages: 16

Michael78

XLDnaute Nouveau
oui... et non...
Je n'ai pas tout a fait fini ma macro, je souhaite le résultat sous forme d'un tableau avec juste les noms des feuilles (qui correspondent au nom des agents ayant cette qualification), mais je ne souhaite pas avoir comme résultat la feuille "base de donnée" qui est masqué. je viens d'essayer en ajoutant cette condition mais... ca bug :

If Not Ws.Name = "Base de donnée" Then

C'est une condition qui existe déjà, voici ce que cela donne, mais peut-être qu'il ne faut pas que je l'écrive juste en dessous de la première :

For Each Ws In Worksheets
With Ws
If Not Ws.Name = "01.Tableau general" Then
If Not Ws.Name = "Base de donnée" Then
Set c = .Columns("A:Z").Find(What:=MaRecherche, LookIn:=xlValues, LookAt:=xlPart)
End If
End If
If Not c Is Nothing Then
firstAddress = c.Address
Do
Message = Message & "- dans la feuille " & Ws.Name & ", cellule " & c.Address & Chr(10)
Set c = .Columns("A:Z").FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
 

job75

XLDnaute Barbatruc
Bonsoir Michael78, salut Backhandshot,

La macro n'allait pas, les End If étaient mal placés, utilisez :
Code:
Sub Recherche()
Dim MaRecherche$, Message$, Ws As Worksheet, c As Range, firstAddress$, n
MaRecherche = Sheets("01.Tableau général").Range("C29")
Message = "La valeur " & MaRecherche & " a été trouvée :" & vbLf
For Each Ws In Worksheets
    If Ws.Visible = xlSheetVisible And Ws.Name <> "01.Tableau général" Then
        Set c = Ws.Columns("A:Z").Find(What:=MaRecherche, LookIn:=xlValues, LookAt:=xlPart)
        If Not c Is Nothing Then
            firstAddress = c.Address
            Do
                n = n + 1
                Message = Message & "- dans la feuille " & Ws.Name & ", cellule " & c.Address(0, 0) & vbLf
                Set c = Ws.Columns("A:Z").FindNext(c)
            Loop While Not c Is Nothing And c.Address <> firstAddress
        End If
    End If
Next Ws
If n Then MsgBox Left(Message, Len(Message) - 1)
End Sub
A+
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 897
Membres
101 833
dernier inscrit
sandra25