[VBA Excel] Valeur de cellule par simple sélection de case

Résolu
t2b2t Messages postés 6 Date d'inscription vendredi 11 décembre 2009 Statut Membre Dernière intervention 20 décembre 2009 - 11 déc. 2009 à 19:12
t2b2t Messages postés 6 Date d'inscription vendredi 11 décembre 2009 Statut Membre Dernière intervention 20 décembre 2009 - 20 déc. 2009 à 16:28
Bonjour,


Je débute en VBA, et j'aurais aimé créer une macro me permettant de déterminer la valeur d'une cellule par simple clic sur une autre cellule, contenant une valeur texte ici.

Pour résumer, j'ai envie que quand je clique (ou sélectionne) une cellule d'une colonne bien précise, que la valeur de cette cellule s'affiche dans une autre cellule. Cela signifie que quand je clique sur la cellule d'en-dessous c'est la valeur de la cellule d'en-dessous qui s'affiche.

Je voudrais que cela marche uniquement pour une colonne précise (voire deux colonnes maxi) et non pour toutes les cellules de la feuille.


J'espère avoir été clair, si ce n'est pas le cas demandez-moi d'expliciter. En espérant que les suggestions seront nombreuses.

10 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 déc. 2009 à 15:50
C'est fort clair (et cela marche fort bien .... testé à l'instant bien que non nécessaire !)
Quel est ton problème ?
Cela implique que tu passe d'une cellule quelconque à une autre cellule de la colonne B. Si cette cellule contient "bonjour", "bonjour apparaîtra bien en ccellule J12 (pardi)
Ne serais-tu par par hasard (seule explication plausible) resté en mode création ?


____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 déc. 2009 à 21:04
Bonjour,

l'évènement click n'existe pas pour une cellule.
Existe par contre l'évènement SelectionChange d'une feuille et ce dernier se déclenche chaque fois que l'on active une nouvelle cellule.
C'est donc dans cet évènement que tu dois mettre tes instructions, que tu peux subordonner à la réunion de certaines conditions, en utilisant le paramètre Target (qui représente la cellule). Dans ton cas, la propriété Column de l'objet Target devrait être utilisée pour savoir si la cellule appartient à une colonne telle que tes instructions devraient être exécutées.
Voilà la base de travail.
Reviens avec ton code d'essai si tu n'y parviens pas avec ces éléments faciles à comprendre.

____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
[color=red]Cliquer sur le bouton "Réponse acceptée" (en bas d'une solution qui s'avère efficace) permet à d'autres forumeurs de mieux
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 déc. 2009 à 21:11
Allez va (pour un vendredi soir...)
exemple :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Target.Column = 2 Then MsgBox "t'as cliqué sur une cellule de la colonne B"
End Sub

Tu n'auras un affichage de cette msgbox qu'en cliquant sur une cellule de la colonne B
A toi de remplacer la msgbox par les instructions que tu veux...
____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
[color=red]Cliquer sur le bouton "Réponse acceptée" (en bas d'une solution qui s'avère efficace) permet à d'autres forumeurs de mieux
0
t2b2t Messages postés 6 Date d'inscription vendredi 11 décembre 2009 Statut Membre Dernière intervention 20 décembre 2009
14 déc. 2009 à 20:43
Bonjour,


Avant tout merci pour vos réponses très rapides, ça m'aide à avancer. Seulement j'ai un problème.

Voici le code qui m'intéresse, je ne sais pas si la syntaxe est bonne :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Target.Column 2 Then Range("J12").Value Target.Value
End Sub


Or d'une part je ne sais pas si ce code est bon, et d'autre part pour faire tourner la macro, il me demande de l'enregistrer, et je mets donc le nom "Worksheet_SelectionChange". Cependant on me dit que c'est déjà utilisé dans la bibliothèque, donc je ne peux pas l'enregistrer sous ce nom. Et si je change de nom la syntaxe ne marche plus.

Désolé pour ces questions un peu stupides, mais je suis un novice.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
14 déc. 2009 à 20:54
Bon...
1) les évènements (et leurs sub) concernant une feuille sont gérés par Excel.
Tu as à (successivement) :
- cliquer sur l'onglet développeur
- cliquer sur Visual Basic
- cliquer (dans la fenêtre dfe ton projet) sur la feuille de ton choix
- y choisir ton évènement (dans la parie droite) et y coller ton code.

Mais c'est là le B.A.BA de l'utilisation de VBA/Excel, ami ... es-tu certain de ne pas vouloir mettre la charrue avant les boeufs (= te lancer à développer sans même connaître l'IDE de VBA ?) ?


____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
0
t2b2t Messages postés 6 Date d'inscription vendredi 11 décembre 2009 Statut Membre Dernière intervention 20 décembre 2009
14 déc. 2009 à 21:07
Possible, car il est vrai qu'avant je me servais uniquement de l'enregistreur de macro. Je ne connais pas très bien VBE pour ce qui est de créer son propre code.

Peut-être en effet devrais-je commencer par apprivoiser l'interface.

Je fais ça et si j'ai un problème je reviens vous voir.

Encore merci.
0
t2b2t Messages postés 6 Date d'inscription vendredi 11 décembre 2009 Statut Membre Dernière intervention 20 décembre 2009
20 déc. 2009 à 14:50
Re-bonjour,


Désolé je suis toujours bloqué, mais cette fois c'est différent, car j'ai compris mon erreur.

Je me suis mal exprimé la dernière fois, car en réalité c'est une erreur de compréhension de ma part, ayant déjà utilisé des macros avec des boutons de déclenchement des évènements, je me suis laissé piéger par ça. En effet, j'essayais de faire tourner la macro en cliquant sur le bouton de lecture, ce qui m'obligeait à nommer ma procédure dans un module, et vu que je ne savais pas comment appeler la procédure... Donc j'ai compris qu'ils s'agissait d'évènements se produisant automatiquement et que le bouton lecture ne servait qu'à faire tourner des évènements non automatiques.

Donc le souci désormais est qu'en mettant mon code et en cliquant sur une cellule de la colonne 2, rien ne se passe. J'ai même recopié le code d'ucfoutu avec la MsgBox mais rien se passe non plus.

Est-ce que qqn peut me dire si mon code et valable et pourquoi rien se passe ?


A bientôt
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 déc. 2009 à 15:00
Montre donc ce code... en nous précisant où tu l'as mis exactement.

Je te précise qu'il doit être écrit ici et ainsi :
1) en mode développeur ===>> visdual Basi ===>> : double clicl sur la feuille concernée, dans la fenêtre VbaProjects
2) dans la colonne de gauche : chois de ta Worksheet ===>>> évènement selectionChange ===>> c'est là, que ton code doit être inclus.
____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
0
t2b2t Messages postés 6 Date d'inscription vendredi 11 décembre 2009 Statut Membre Dernière intervention 20 décembre 2009
20 déc. 2009 à 15:23
Je pense que ça sera plus clair comme ça :
Lien vers capture d'écran
0
t2b2t Messages postés 6 Date d'inscription vendredi 11 décembre 2009 Statut Membre Dernière intervention 20 décembre 2009
20 déc. 2009 à 16:28
En effet, j'ai désactivé le mode création et ça marche, je te remercie.

Pour ce qui est de l'utilité, c'est juste que pour l'instant cette solution m'évite de rentrer dans un code VB.NET trop compliqué et que je n'ai pas le niveau pour le faire. Donc je me sers de cette macro et des formules d'Excel pour le moment, le temps de pouvoir l'améliorer.

Encore merci.
0
Rejoignez-nous