XL 2016 Excel code vba motus

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

papychat1

XLDnaute Nouveau
Supporter XLD
Bonjour
Pour faire suite à mon message précédent
où j'ai reçu l'aide précieuse de jurassic pork.
Je reviens j'éssaye de mettre un clavier sur le jeu motus à partir d'un userform
Donc 26 boutons je viens d'essayer le premier mais j'aimerais si possible que quelqu'un essaye de le synthétisé:

  • [/CODE]
  • Private Sub CommandButton1_Click()
    'Sub AjouterLettreA()
    Dim ws As Worksheet
    Dim ligneActive As Long
    Dim colonneDerniere As Long
    Dim colonneSuivante As Long

    Set ws = ThisWorkbook.Sheets(1) ' Feuille active
    ligneActive = ActiveCell.Row ' Ligne de la cellule active

    ' Trouver la dernière colonne non vide sur la ligne active
    colonneDerniere = ws.Cells(ligneActive, ws.Columns.Count).End(xlToLeft).Column

    ' Déterminer la colonne suivante
    colonneSuivante = colonneDerniere + 1

    ' Vérifier si la cellule précédente contient une valeur
    If ws.Cells(ligneActive, colonneDerniere).Value <> "" And ws.Cells(ligneActive, colonneSuivante).Value = "" Then
    ws.Cells(ligneActive, colonneSuivante).Value = "A" ' Ajouter la lettre A
    ws.Cells(ligneActive, colonneSuivante).Select ' Déplacer la sélection
    ElseIf ws.Cells(ligneActive, colonneDerniere).Value = "" Then
    MsgBox "La cellule précédente est vide. Veuillez saisir une lettre avant.", vbExclamation
    Else
    MsgBox "La cellule suivante contient déjà une valeur.", vbExclamation
    ws.Cells(ligneActive, colonneSuivante).Select ' Déplacer la sélection quand même
    End If
    End Sub

  • Par avance merci
  • Bien cordialement
  • JML
 
Bonjour pppychat,
Pas bien compris la demande.
En PJ un essai.
Quand on clique dans une cellule bleu un userform apparait avec un clavier et cela insère la lettre choisie.
Mais je ne gère pas le reste ( déplacement, vérification ... ), juste le userform et l'insertion de lettres.
 

Pièces jointes

Bonjour pppychat,
Pas bien compris la demande.
En PJ un essai.
Quand on clique dans une cellule bleu un userform apparait avec un clavier et cela insère la lettre choisie.
Mais je ne gère pas le reste ( déplacement, vérification ... ), juste le userform et l'insertion de lettres.
Bonjour sylvanu,
merci de t'intéresser à ma demande.
Je n'ai effectivement pas joint de fichier
En fait j'ai dans un premier temps avec vos aide mis en place un jeu de motus.
Là sur un autre fichier j'essaye de réaliser un clavier afin de manière à l'utiliser pour insérer des lettres.
Je joints les deux:
https://www.cjoint.com/c/OACnTqbfgE5
Ainsi tu pourras réunir les deux et voir davantage ma demande
Encore merci c'est sympa de trouver des personnes qui viennent en aide.
Bonne journée
JML
 

Pièces jointes

Hello Sylvanu,
pour l'ergonomie voilà comment je vois la chose :
Le clavier est toujours apparent mais on peut le fermer et il réapparaît si on clique sur une cellule à remplir (ligne en cours).
Pour le déplacement, à partir du moment où l'on doit rentrer un mot sur une ligne dès qu'on a cliqué sur une lettre on passe dans la case à droite ou dans la première cellule non remplie.
Rajouter sur le clavier une flèche droite et gauche pour pouvoir se déplacer sur la ligne sans cliquer dans une cellule (cas où il y a déjà des lettres affichées).
Qu'en pense PapyChat1 ?

Ami calmant, J.P
 
Dernière édition:
Mais comment avez vous fait pour insérer ce clavier et qu'il soit fonctionnel
Tout est dans la macro Worksheet_SelectionChange.
On regarde si le clic est en A1:I6 pour la partie jeu, ou dans la partie A13:I15 si le clic est sur le clavier.
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Fin
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("A1:I6")) Is Nothing Then
        cellule = Target.Address
    ElseIf Not Intersect(Target, Range("A13:I15")) Is Nothing Then
        If cellule <> "" Then Range(cellule) = Target
        Range(cellule).Select
    End If
Fin:
End Sub
 
Tout est dans la macro Worksheet_SelectionChange.
On regarde si le clic est en A1:I6 pour la partie jeu, ou dans la partie A13:I15 si le clic est sur le clavier.
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Fin
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("A1:I6")) Is Nothing Then
        cellule = Target.Address
    ElseIf Not Intersect(Target, Range("A13:I15")) Is Nothing Then
        If cellule <> "" Then Range(cellule) = Target
        Range(cellule).Select
    End If
Fin:
End Sub
D'accord ça j'avais compris, c'est comment faire apparaitre le clavier?
 
Hello Sylvanu,
pour l'ergonomie voilà comment je vois la chose :
Le clavier est toujours apparent mais on peut le fermer et il réapparaît si on clique sur une cellule à remplir (ligne en cours).
Pour le déplacement, à partir du moment où l'on doit rentrer un mot sur une ligne dès qu'on a cliqué sur une lettre on passe dans la case à droite ou dans la première cellule non remplie.
Rajouter sur le clavier une flèche droite et gauche pour pouvoir se déplacer sur la ligne sans cliquer dans une cellule (cas où il y a déjà des lettres affichées).
Qu'en pense PapyChat1 ?

Ami calmant, J.P
Bonjour, merci pour votre retour!
Je n'avais pas vu votre réponse, oui pour les flèches mais je voulais simplement savoir si le code que j'ai rentré pouvait être simplifié.
Merci bonne journée, vous m'avez déjà fait découvrir plein de choses
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
0
Affichages
367
Réponses
1
Affichages
453
Réponses
2
Affichages
691
  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
774
Réponses
2
Affichages
372
Retour