Insertion de texte avec Excel VBA
mic13710
Messages postés
1165
Date d'inscription
Statut
Membre
Dernière intervention
-
Le Pingou Messages postés 12713 Date d'inscription Statut Contributeur Dernière intervention -
Le Pingou Messages postés 12713 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
J'ai un tableau comportant des cellules de textes.
Je suis souvent amené à éditer ces cellules pour y inclure un ou plusieurs caractères d'une police différente, ce que je fais actuellement avec Insertion/Caractères Spéciaux ou Insertion/Symboles selon la version d'Excel.
Je souhaiterais pouvoir automatiser ces insertions à l'aide de boutons ou de combinaisons de touches associés à des macros pour éviter d'avoir à passer par les menus. Et là, je coince et je n'ai pas l'ombre d'un début de piste pour écrire le code correspondant.
J'ai beau chercher et je ne trouve rien pour avancer dans mon projet.
L'enregistreur de macro ne me donne pas un résultat satisfaisant qui me permettrait de construire quelque chose.
Ce code doit bien entendu n'être opérationnel que lorsque la cellule est en mode édition, et il doit insérer le caractère choisi à l'emplacement du curseur. Bref, ça n'est pas si simple pour un presque ancien débutant en vba comme moi.
Merci d'avance à ceux qui pourront m'aider.
J'ai un tableau comportant des cellules de textes.
Je suis souvent amené à éditer ces cellules pour y inclure un ou plusieurs caractères d'une police différente, ce que je fais actuellement avec Insertion/Caractères Spéciaux ou Insertion/Symboles selon la version d'Excel.
Je souhaiterais pouvoir automatiser ces insertions à l'aide de boutons ou de combinaisons de touches associés à des macros pour éviter d'avoir à passer par les menus. Et là, je coince et je n'ai pas l'ombre d'un début de piste pour écrire le code correspondant.
J'ai beau chercher et je ne trouve rien pour avancer dans mon projet.
L'enregistreur de macro ne me donne pas un résultat satisfaisant qui me permettrait de construire quelque chose.
Ce code doit bien entendu n'être opérationnel que lorsque la cellule est en mode édition, et il doit insérer le caractère choisi à l'emplacement du curseur. Bref, ça n'est pas si simple pour un presque ancien débutant en vba comme moi.
Merci d'avance à ceux qui pourront m'aider.
A voir également:
- Insertion de texte avec Excel VBA
- Liste déroulante excel - Guide
- Excel cellule couleur si condition texte - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
6 réponses
Salut Le Pingou,
J'ai ça avec l'enregistreur macro (j'ai enlevé le texte qui ne présente aucun intérêt ici):
En fait, la macro n'enregistre que l'édition du texte et les polices de caractères des différentes zones (ici Arial pour l'ensemble du texte et un caractère Webdings à la position 23).
Je pense qu'il faut utiliser la partie de code pour le caractère ajouté soit :
J'ai ça avec l'enregistreur macro (j'ai enlevé le texte qui ne présente aucun intérêt ici):
Sub Macro1()
'
' Macro1 Macro
'
Range("G6").Select
ActiveCell.FormulaR1C1 = "xxxxxxxxxxxxxxxxxxxxx (mon texte) xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx."
With ActiveCell.Characters(Start:=1, Length:=22).Font
.Name = "Arial"
.FontStyle = "Normal"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
With ActiveCell.Characters(Start:=23, Length:=1).Font
.Name = "Webdings"
.FontStyle = "Normal"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
With ActiveCell.Characters(Start:=24, Length:=133).Font
.Name = "Arial"
.FontStyle = "Normal"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
Range("G7").Select
End Sub
En fait, la macro n'enregistre que l'édition du texte et les polices de caractères des différentes zones (ici Arial pour l'ensemble du texte et un caractère Webdings à la position 23).
Je pense qu'il faut utiliser la partie de code pour le caractère ajouté soit :
ActiveCell.Characters(Start:=xx, Length:=1).Font.Name = "Webdings"
mais je ne vois pas comment je peux faire pour détecter la position du pointeur (xx) dans le texte afin de définir le start, et surtout quelle instruction je dois mettre pour insérer le caractère choisi.
Bonjour,
Merci pour l'information.
J'admets que le pointeur de la souris se trouve à l'endroit de l'insertion dans le texte ... est-ce correct ?
Merci pour l'information.
J'admets que le pointeur de la souris se trouve à l'endroit de l'insertion dans le texte ... est-ce correct ?
bonjour
Une bidouille +/- foireuse
à l'endroit voulu avec le curseur, tu mets un caractère peu commun comme "¤" et tu valides
tu peux donc trouver la (ou les) position(s) de ce caractère et changer la police par la méthode "characters"
à la fin de la macro tu fais un "replace" "¤" par ""
ca devrait pouvoir se faire par fonction
bon courage quand même! ;o)
Une bidouille +/- foireuse
à l'endroit voulu avec le curseur, tu mets un caractère peu commun comme "¤" et tu valides
tu peux donc trouver la (ou les) position(s) de ce caractère et changer la police par la méthode "characters"
à la fin de la macro tu fais un "replace" "¤" par ""
ca devrait pouvoir se faire par fonction
bon courage quand même! ;o)
Bonjour,
Je souhaite être contredit mais je doute de la faisabilité d'un tel projet.
Lorsque tu es en édition, je pense qu'aucun évènement ne peut être intercepté, donc comment lancer ta macro ?
Tu devrais plus orienter ta recherche vers un programme externe comme un clavier virtuel.
ici tu en as un de paramétrable qui semblerait faire l'affaire.
A toi de tester et de nous faire un retour ;-)
eric
Je souhaite être contredit mais je doute de la faisabilité d'un tel projet.
Lorsque tu es en édition, je pense qu'aucun évènement ne peut être intercepté, donc comment lancer ta macro ?
Tu devrais plus orienter ta recherche vers un programme externe comme un clavier virtuel.
ici tu en as un de paramétrable qui semblerait faire l'affaire.
A toi de tester et de nous faire un retour ;-)
eric
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut à tous les deux,
Merci pour vos remarques judicieuses.
@ Eric, c'est ce qui me bloque en effet : le lancement d'une macro en cours d'édition.
On peut, je pense, créer un pseudo clavier virtuel avec Excel VBA avec les instructions Onkey, Keypress et SendKeys. Mais toujours pareil : est-ce que ces instructions sont actives en mode édition ? Je n'en sais rien et je ne les ai jamais utilisées. Je vais essayer de creuser de ce côté.
@ Michel_m la bidouille est réalisable et rejoint ce que je pensais faire en dernier recours. D'autant que les caractères étant en fait des caractères classiques avec un espace de part et d'autre, il suffirait de chercher ces caractères isolés dans la cellule et de changer leur police pour afficher le caractère correspondant. Mais il faut bien reconnaitre que ce n'est pas très "User friendly".
Merci pour vos remarques judicieuses.
@ Eric, c'est ce qui me bloque en effet : le lancement d'une macro en cours d'édition.
On peut, je pense, créer un pseudo clavier virtuel avec Excel VBA avec les instructions Onkey, Keypress et SendKeys. Mais toujours pareil : est-ce que ces instructions sont actives en mode édition ? Je n'en sais rien et je ne les ai jamais utilisées. Je vais essayer de creuser de ce côté.
@ Michel_m la bidouille est réalisable et rejoint ce que je pensais faire en dernier recours. D'autant que les caractères étant en fait des caractères classiques avec un espace de part et d'autre, il suffirait de chercher ces caractères isolés dans la cellule et de changer leur police pour afficher le caractère correspondant. Mais il faut bien reconnaitre que ce n'est pas très "User friendly".
Bonjour mic13710,
J'arrive à l'instant et je constate qu'il y a plein de bonnes idées.
Effectivement aucune macro ne peut être déclenchée si la cellule est active, il faut passée par la proposition de Michel_m.
Dans le cas où vous devez insérer plus d'un caractère, selon les cas, je pense qu'il serait possible de passer par un formulaire (UserForm) ....avec liste de choix!
--
Salutations.
Le Pingou
J'arrive à l'instant et je constate qu'il y a plein de bonnes idées.
Effectivement aucune macro ne peut être déclenchée si la cellule est active, il faut passée par la proposition de Michel_m.
Dans le cas où vous devez insérer plus d'un caractère, selon les cas, je pense qu'il serait possible de passer par un formulaire (UserForm) ....avec liste de choix!
--
Salutations.
Le Pingou