Position curseur dans une cellule en cours de modif

  • Initiateur de la discussion LaurentTBT
  • Date de début
L

LaurentTBT

Guest
Bonjour à tous.

J'aimerais pouvoir trouver la position du curseur dans une cellule en cours de modification. L'équivalent en quelque sorte de SelStart et SelLenght ou de ou de CurX pour une textbox.

Pourtant, cela doit bien exister, car lorsqu'on modifie une cellule contenant par exemple "Ce texte ici" pour mettre "texte" en gras, lorsqu'on clique sur le bouton "Gras", excel sait bien reconnaitre qu'il lui faut agir sur les caractères du n°4 au n°8. C'est ces infos 4 et 8 que je voudrais intercepter.

J'ai cherché dans les propriétés de Range, de Characters, mais je ne vois rien qui corresponde.

Merci d'avance.

Laurent.
 
@

@+Thierry

Guest
Salut Laurent, le Forum

Sacré question encore, mais que veux-tu faire faire à Excel en plus du café ? qu'il repasse tes chemises !!!

Moi j'analyse le truc différemment...

A mon avis, sans consacrer de temps, en cours saisie de cellule (curseur à l'intérieur) tu ne pourras même pas lancer VBA, donc je pense que tu te casses la tête pour rien. En effet losrque l'on est en saisie on ne peux strictement rien faire d'autre... On estr Stuck de chez Stuck !! Non où je me trompe ?

Donc tu n'es plus en saisie lorque que tu lances ton code VBA... Non où je me trompe ?

Donc on peut déjà savvoir le "Len" trouver les " ", ou encore le Premier "T" ou je ne sais quoi encore... Non où je me trompe ?

Donc on peut faire ceci :

Sub SacréLaurent()
Dim TheString As String
Dim S As Byte, L As Byte, i As Byte

S = 4
L = 8

With ActiveCell
With .Characters(S, L).Font
.Bold = True
.Color = RGB(255, 0, 0)
End With
For i = S To L
TheString = TheString & Mid(CStr(ActiveCell), i, 1) & vbCrLf
Next i

End With
MsgBox "Les Caractère Interceptés sont : " & vbCrLf & TheString
End Sub

Non où je me trompe ? LoL

Bonne Fin d'Après Midi
@+Thierry
 
@

@+Thierry

Guest
Re Laurent,

Ah je ne t'avais pas bien lu : "C'est ces infos 4 et 8 que je voudrais intercepter."

Et non 4 à 8

Donc dans ce cas on peut faire changer çà :
For i = S To L Step S

Et, of course, mettre ce code en évènementielle change

@+Thierry
 
L

LaurentTBT

Guest
Merci Thierry, mais ce que je voulais, c'était bien travailler en cours de saisie, curseur à l'intérieur, comme tu dis. Et oui, je me doutais bien que c'était pas possible.

Ceci dit, lorsque tu es curseur à l'intérieur, il y a quand même quelques actions qu'on peut faire, c'est par exemple appuyer sur le bouton gras de la barre d'outils mise en forme (ou d'autres actions de mise en forme, souligné, italisque, couleur de police...).

En fait, moi, j'ai besoin de savoir, au moment où l'utilisateur cliquerait sur un bouton (bouton que j'ai crée similaire à Gras), connaître la position du curseur, et le bouton cliqué me lancerait une macro qui agirait sur une partie de la saisie en fonction de cette satanée position de curseur.

Pour être plus précis, ma cellule est destinée à recevoir du texte avec des sauts de ligne possibles (alt+enter). Et ce qui m'intéresse, c'est d'identifier le paragraphe choisi, pour ensuite rajouter en début "
et à la fin​
, si tu vois ce dont je veux parler! Bon, je sais, l'idée de partir sur une seule cellule pour tous les paragraphes est sans doute l'erreur de départ. Mais c'est bien pratique pour d'autres aspects.

J'avais pensé aussi à la possibilité d'ajouter une commande au menu qui apparaît si, en saisie toujours, on fait un clic droit. Mais là, pareil, je ne peux pas récupérer cette position curseur.

Comme je te le disais, je trouve ça dommage, car Excel sait reconnaitre cette position instantanéement, car quand on met en gras les caractères 4 à 8, on ne lui dit pasque c'est 4 à 8, il les trouve tout seul en fonction de la position curseur ou de la partie de texte en surbrillance.

De toute façon, j'ai une solution de replis, moins élégante, certes, qui consiste à mettre un double soulignement (le bouton existe et agit en phase de saisie), puis en final d'aller rechercher les caractères bouble soulignés pour retrouver le paragraphe qui sera centré une fois envoyé sur le forum.

Voilà, donc te casse pas la tête.

Bonne soirée et merci quand même.

Laurent.
 
Z

Zon

Guest
Salut,

J'ai essayé en bidouillant un module de classe mais je n'arrive pas pour les caractères sélectionnés. Alors j'ai cherché sur le Mpep et voici une réponse de John Walkenbach:en gros impossible

"As far as I know, what you describe is not possible. A VBA macro cannot
identify which characters are selected within a cell. I've created a free
add-in that can assist with superscript and subscript formatting:"

http://j-walk.com/ss/excel/files/supersub.htm


Si les boutons sont les tiens, tu peux intercepter la cellule active et afficher un userform avec un textbox et tu sauras ce que veut faire l'user et t'inspirer du lien laissé par John.

A+++
 
@

@+Thierry

Guest
Re Laurent, le Forum

Oui je sais bien que seules des fonctions propre à Font (Bold/Underline/Color/ ainsi que Font.Selection Font.Size) sont actives ainsi que Copy/Cut/Paste, mais je n'ai pas expliqué clairement dans mon post, ce que je veux dire :

Comment veux-tu que l'utilisateur puisse cliquer sur un bouton ? Aucune autre CommandBar, Aucun CommandButton, et Aucun Button "Formulaire" ne sera actif ...

C'est tout bêtement ceci qui est (à mon avis) impossible.

Pour le Click Droit çà semble idem, seul des fonctions de Copy/Paste/Cut sont dispo et à nouveau les Fonts...

Sinon oui je comprends mieux ton besoin, oui pas évident... ou bien un copy dans le clipboard...

Enfin bon courage à toi, car tu vas en avoir besoin !

@+Thierry
 
L

LaurentTBT

Guest
Merci, Zon, ça confirme ce qu'on se disait avec Thierry.

Je vais rester sur ma solution du double soulignement, car je ne veux pas passer par un textbox (pour pouvoi raussi mettre des caractères en gras ou en italique), ou alors je revois tout pour pouvoir travailler sur plusieurs cellules (une par paragraphe).

Bye.

Laurent.
 

Discussions similaires

Statistiques des forums

Discussions
312 366
Messages
2 087 638
Membres
103 627
dernier inscrit
nabil