formule pour "aller à une cellule choisie"

P

philw

Guest
bonjour à tous et toutes,

excusez moi tout d'abord pour le question suivante, car pour vous ce doit être de la rigolade !!

je suis donc bloqué sur une ligne de prog vba d'un bouton dans un userform de recherche : voici ce que je veux lui faire faire ... avec mes mots à moi ... ;)

aller à la cellule recherchée et la sélectionner

(dans ce userform, j'ai une zone à remplir où je mets un nom, par ex, 'recherche : ' et une fois que j'ai mis le nom, j'aimerai qu'en cliquant sur ce bouton, le userform se ferme et qu'excel aille me selectionner la cellule où y a le nom en question, sachant que j'ai déjà trouvé pour fermer le userform B) )

j'espère que j'ai été clair ... :unsure:

merci d'avance !!

Phil
 

jeromegmc

XLDnaute Occasionnel
Salut,


Voici le code qui permet d'activer la fonction rechercher d'excel:


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

Cells.FindNext(After:=ActiveCell).Activate


A+
 
P

philw

Guest
merci de m'avoir répondu, mais ... ça marche pas ... je dois pas savoir l'utiliser :(

le toto ecrit en rouge, il faut que j'en fasse quoi ?
vu que je comprend rien, ça m'est assez difficile d'adapter à mes besoins. Ce code ouvre la fenetre de recherche de excel ? parce que c'est pas ce que je veux, peut être je suis pas clair .. :(

en fait je me suis crée ma propre fenetre de recherche, avec une case à remplir (un nom), et quand je clique sur le bouton OK de cette fenetre, je veux aller à la cellule qui contient ce nom.
C'est un peu pareil que la fonction recherche de excel, mais en + 'léger'...

j'ai réussi à créer cette fenetre, mettre la case à remplir, créer le bouton sur lequel j'ai mis un premier code (fermer cette fenetre) mais il me manque la ligne de code qui va faire que excel va aller à cette fameuse cellule.

voilà ... :( c'est peut être + clair ?

merci d'avance !!

Phil
 

jeromegmc

XLDnaute Occasionnel
Salut,

Le 'toto' est en fait le mot a chercher, mais c'est pas grave voici une réponse a ta demande avec des commentaires:

Code:
Sub recherche()

Dim cellule As Range
Dim MaPlage As Range
Dim MonMot As String

MonMot = 'toto' 'ici je défini le mot a chercher, toi tu dois récupérer la valeur donnée par l'utilisateur
MaPlage = Cells 'défini la zone de recherche (je te conseil de la réduire avec range('A1:Z100')

For Each cellule In MaPlage 'pour chaque cellule dans MaPlage
If cellule.Value = MonMot Then 'si la valeur de la cellule = MonMot
cellule.Select 'selectionne cette cellule
MsgBox cellule.Address 'affiche un message avec l'adresse de la cellule
End If
Next 'boucle


End Sub

Dis moi si tu t'en sort avec ça?

A+
 
P

philw

Guest
salut !

c'est vraiment cool d'essayer de m'aider, mais j'y arrive pas ...
VB me renvoie une erreur à chaque ligne, tous les messages d'erreurs y sont passés !! :lol:

par ex, tu me dis de réduire ma plage grace à Range('A1:Z100'), déjà ça, il veut pas me le prendre, je te parle pas de MonMot, car là je dois lui faire comprendre que c'est une variable, c'est jamais le même mot que je cherche, sinon bonjour le nb de macros ... !
ansi de suite ....

je vais essayer d'être encore + explicite et rester simple :
- j'ai rempli une feuille excel avec ma collec de 33 tours, + de 700 noms
- le nom est dans la colonne A, ensuite, y a les titres d'albums, l'année de sortie, etc ... ce qui m'interesse, c'est le nom.
- j'ai fait une zolie feuille 'd'acceuil', dans laquelle j'ai mis quelques stats de cette collec, et c'est là que je veux mettre ma fonction de recherche, et admettons que j'abandone le principe d'une fenetre de recherche, voici ce que je veux faire :
- une case vide où je peux rentrer un nom d'artiste
- la case à côté est une formule NB.Si qui me renvoie le Nb d'albums de cet artiste, jusque là, tout va bien ... ;)
- j'aimerai mettre dans la case à côté de Nb d'albums un bouton, où peut être simplement un lien hypertexte (mais j'y suis pas arrivé non plus) que je nommerai GO ! qui me renverai dans ma feuille Liste à la première cellule avec ce nom d'artiste, justement pour consulter ses albums.

Ca me parait tellement simple, comme un lien, mais qui réagit en fonction de la valeur d'une cellule (le Nom de l'artiste) ... finalement, ça a l'air hyper compliqué ..
J'ai donc essayé en lien hypertexte, mais il demande la ref de la cellule, j'ai essayé avec un bouton, mais là il faut faire une macro ... donc ..

désolé d'avoir été long, mais autant se comprendre correctement !

merci encore pour l'aide !
Phil
 

jeromegmc

XLDnaute Occasionnel
Re,

Voila le code à coller dans le bouton:

Code:
Private Sub CommandButton1_Click()

Dim cellule As Range
Dim MaPlage As Range
Dim MonMot As String
Dim MonMess

MonMot = Sheets('feuil1').Range('A1').Value 'ici je défini le mot a chercher: cellule A1 de la feuil1
Set MaPlage = Sheets('liste').Cells 'défini la zone de recherche: toutes les cellules de la feuil 'liste'

For Each cellule In MaPlage 'pour chaque cellule dans MaPlage
If cellule.Value = MonMot Then 'si la valeur de la cellule = MonMot
cellule.Select 'selectionne cette cellule
cellule.Select
MonMess = MsgBox('un mot trouvé, voulez-vous continuer?', vbYesNo, 'Continuer') 'affiche un message avec l'adresse de la cellule
    If MonMess = vbYes Then 'si 'yes' aller à l'étiquette 'Line1'
    GoTo Line1
    ElseIf MonMess = vbNo Then 'si 'NO' aller à l'étiquette 'Fin'
    GoTo Fin
    End If
    
End If
Line1:
Next 'boucle
Fin:
End Sub

hypothèses:
Le mot que tu cherches se trouve en A1 de la feuille nommée 'feuil1'
La recherche s'effectue dans la feuille nommée 'Liste'.

Attention, VBA est très succeptible, ne pas confondre majuscule et minuscule, toute chaine de caractères se trouve entre guillemet (exemple les noms de feuilles, les messages...)
Un autre conseil: dans outils/options coches la case : déclaration des variables obligatoires: cela t'imposes d'utiliser Dim à chaque début de macro, tu dois voir un 'option explicit' écrit sur toutes tes nouvelles macros, pour les anciennes écris le à la main en haut de chaque feuille ou module.


A+
 

philw

XLDnaute Nouveau
Cooooool ! merci !

les choses s'éclaircissent pour moi, pauvre newbie que je suis !

bon, j'ai essayé ce code, en l'allégeant de ce que j'ai cru comprendre être des explications, mais pas simple, car en faisant un copier coller de ton message dans wordpad, ça garde pas le formatage, ça met tout en vrac ! je te dis pas pour retrouver ses petits ...

Donc, j'espère que je me suis pas trop planté, mais VBA me renvoi toujours une erreur sur une ligne pourtant pas compliquée, qu'il me semble avoir pigé ...

erreur-vba.jpg


l'image est pas super lisible, mais en l'enregistrant tu l'aura mieux, j'ai pas pu la mettre dans sa vrai taille dans ce message.

hormis ce problème, est-ce que j'ai rien oublié, effacé par erreur, ou laissé en trop ..?
Et est ce que on peut éventuellement enlever cette partie du code pour boycotter le message (comme si on disait que c'est Yes par défaut)

encore merci !

Phil
 

philw

XLDnaute Nouveau
re salut,

j'avance !

voici ce que j'arrive à faire ( ...!)

- je tape un nom dans une case
- je fais Enter
- je clique sur le bouton Rechercher sur lequel j'ai mis cette macro :

Sub recherche()
Dim cellule As Range
Dim MaPlage As Range
Dim MonMot As String
Dim MonMess

MonMot = Range('F2').Value
Set MaPlage = Range('A4:A65000')
For Each cellule In MaPlage
If cellule.Value = MonMot Then cellule.Select
Next
End Sub


- résultat, excel sélectionne la bonne cellule dans la feuille.
- je suis super content !!! B)

(j'ai donc boycotté la fenetre 'voulez vous continuer')

Ce que j'arrive pas :
- faire pareil mais avec le bouton sur une feuille DIFFERENTE de la feuille où se trouve le résutat de ma recherche, vba me renvoie toujours une erreur du genre 'la methode select de la classe range a échouée' ....
code utilisé :

Sub recherche()
Dim cellule As Range
Dim MaPlage As Range
Dim MonMot As String
Dim MonMess

MonMot = Sheets('STATS').range('F2').Value
Set MaPlage = Sheets('LISTE').range('A4:A65000')
For Each cellule In MaPlage
If cellule.Value = MonMot Then cellule.Select
Next
End Sub


où est l'erreur ...?

- éviter le bouton ! c a d exécuter cette action avec la touche Enter du clavier ... ça serait bien + simple ! mais peut on mettre une macro sur une touche du clavier et notament sur Enter ??? ou faut il que la cellule soit 'spéciale' pour que le Enter agisse comme ça ????

merci d'avance pour les pistes !

Phil
 

Discussions similaires

Réponses
93
Affichages
2 K

Statistiques des forums

Discussions
312 329
Messages
2 087 331
Membres
103 519
dernier inscrit
Thomas_grc11