Choisir cellule avec souris

Résolu/Fermé
Pierre3499 Messages postés 201 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 23 avril 2016 - 26 mars 2016 à 02:05
Pierre3499 Messages postés 201 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 23 avril 2016 - 23 avril 2016 à 11:40
Bonjour,

je débute sous VBA, j'ai fait des petits jeux sous vba dont puissance 4. qui tourne très bien en utilisant le clavier commande : x = Application.InputBox("choisir la colonne", Type:=1) je voudrais savoir comment je peux remplacer cette commande (attente chiffre clavier) par la souris (attente sélection bas de colonne).

j'ai fait ça dans le worksheet :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
do
If Target = Range("c11") Then
x = 1
End If
....
If Target = Range("i11") Then
x = 7
End If
loop until x<>0

Range("c13") = x ' afficher valeur de x
End Sub

la fonction "do...until" c'est pour forcer le choix à ces cellules et aucune autre. mais je peux le faire dans la macro principale

mais j'arrive pas à l' intégrer/interagir/appeler/activer dans la macro principale

Ma question comment je fais pour appeler ce sous programme au moment voulu.
quelque chose m'échappe j'arrive à appeler un autre "sous prog" tout con (MsgBox "test réussi"), mais pas celui là.

Merci d'avance à celui qui arrivera à m'aider. ce là me permettra d’optimiser mes jeux et faire d'autre (morpion plus rapide à la souris que rentré coordonnée) ;-)

A voir également:

4 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 26/03/2016 à 07:35
Bonjour,
Sans la macro principale et ou le classeur, on ne peut rien faire !

en attendant petite simplification du code événementiel
Option Explicit
'------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("C11:I11")) Is Nothing Then Range("C13") = Target.Column - 2
End Sub


 Michel
0
Pierre3499 Messages postés 201 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 23 avril 2016 8
Modifié par Pierre3499 le 26/03/2016 à 14:59
ok merci de votre réponse
bon j'ai réussi à appeler la sous macro mais j'ai pas le temps de sélectionner case souhaiter à ce moment là
il faut que je définisse à tout prix x c'est pas le cas pour le moment

Macro de test si ça elle fonctionne là je l’insère à la place
x = Application.InputBox("choisir la colonne", Type:=1)


Sub jeuxP4calculb()
MsgBox "c parti"
x = 0

Do
Call Worksheet_SelectionChange(Range("c11:i11"))

Range("c12") = "" 'pour me prévenir que je suis de retour dans la macro principale

MsgBox "choix fait" 'là pour me permettre d'arrêter la boucle en cas de soucis

x = range("c13")

'vérification que x compris 1 et 7
For i = 1 To 7
If x = i Then
MsgBox "x : " & x
End If
Next i

Loop Until x <> 0

End Sub




Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Range("c12") = "ATTENTE choix"
If Not Intersect(Target, Range("C11:I11")) Is Nothing Then Range("C13") = Target.Column - 2

End Sub



j'espere que ça va vous aider, et j'espère que vous arriveriez à trouver le hic


PS qd la macro principal ne tourne pas le sous prog fonctionne nickel ! ! ! merci de votre astuce
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
27 mars 2016 à 09:11
Bonjour

"selectionchange":
macro dite "événementielle" qui se déclenche quand on clique sur une cellule et doit être installée dans le module feuille concerné...

donc
Call Worksheet_SelectionChange(Range("c11:i11")) est faux avec le call et le param^tre C11:E11 est fantaisiste à souhait

Quand tu ne connais pas un truc, tu fais une petite maquette sur un nouveau classeur, tu fais un copier de ce que je t'ai donné, clic droit sur le nom d'onglet -visualiser le code- coller
si tu as fait la manip sur feuil1 dans l"editeur vba la macro se trouve dans le module feuil1...


tu fais un essai et tu regardes ce que ca donne et si ca correspond à ce que tu veux faire: on a tous fait ça et on continue de le faire !


Pour toi, 1° chose à faire
pour apprendre VBA
https://excel.developpez.com/cours/?page=prog#environnement
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
30 mars 2016 à 09:12
Bonjour,

Bonjour Michel,
Excuse l'incruste.

Pour sélectionner une cellule "à la souris", tu peux également voir du côté de la méthode Application.InputBox. Voir ICI.

Un exemple pour toi :
    Sub Principale()
    Dim maColonn As Integer
    
        maColonn = Choix_Colonne
        If maColonn > 0 Then
            MsgBox "Vous avez choisi la colonne : " & maColonn
        Else
            MsgBox "Erreur de sélection"
        End If
    End Sub
    
    Private Function Choix_Colonne() As Integer
    Dim Col As Integer, Cell_Cliquee As Range
    
        On Error GoTo Fin
        Set Cell_Cliquee = Application.InputBox("Sélectionnez une colonne", "Sélection", Type:=8)
        On Error GoTo 0
        If Cell_Cliquee.Columns.Count > 1 Then GoTo Fin
        Choix_Colonne = Cell_Cliquee.Column
        Exit Function
Fin:
        Choix_Colonne = 0
    End Function

0
Pierre3499 Messages postés 201 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 23 avril 2016 8
Modifié par Pierre3499 le 15/04/2016 à 17:30
dslé de mon silence soucis pc.
merci de venir apporter votre aide,
effectivement c'est une solution de secours: ce n'était pas tout à fait ça que je voulais,
J'aurais voulu un peu plus automatisé comme me proposer Michel je clique et il y a une action, là il y a un ok à faire en plus(.... mais ça me permet d'être sur du coup joué.... )

Mais ça fonctionne bien et ça ne perturbe pas ce que j'ai déjà écrit .
Merci Pijaku
0
Pierre3499 Messages postés 201 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 23 avril 2016 8
Modifié par Pierre3499 le 15/04/2016 à 22:28
est ce que c'est possible de récupérer coordonnées (colonne et ligne)d'un clic souris
colonne et ligne. c'est pour un autre jeux j'ai besoin de x et y
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751 > Pierre3499 Messages postés 201 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 23 avril 2016
19 avril 2016 à 13:06
Bonjour,

Pas très difficile, tu avais les bases au-dessus :

Option Explicit

Dim Col As Integer, Lig As Integer

    Sub Principale()
    Dim Choix_Cell As Boolean
    
        Choix_Cell = Click_Cellule
        If Choix_Cell = True Then
            MsgBox "Vous avez choisi la cellule : Cells(" & Lig & ", " & Col & ")"
        Else
            MsgBox "Erreur de sélection"
        End If
    End Sub
    
    Private Function Click_Cellule() As Boolean
    Dim Cell_Cliquee As Range
    
        On Error GoTo Fin
        Set Cell_Cliquee = Application.InputBox("Sélectionnez une cellule", "Sélection", Type:=8)
        On Error GoTo 0
        If Cell_Cliquee.Columns.Count > 1 Or Cell_Cliquee.Rows.Count > 1 Then GoTo Fin
        Col = Cell_Cliquee.Column
        Lig = Cell_Cliquee.Row
        Click_Cellule = True
        Exit Function
Fin:
        Click_Cellule = False
    End Function
0
Pierre3499 Messages postés 201 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 23 avril 2016 8
23 avril 2016 à 03:37
Merci de votre reponse.
Après soucis PC j'ai soucis internet enfin bref
J'ai réussi de façon détourné
Mais je vais réutiliser votre solution pour que ça soit moins bancale, plus présentable.
Avec vos deux solutions la vôtre et celle de Michel j'ai pu optimiser mes jeux en cours et même créer de nouveaux jeux.

J'aurai une Autre question
Il y a t il une fonction pour reconnaître les touches Directionnelles / pavé numérique/ espace/.../ crtl
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
23 avril 2016 à 09:50
Bonjour,

Il aurait été + efficace de lancer une autre discussion, la question n'ayant rien à voir avec celle ci....

je ne suis pas l'auteur de ce pdf sur les sendkeys
http://www.cjoint.com/c/FDxhYhEjyRt
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
23 avril 2016 à 10:18
Salut.
En effet, il convient de poser la question sur un nouveau sujet.
J'ajouterai que ça manque de précision. En effet, cela dépend de l'objet à partir duquel tu souhaites intercepter l'appui sur une touche. C'est très simple si cet objet est un contrôle, plus délicat s'il s'agit d'un Range, WorkSheet ou WorkBook...
Donc : nouveau sujet, plus détaillé stp.
j'ajouterai également de revenir plus souvent, et pas que quand tu as un autre souci...

--
0
Pierre3499 Messages postés 201 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 23 avril 2016 8
Modifié par Pierre3499 le 23/04/2016 à 11:55
OK merci de vos aides . une une fois que j'aurais mieux cerné ce que je souhaite faire je créerai un nouveau post.

J'ai pas compris Pijaku : j'ajouterai également de revenir plus souvent, et pas que quand tu as un autre soucis ....

J'ai laissé ce post car je n'avais pas trouvé de solution sur d'autre forum. Mais grâce à vous je commence à comprendre les différents type de private , ainsi que récupéré des infos à partir des range

PS : je fais ça en loisir donc effectivement par moment je ne programme plus et je dois laisser à contre coeur la programmation car j'ai d'autre priorité.
Je viens d'installer l'apli ccm au moins je serais au courant des réponses à mes posts.

Merci encore de vos aide
0