Macro de recherche

Résolu
domimeca Messages postés 36 Statut Membre -  
Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,j'aimerais grâce à une macro (vba, excel 2003), rechercher et ouvrir une feuille donnée dans mon classeur. Ceci à partir de ma feuille1(page d'accueil). Toutes mes feuilles sont nommée par un nombre qui correspond à la cellule C1 de chacune d'elle. L'idée est de mettre le nombre 6359 dans la cellule A3 de ma page d'accueil, et l'application ouvrira la feuille où C1=6359, (ou la feuille 6359 qui est la même). Plusieurs essais de plusieurs codes trouvés sur le net furent sans succés. Le meilleur est celui ci:

Sub Recherche()
For Each Sh In Worksheets
With Sh
a = Sh.Name

Set C = .Cells.Find(What:=Sheets("Feuil1").Range("A1").Value, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False)

If Not C Is Nothing Then
firstAddress = C.Address
Do
Sh.Activate
C.Activate
Set C = .Cells.FindNext(C)
Loop While Not C Is Nothing And C.Address <> firstAddress
End If
End With
Next
End Sub
il selectionne bien ma feuille
mais : erreur 91 variable objet ou variable de bloc With non definie
il surligne
Loop While Not C Is Nothing And C.Address <> firstAddress

Aidez moi.
Merci à tous

1 réponse

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Bonsoir

    Pourquoi faire si compliqué ? Copie ce code dans ta feuille menu (clic droit sur l'onglet, visualiser le code), il devrait suffire :
    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim sh As Worksheet
      If Intersect(Range("A3"), Target) Is Nothing Then Exit Sub
      For Each sh In Worksheets
          If sh.Range("C1").Value = Target.Value Then
             sh.Activate
             sh.Range("A1").Activate
          End If
      Next sh
    End Sub
    

    Patrice
    0