A voir également:
- Changement de cellule si cellule contient 8 caractères
- Clé windows 8 - Guide
- Excel cellule couleur si condition texte - Guide
- Proteger cellule excel - Guide
- Si une cellule contient un mot alors ✓ - Forum Excel
- Changer de dns - Guide
6 réponses
Bonsoir
Voilà la modif
https://www.cjoint.com/c/ECfrhmJHRz9
Cdlt
Voilà la modif
https://www.cjoint.com/c/ECfrhmJHRz9
Cdlt
Bonjour Frenchie, bonjour tout le monde,
J'ajoute +100 au +100 de ThauTheme, se qui place la mise à plus de 200...
Une petite variante en complément de ta procédure, en utilisant une macro paramétrée. OnKey le permet en encadrant le nom et le paramètre de la macro de simple quote ' :
Ce qui nous donne :
Nota : Pour passer plusieurs paramètres à une macro paramétrée via Onkey, il convient de séparer les paramètres d'une virgule. Le premier paramètre n'est toutefois séparé du nom de la macro que par un espace. Toujours entouré le tout de '...
Exemple :
J'ajoute +100 au +100 de ThauTheme, se qui place la mise à plus de 200...
Une petite variante en complément de ta procédure, en utilisant une macro paramétrée. OnKey le permet en encadrant le nom et le paramètre de la macro de simple quote ' :
Application.OnKey "{48}", "'maMacro 48'"
Ce qui nous donne :
Sub auto_open() Dim i As Byte 'désactivation des touches du pavé alphanumérique For i = 48 To 57 Application.OnKey "{" & i & "}", "'Chiffre " & i & "'" Next 'désactivation des touches du pavé numérique For i = 96 To 105 Application.OnKey "{" & i & "}", "'Chiffre " & i & "'" Next End Sub Sub Chiffre(Num As Byte) If Len(ActiveCell) >= 8 Then Exit Sub 'Sécurité supplémentaire pour interdire de pouvoir taper un chiffre dans une cellule déjà pleine ActiveCell.Value = ActiveCell.Value & IIf(Num > 57, Chr(Num - 48), Chr(Num)) If Len(ActiveCell) >= 8 Then ActiveCell.Offset(1, 0).Select End Sub Sub Auto_close() Dim i As Byte 'désactivation des touches du pavé alphanumérique For i = 48 To 57 Application.OnKey "{" & i & "}" Next 'désactivation des touches du pavé numérique For i = 96 To 105 Application.OnKey "{" & i & "}" Next End Sub
Nota : Pour passer plusieurs paramètres à une macro paramétrée via Onkey, il convient de séparer les paramètres d'une virgule. Le premier paramètre n'est toutefois séparé du nom de la macro que par un espace. Toujours entouré le tout de '...
Exemple :
Dim i As Byte, p As Byte, q As Byte Application.OnKey "{48}", "'maMacro " & i & ", " & p & ", " & q & "'"
bonjour Hélène, bonjour le forum,
je crains que ce que tu demandes ne soit pas possible directement dans une cellule. Aucune action ne se fait tant que la cellule n'est pas validée...
je crains que ce que tu demandes ne soit pas possible directement dans une cellule. Aucune action ne se fait tant que la cellule n'est pas validée...
Bonsoir le fil, bonsoir le forum,
Écrit de mon propre sang, sur l'écran de mon PC : Frenchie m'a tué...
Je ne peux que mettre +1 mais ça mérite un +100 !
Écrit de mon propre sang, sur l'écran de mon PC : Frenchie m'a tué...
Je ne peux que mettre +1 mais ça mérite un +100 !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour
Un petit correctif qui annule et remplace le fichier précédent. (je ne désactivais pas toutes les touches à la fermeture).Voilà qui est fait.
https://www.cjoint.com/c/ECfdygIeYQz
cdlt
Un petit correctif qui annule et remplace le fichier précédent. (je ne désactivais pas toutes les touches à la fermeture).Voilà qui est fait.
https://www.cjoint.com/c/ECfdygIeYQz
cdlt
Bonjour Frenchie,
Merci pour ton aide !!! C'est vraiment super !!!!!
Ca va vraiment me changer la vie !!!!!
Pas contre, peux tu m'expliquer comment tu as fait?
A quoi sert l'activation / desactivation des touches ?
Et ça, c'est quoi ?
Sub Chiffre8()
ActiveCell.Value = ActiveCell.Value & "8"
Pourquoi ça ne marche pas si on met seulement :
Sub Deplacement()
If Len(ActiveCell) = 8 Then ActiveCell.Offset(1, 0).Select
Merci pour tes explications, j'essaye d'apprendre tout douvement le VBA.
Cdt,
Merci pour ton aide !!! C'est vraiment super !!!!!
Ca va vraiment me changer la vie !!!!!
Pas contre, peux tu m'expliquer comment tu as fait?
A quoi sert l'activation / desactivation des touches ?
Et ça, c'est quoi ?
Sub Chiffre8()
ActiveCell.Value = ActiveCell.Value & "8"
Pourquoi ça ne marche pas si on met seulement :
Sub Deplacement()
If Len(ActiveCell) = 8 Then ActiveCell.Offset(1, 0).Select
Merci pour tes explications, j'essaye d'apprendre tout douvement le VBA.
Cdt,
Bonjour
Activation:
Quand on frappe la touche correspondant au code entre parenthèse , on déclenche la macro entre guillemets. ex: .OnKey "{96}", "Chiffre0"
code 96 =0, donc quand action sur la touche 0 le programme va chercher la macro "Sub Chiffre0".
Toutes les touches choisies sont activées dès l'ouverture du fichier.
Que fait la macro "Sub Chiffre0" ?:
elle ajoute un 0 au précédent contenu de la cellule, et le tout est recopié dans la même cellule. c'est la ligne ActiveCell.Value = ActiveCell.Value & "0" qui traite cela.
Après tout ça, il faut vérifier si on a atteint les 8 caractères (c'est le rôle de la macro "Sub déplacement"). Si ce n'est pas le cas, on sort du programme, sinon on passe à la cellule suivante.
Pourquoi ça ne marche pas si on met seulement ?:
Sub Deplacement()
If Len(ActiveCell) = 8 Then ActiveCell.Offset(1, 0).Select
Parce qu'il faut un élément déclencheur, et le déclencheur c'est l'action précédente.
Désactivation:
En fin de programme, il est impératif de revenir au fonctionnement normal des touches (c'est à dire qui ne déclenche aucune action lors d'une frappe). Ceci se fait automatiquement à la fermeture du fichier.
Voilà, est-ce un peu plus clair?
Bonne journée
CDLT
Activation:
Quand on frappe la touche correspondant au code entre parenthèse , on déclenche la macro entre guillemets. ex: .OnKey "{96}", "Chiffre0"
code 96 =0, donc quand action sur la touche 0 le programme va chercher la macro "Sub Chiffre0".
Toutes les touches choisies sont activées dès l'ouverture du fichier.
Que fait la macro "Sub Chiffre0" ?:
elle ajoute un 0 au précédent contenu de la cellule, et le tout est recopié dans la même cellule. c'est la ligne ActiveCell.Value = ActiveCell.Value & "0" qui traite cela.
Après tout ça, il faut vérifier si on a atteint les 8 caractères (c'est le rôle de la macro "Sub déplacement"). Si ce n'est pas le cas, on sort du programme, sinon on passe à la cellule suivante.
Pourquoi ça ne marche pas si on met seulement ?:
Sub Deplacement()
If Len(ActiveCell) = 8 Then ActiveCell.Offset(1, 0).Select
Parce qu'il faut un élément déclencheur, et le déclencheur c'est l'action précédente.
Désactivation:
En fin de programme, il est impératif de revenir au fonctionnement normal des touches (c'est à dire qui ne déclenche aucune action lors d'une frappe). Ceci se fait automatiquement à la fermeture du fichier.
Voilà, est-ce un peu plus clair?
Bonne journée
CDLT
Merci pour tes explications, c'est trés clair.
Par contre juste un dernier point : j'ai remarqué que la macro ne fonctionne qu'avec le pavé numérique. ( codes clavier de 96 à 105 si j'ai bien compris) comment puis je changer cela pour que cela fonctionne avec les chiffres au dessus du clavier. MAJ+& pour le 1 par exemple.
Merci bcp,
Par contre juste un dernier point : j'ai remarqué que la macro ne fonctionne qu'avec le pavé numérique. ( codes clavier de 96 à 105 si j'ai bien compris) comment puis je changer cela pour que cela fonctionne avec les chiffres au dessus du clavier. MAJ+& pour le 1 par exemple.
Merci bcp,