IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA-E] Détecter la séléction d'une céllule


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 39
    Par défaut [VBA-E] Détecter la séléction d'une céllule
    Bonjour à tous,
    Comment détecter par une macro le fait de cliquer dans une céllule ?
    Merci d'avance. :

  2. #2
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    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...

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    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+

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 39
    Par défaut
    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

  5. #5
    Expert confirmé
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Par défaut
    SelectionChange

  6. #6
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    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...

  7. #7
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    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

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 39
    Par défaut
    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

  9. #9
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    T'as de belles dents quand tu t'énerves!!
    Et en plus, ça te rend efficace!! Alors tout le monde est content!!

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 39
    Par défaut
    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 :
    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
    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 !!
    C'est quoi le problème ?

  11. #11
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    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...

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 39
    Par défaut
    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 ?

  13. #13
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    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"

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 39
    Par défaut
    Dans la cellule vide?
    Je veux rentrer des données par le clavier !

  15. #15
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    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 !

  16. #16
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    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

  17. #17
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    ou achète un écran plus grand

    pardon, je suis malade, ça me fait délirer

  18. #18
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    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 .
    entre autres , par exemple...
    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 ...

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 39
    Par défaut
    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

  20. #20
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    As-tu essayé en fractionnant ta feuille

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        With ActiveWindow
            .SplitColumn = 13
            .SplitRow = 12
        End With
    Tu peux vérifier en enregistrant une macro et en faisant ce que tu souhaites...
    Des fois que ça marche...

    A+

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [VBA Access] couleur de remplissage d'une céllule Excel
    Par 57Steph dans le forum VBA Access
    Réponses: 2
    Dernier message: 16/07/2007, 13h13
  2. [VBA Excel] détecter une cellule commençant par apostrophe par macro
    Par yridwenn dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/01/2007, 17h35
  3. [Servlet] Comment détecter la fin d'une session HTTP
    Par cocula dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 18/04/2005, 17h27
  4. Détecter le lancement d'une application
    Par Neilos dans le forum Windows
    Réponses: 8
    Dernier message: 22/11/2004, 12h32
  5. Comment détecter la frappe d'une touche ?
    Par Bubonik software dans le forum C
    Réponses: 17
    Dernier message: 11/12/2003, 21h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo