VBA : Recherche avec Cells.Find

Bonjour,

Je voudrais effectuer une recherche à l'aide du code ci-dessous (créé à l'aide de l'enregistreur) mais j'aimerais pouvoir affecter la valeur de la variable i (pour le passage What:=i) au travers d'un clic sur une cellule.

Cells.Find(What:=i, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate

Je m'explique : J'imaginais pouvoir lancer une macro contenant le passage ci-dessus, par exemple qu'une fenêtre s'ouvre et me demande quelle est l'expression à rechercher et qu'en cliquant sur une cellule quelconque, l'expression qui s'y trouve soit affectée à la variable i.

Avez-vous une piste ?

Cordialement.

Bonjour

Un exemple en double cliquant sur la cellule A2 :

  • la macro va rechercher le contenu de la cellule A2 dans la plage D2:F14
  • si le contenu est présent alors la macro affiche l'adresse et sélectionne la cellule
  • sinon affiche le message "non présent"
888exemplefind.zip (9.96 Ko)
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Dim plage As Range
Dim cellule As Range
Set plage = Range("D2:F14")
Set cellule = Range("A2")
Dim add As Range

Set add = plage.Find(cellule, LookIn:=xlValues, lookat:=xlWhole)

If Not add Is Nothing Then
MsgBox add.Address
add.Select
Else
MsgBox "non présent"
End If

End Sub

cdt

Bonjour Yvouille, ketamacanna

Autre proposition par Userform

1'081rechercheyvouille.zip (12.80 Ko)

Bonsoir et merci à tous deux pour vos intéressantes solutions.

Celle de Bob me semble plus proche de ma demande car elle permet de cliquer n'importe où sur la feuille, alors qu'avec la solution de Ketamacanna, on est limité à une seule cellule.

Je vais essayer de réutiliser vos solutions pour mon fichier réel et reviendrai à la charge si nécessaire.

J'ai une autre question. J'avais tout d'abord essayé d'utiliser cette ligne de code pour ouvrir une boîte de dialogue "Recherche"

Application.Dialogs(xlDialogFormulaFind).Show , 2

Savez-vous pourquoi cette boîte s'ouvre à moitié en français, à moitié en anglais - selon l'image ci-dessous - et pourquoi il est impossible d'effectuer une recherche par l'intermédiaire de cette boîte de dialogue ; on peut y mettre le texte que l'on veut, ça ne réagit pas losque l'on clique sur "Find Next". De plus, je trouve assez génant que le dernier texte cherché - bien que l'on ait refermé la boîte entre deux - affiche tout d'abord toujours la dernière recherche !

capture 17 05 b

A vous relire.

Bonsoir Yvouille

je ne sais pas pour quelle raison la boite de dialogue est mi french mi anglais

tu peux peut être tester avec la boite de remplacement et non de recherche

si tu veux que la zone de recherche soit vide ou placer le texte à rechercher,il faut lui indiquer les arguments comme l'exemple si dessous

Application.Dialogs(xlDialogFormulaReplace).Show ("tyty"), ("tutu"), True, 1, , True

"tyty"=texte recherché

"tutu"=texte de remplacement

true=cellule entière ou 1 pour coché et 0 pour décoché

1=par ligne ou 2=par colonne

true=respecter la casse ou 1 pour coché et 0 pour décoché

Merci pour ces informations complémentaires, c'est très sympa

Par contre la boîte "Remplacer" s'ouvre également de manière hybride !!!

capture 18 05

Bonnes salutations.

Bonjour Yvouille

Chez moi,la boite est bien en français

c'est une boite qui fait parti des Addins, je pense qu'il y a un problème de ce coté (à mon humble avis)

elle ne peut être appelé que par du code VBA (ce n'est pas la boite par édition ;remplacer) pour vee11

Bonjour Yvouille

Essaye également

Dim i As Range
Set i = Application.InputBox("Cliquez sur la cellule", Type:=8)

Cells.Find(What:=i, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate

Amicalement

Nad

Bonjour,

Merci à vous tous pour vos compléments d'information.

Nad, j'ai testé ta proposition et la trouve également intéressante. Mais ma demande première était que je puisse cliquer sur une cellule afin d'obtenir la valeur de ma variable et non pas devoir en écrire l'adresse.

Concernant la langue des boîtes de dialogue, je viens de tester sur Exce. 2003 et les boîtes s'ouvrent également en français chez moi. Je présume donc qu'il s'agit d'un problème de version Excel. Je serais donc toujours intéressé par une solution à ce propos pour Excel 2007

Bonjour

Yvouille a écrit :

Mais ma demande première était que je puisse cliquer sur une cellule afin d'obtenir la valeur de ma variable et non pas devoir en écrire l'adresse.

Alors remplace le set i par celui-ci

Set i = Selection

Amicalement

Nad

Super

Merci beaucoup pour ta réponse.

Bonnes salutations.

Rechercher des sujets similaires à "vba recherche find"