XL 2010 Mettre en indice un chiffre dans un label d'un UF

Magic_Doctor

XLDnaute Barbatruc
Bonjour,

Tout est dans le titre.

Ma foi, dans une cellule c'est facile. En revanche, m'inspirant de la syntaxe pour une cellule, je n'y suis pas arrivé pour le label d'un UF.
J'ai bien tenté ceci :
VB:
Private Sub UserForm_Initialize()

    'l'écrire une fois, puis virer, ce devrait être du définitif     
    With Label1
        .Caption = "FC1"    'OK
         .Characters(Start:=3, Length:=1).Font.Subscript = True     '"1" devrait être en indice : ne marche pas
    End With
   
End Sub
Mais peut-être que ce n'est pas possible...
 

ROGER2327

XLDnaute Barbatruc
Bonjour Magic_Doctor.


VB:
With Label1: With .Font: .Name = "Calibri": .Size = 10: End With: .Caption = "FC" & ChrW(8321): End With

devrait faire l'affaire...


ℝOGER2327
#8332


Jeudi 12 Absolu 144 (Vide - Vacuation)
3ème Sanculottide An CCXXIV, 0,3188h - fête du Travail
2016-W38-1T00:45:54Z
 

Magic_Doctor

XLDnaute Barbatruc
Merci Roger, ça fait l'affaire.
Évidemment, il y a encore un problème.
Je connaissais "Chr" mais pas "ChrW". C'est quoi vraiment au juste ?
Comme il y a 2 labels ("FC1" & "FC2"), quel est le code pour "2" ?
Je n'ai pas réussi à trouver une table qui le donne. J'ai dû mal m'y prendre comme dab.
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re...

ChrW (pour ChrWide) fonctionne pour les caractères «Unicode» comme Chr pour les caractères «ASCI». (Voir l'aide généreusement fournie avec Excel.)
On trouve les codes dans l'accessoire «Table de caractères».
Une façon de procéder :​
VB:
Private Sub UserForm_Initialize()
    With Label1: With .Font: .Name = "Calibri": .Size = 10: End With: .Caption = "FC" & Indice(1): End With
    With Label2: With .Font: .Name = "Calibri": .Size = 10: End With: .Caption = "FC" & Indice(2): End With
End Sub

Function Indice$(n$)
Dim i%, c$, s$
    For i = 1 To Len(n)
        c = Mid$(n, i, 1)
        Select Case Asc(c)
        Case 48 To 57: s = s & ChrW(8320 + CLng(c)) 'chiffres
        Case 40: s = s & ChrW(8333) '(
        Case 41: s = s & ChrW(8334) ')
        Case 43: s = s & ChrW(8330) '+
        Case 45: s = s & ChrW(8331) '-
        Case 61: s = s & ChrW(8332) '=
        Case Else: s = s & c
        End Select
    Next
    Indice = s
End Function
Remarque 1 : toutes les polices (et notamment «Tahoma») ne possèdent pas les caractères en indice.
Remarque 2 : putain d'éditeur de code pas foutu de respecter l'indentation !


Bonne journée.


ℝOGER2327
#8333


Jeudi 12 Absolu 144 (Vide - Vacuation)
3ème Sanculottide An CCXXIV, 0,8653h - fête du Travail
2016-W38-1T02:04:36Z

 

Magic_Doctor

XLDnaute Barbatruc
Merci Roger pour ces précisions.
J'ai compris que la palette des caractères "unicode" est nettemet plus vaste que celle des caractères ASCII.
En revanche, l'unicode ma paraît nettement plus complexe à utiliser.
Vos dernières routines résolvent parfaitement ce que je désirais.
Mais je me posais la question suivante, n'ayant, à vrai dire, pas bien compris la fonction (mais je survivrai...) : comment transformer ladite fonction pour mettre en exposant et non plus en indice ? Cela pourrait toujours servir.
 

ROGER2327

XLDnaute Barbatruc
Proverbes.
  1. Une image vaut mille mots.
  2. La touche F1 est notre amie.
capturea1-jpg.972641

ℝOGER2327
#8334


Jeudi 12 Absolu 144 (Vide - Vacuation)
3ème Sanculottide An CCXXIV, 4,3584h - fête du Travail
2016-W38-1T10:27:37Z
 

Pièces jointes

  • CaptureA1.jpg
    CaptureA1.jpg
    103.1 KB · Affichages: 172

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 182
dernier inscrit
moutassim.amine