Rechercher : dans
Par :

[Excel] Macro de recherche toutes feuilles

Dernière réponse le 10 aoû 2007 à 15:34:01 el osito, le 10 aoû 2007 à 11:39:44 
 Signaler ce message aux modérateurs

Bonjour à tous,

je suis actuellement en galère, je souhaite faire une macro excel de recherche d'une suite alpha-numérique.
Pour expliquer avec plus de détails, sur ma première feuille de mon classeur (feuille de "menu"), je souhaite pouvoir entrer ma suite alpha-numérique et ensuite lancer une macro qui me trouvera cette suite au sein des différentes feuilles. Je précise que cette suite est unique et se trouve donc une seule fois au sein des feuilles.

Merci d'éclairer le néophyte que je suis dans ses débuts de macros...

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « [Excel] Macro de recherche toutes feuilles » dans :
[Excel] Chemin et nom de stockage de feuille de calcul VoirIndiquer automatiquement le chemin d'accès (path) et le nom de stockage de toute feuille de calcul Noter dans une cellule (A& par exemple) la formule : =cellule("nomfichier";A1) A chaque sauvegarde et/ou déplacement de fichier dans votre...
Télécharger MOREFUNC (Macro complémentaire EXCEL) VoirMorefunc est une macro complémentaire proposant 67 nouvelles fonctions de feuille de calcul pour Excel. Ces fonctions sont compatibles avec Excel 95 à 2007. Elles ne sont pas portables sur d'autres plate-formes que Windows, ni sur d'autres...
Exécuter une macro VoirExécuter une macro Excel et Calc proposent plusieurs façons d’exécuter une macro : en la sélectionnant dans une liste, dans la boîte de dialogue Macro ; par un raccourci clavier ; en l’attachant à un bouton de la barre d’outils ; ...

1

Papou93, le 10 aoû 2007 à 14:38:28

Bonjour el osito,

Voici une macro qui j'espère te conviendra :

Private Sub ChercheTexte()
' Parcourt les Feuilles de la 2ème à la dernière
For sh = 2 To Sheets.Count
  With Sheets(sh).Range("a1:iv65536")
    ' recherche la valeur située en 'A1' sur la première feuille
    Set t = .Find(Sheets(1).Range("a1").Value, LookIn:=xlValues)
    If Not t Is Nothing Then
      ' Si la valeur est trouvée, alors
      ' Active la feuille contenant cette valeur
      Sheets(sh).Activate
      ' Récupère l'adresse de la cellule trouvée et la selectionne
      a = t.Address
      .Range(a).Select
      ' Arrête la recherche
      Exit Sub
    End If
  End With
Next

End Sub


Tu peux la saisir telle quelle dans un module de code, ou saisir les lignes situées entre 'Private Sub' et 'End Sub' dans l'événement 'Click' d'un bouton. Les commentaires devraient te suffire à comprendre le déroulement.

Espérant t'avoir été utile.

Cordialement.

Répondre à Papou93

2

Papou93, le 10 aoû 2007 à 14:48:52

Petite précision :

Si tu saisis ce code dans un module, il te faut remplacer 'Private Sub' par 'Public Sub', autrement tu obtiendras un message d'erreur.

Cordialement.

Répondre à Papou93

3

Sir_DEC, le 10 aoû 2007 à 14:54:15

Et pour accélérer un peu, on peut se contenter de "UsedRange" au lieu de Range("A1:IV65536").

Répondre à Sir_DEC

4

 el osito, le 10 aoû 2007 à 15:34:01

Merci bien de tous ces conseils, en plus avec les commentaires j'ai pu comprendre parfaitement la procédure.

Merci à vous deux

Voici le code final :

Private Sub CommandButton1_Click()
' Parcourt les Feuilles de la 2ème à la dernière
For sh = 2 To Sheets.Count
  With Sheets(sh).UsedRange
    ' recherche la valeur située en 'C7' sur la première feuille
    Set t = .Find(Sheets(1).Range("c7").Value, LookIn:=xlValues)
    If Not t Is Nothing Then
      ' Si la valeur est trouvée, alors
      ' Active la feuille contenant cette valeur
      Sheets(sh).Activate
      ' Récupère l'adresse de la cellule trouvée et la selectionne
      a = t.Address
      .Range(a).Select
      ' Arrête la recherche
      Exit Sub
    End If
  End With
Next


End Sub


Merci d'aider aussi bien et aussi vite les petits néophytes comme moi, ça nous donne de l'espoir...

Petite citation au passage : "La connaissance est la seule chose qui s'accroit lorsqu'on la partage." ;-)

Répondre à el osito