Bonjour à tous,
Comment détecter par une macro le fait de cliquer dans une céllule ?
Merci d'avance.:
Bonjour à tous,
Comment détecter par une macro le fait de cliquer dans une céllule ?
Merci d'avance.:
Bonjour!
Tu n'as rien à faire, ou presque. Utilise l'un des événements "Change" ou "SelectionChange" de la feuille où tu te trouves. Fais des essais pour voir celui qui convient le mieux à ce que tu veux faire.
Ensuite, avec "Target", tu peux tester la position.
Et dans cet événement, tu mets le code de c que tu veux faire, ou tu appelles une macro...
Pour compléter ce que met Megaxel, le code est à placer dans la feuille de code de la feuille de calcul (accès par deux clics sur le nom de la feuille dans VBEditor)
A toutes fins utiles (si tu ne le savais pas déjà)
A+
J'ai essayé ça, mais pas concluant !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Sub Worksheet_change(ByVal Target As Range) If Target = B7 Then MsgBox "ok" End Sub![]()
Hey, ho!! Fémur!!!
Regarde ce que t'a écrit Ouskel'n'or: c'est dans le code de la FEUILLE qu'il faut chercher l'événement "SelectionChange", pas dans le code du classeur...
En plus, pour ton code "test", Target est une cellule!!
Donc il faut regarder son adresse:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$B$7" Then MsgBox ("Hello!") End Sub
Tu sais ce qu'y te dit le FEMUR !!!
J'avais bien mis le code dans la feuille qui m'intéressait et pas dans le classeur.
Mais je n'avais pas effectivement regarder l'adresse.
Maintenant ça marche.
A pouet.
Je vais mettre![]()
T'as de belles dents quand tu t'énerves!!
Et en plus, ça te rend efficace!! Alors tout le monde est content!!
![]()
C'était de l'humour, bien sûr, mais vous aviez tous compris !
Megaxel >> Avec ta formule, ça marche comme sur des roulettes, mais j'ai maintenant un autre problème.
Suite à un clik dans une cellule (donc ça c'est bon), j'aimerais afficher une certaine plage de cellules à gauche de l'écran, puis me positionner directement dans la même plage de cellule une colonne à droite, dans la dernière cellule vide pour y saisir des données:
J'ai donc tester le code suivant :
J'arrive bien dans la dernière cellule vide mais je naffiche plus la plage A5:A40 car Excel déplace la feuille, et je n'en vois plus qu'une partie !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' Affichage zonde de saise TPC Ø160 If Target.Address = "$C$1" Then Range("A5:A40").Select Range("B40").End(xlUp).Select ActiveCell.Offset(rowoffset:=1, columnOffset:=0).Activate End If Ens Sub
C'est quoi le problème ?![]()
Je ne suis pas sûr de bien comprendre le problème, mais est-ce que la fonction "Figer les volets" dans le menu "Fenêtre" d'Excel permet de répondre à ta question?
Si oui, fais le en enregistrant une macro, et adapte le code à ton cas.
PS: Il me semblait bien que tu plaisantais, sinon, ma réponse n'aurait pas contenu de smiley...
![]()
les quatres premières lignes de ma feuille sont déja figées, car elles affichent les cellules qui me servent en quelque sorte de boutons.
En résumé, c'est un tableau qui comporte plusieurs zones de saisie de formats identiques, et je voudrais qu'en cliquant sur une de ces cellules, je puisse arriver directement dans la premère cellule vide de la zone de saisie qui m'intérresse, le tout en plein écran.
Mes zones de saisie ont juste le format adéquat pour être afficher totalement sous mes quatres premières lignes figées.
J'avais réussi avec un simple lien hypertexte, a afficher tout ce que je voulais correctement, mais dés que j'utilise une macro pour activer la dernière cellule vide, la feuille est déplacée, et je ne sais pas pourquoi ?![]()
Mais qu'est-ce que tu veux y faire, dans cette cellule? Si tu as besoin de la voir, je ne vois pas comment tu peux t'en sortir, et c'est normal que la feuille bouge.
Si tu veux seulement écrire dedans, alors ne la sélectionne pas, et ne l'active pas. Ecris simplement:
Code : Sélectionner tout - Visualiser dans une fenêtre à part Range("B40").End(xlUp).Offset(1, 0).Value = "BlaBlaBla"
Dans la cellule vide?
Je veux rentrer des données par le clavier !
si tu tiens vraiment à saisir par le clavier, tout en voyant... tout : utilise alors "ActiveWindow.Zoom = ce_que_tu_veux"
Mais je ne vois personnellement pas l'intérêt !
Salut,
Et si tu passais par une InputBox ! tu récupères dans une variable ce que tu veux saisir et puis tu la balance dans ta cellule que tu vois pas .
Enfin juste une idée comme ça![]()
Igloobel
ou achète un écran plus grand![]()
pardon, je suis malade, ça me fait délirer![]()
![]()
entre autres , par exemple...Et si tu passais par une InputBox ! tu récupères dans une variable ce que tu veux saisir et puis tu la balance dans ta cellule que tu vois pas .
tu peux également utiliser une cellule "tremplin" inutilisée pour écrire ensuite dans la cellule que tu veux et effacer ensuite la cellule tremplin...
Mais on s'écarte une fois de plus du développement pur pour arriver à la mise en place d'astuces en tous genres (et ce sont d'ailleurs ces astuces qui mettent en exergue les agilités d'esprit..). Mais bon....
Un écran plus grand, dit Thierry ! c'est une bonne idée, pourquoi pas ? N'oublie pas, dans ce cas, de choisir la bonne résolution... sinon... bis repetita...
C'est une boutade marquésienne.... à excuser ...
et... quid en basculant un peu l'écran (en relevant le côté gauche ?)
C'est une autre boutade .... à excuser également ...![]()
L'inputbox est évidement la solution et c'est en prévision, mais mon projet est pleine évolution, et je voudrais trouver une solution provisoire.
Ca me permet par la même occasion de comprendre pas mal de choses.
En résument simplement, je voudrais qu'en cliquant dans une cellule quelquonque, je puisse afficher à gauche de l'écran une certaine plage de cellules(par exemple A540), et séléctionner le première cellule vide de la colonne B pour y saisir des données via le clavier
:
Voila le code
As-tu essayé en fractionnant ta feuille
Tu peux vérifier en enregistrant une macro et en faisant ce que tu souhaites...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 With ActiveWindow .SplitColumn = 13 .SplitRow = 12 End With
Des fois que ça marche...![]()
A+
Partager