Modifier la hauteur d'un même caractère du texte d'une cellule par macro [résolu]

Bonjour,
J’aimerai pouvoir avec un macro transformer par exemple le mot “caractère” en “CaraCtère” contenu dans une cellule de mon tableur à l’aide d’une macro basic.
Ça fait 2 jours que je cherche sur différent forum et … je cale.
Merci de votre aide.

Pourquoi ne pas utiliser la solution évidente via Rechercher & Remplacer :
Rechercher : c
Remplacer par : C
?

def upper_c(*_):
    u_char = (c:='c').upper()
    cell = XSCRIPTCONTEXT.getDocument().CurrentSelection
    cell.String = cell.String.replace(c, u_char)

Oui, mais non…
J’aurai dû dire “mettre en forme” un ou plusieurs caractères d’un texte.
Exemple : cAracTèrE
Merci pour ton aide mais je ne suis pas encore passé à Python :wink: je préfèrerai une solotion en Basic

Désolé, je ne parle pas français :innocent: :innocent:

def upper_aet(*_):
    uc_aet = str.maketrans('aet', 'AET')
    cell = XSCRIPTCONTEXT.getDocument().CurrentSelection
    cell.String = cell.String.translate(uc_aet)

Je crois avoir trouvé la solution

Sub MF_Caractere
Dim oCell As Object , oCursor As Object, i%
oCell=ThisComponent.CurrentSelection
oCursor = oCell.createTextCursorByRange(oCell)
For i = 1 To  Len(oCell.String)
With oCursor
   .goToStart(False)
   .goRight(1,true) 'déplace le curseur d'un (1) )caractere vers la droite  et selectionne 	
     'Modifie le formatage du caractère
  Select Case .String
    Case chr(216),"C"
	.CharHeight = "20"
     Case 5,7,9
		.CharEscapement=33
		.CharEscapementHeight=50
  End Select
 	.goLeft(0,false)
Next
End With 
End Sub 

Merci quand même

1 Like

Bonjour,

Peut-être.

Mais surtout, avez-vous compilé votre macro ? Pour l’instant, un message d’erreur apparaît :

Erreur de syntaxe BASIC.
Symbole inattendu : Next.

oups !

 Sub MF_Caractere
 Dim oCell As Object , oCursor As Object, i%
     oCell=ThisComponent.CurrentSelection
     oCursor = oCell.createTextCursorByRange(oCell)
     For i = 1 To  Len(oCell.String)
         With oCursor
            .goToStart(False)
            .goRight(1,true) 'déplace le curseur d'un (1) )caractere vers la droite  et selectionne 	
            'Modifie le formatage du caractère
           Select Case .String
               Case chr(216),"C"
              .CharHeight = "20"
               Case 5,7,9
	      .CharEscapement=33
	      .CharEscapementHeight=50
           End Select
     .goLeft(0,false)
       End With 
    Next
  End Sub

Bonjour,

La macro permet de modifier les propriétés du premier caractère uniquement…

heu non… dans un texte avec plusieurs “C” par exemple “ABCDEC5ACD” les lettres “C” sont bien agrandies :grinning: du moins pour moi c’est bon

   Sub MF_Caractere
   Dim oCell As Object , oCursor As Object, i%
   oCell=ThisComponent.CurrentSelection
   oCursor = oCell.createTextCursorByRange(oCell.Start)
   For i = 1 To  Len(oCell.String)
     With oCursor
       .goRight(1,true) 	'déplace le curseur d'un (1) )caractere vers la droite  et le selectionne 	
       'Modifie le formatage du caractère
       Select Case .String
	     Case "C"
		   .CharHeight = "20"
	     Case 5,7,9
		   .CharEscapement=33
		   .CharEscapementHeight=50
        End Select
       .goLeft(0,false)		'fixe le curseur pour une nouvelle sélection 
     End With 
    Next i
    End Sub

Bonjour,

C’est juste! La macro fonctionne. Mais c’est vous qui avez publié différentes versions de la macro.




D’ailleurs

           .CharHeight = "20"

Pourquoi la chaîne de caractères "20" ? CharHeight est de type float.