Mettre des chiffres en indice - VBA

Bonjour,

J'ai une colonne dans un tableur excel avec des formule chimiques du style :

C8H6Cl2O3

C13H16N10O5S

(C4H6MnN2S4)x(Zn)y

J'aimerais mettre automatiquement les chiffres (uniquement les chiffres en indice). Mais je ne suis pas certaine de la démarche à entreprendre.

j'ai récupéré ce code sur internet :

Sub Indices()

Dim Nbre As Byte, Cptr As Byte

Nbre = Len(ActiveCell) 
For Cptr = 1 To Nbre
If Mid(ActiveCell.Value, Cptr, 1) Like "#" Then 
ActiveCell.Characters(Cptr, 1).Font.Subscript = True  'Cette ligne permet de mettre les caractères de la cellule active en indice je crois ... Or je ne veux appliquer cette formule qu'aux chiffres :'(
End If
Next

End Sub

Mais je n'arrive pas à l'adapter à mon problème ...

Je n'arrive pas à rédiger un code pour demande que seule les chiffres de mes cellules soient mis en indice ...

Quelqu'un peut m'aider ?

Si vous avez besoin d'un classeur en guise d'exemple je peux vous en donner un ... mais je pense qu'avec les 3 exemples de formules données, tout est résumé ... :

C8H6Cl2O3

C13H16N10O5S

(C4H6MnN2S4)x(Zn)y

Merci d'avance !!

Bonjour

Tu as trouvé le bon code

Places cette macro dans le module de la feuille : Clic droit sur l'onglet de la feuille ---> Visualiser le code

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Nbre As Byte, Cptr As Byte

  Nbre = Len(Target)
  For Cptr = 1 To Nbre
    If Mid(Target.Value, Cptr, 1) Like "#" Then
      Target.Characters(Cptr, 1).Font.Subscript = True
    End If
  Next Cptr
End Sub

Super merci !!

Je n'ai pas réussi en Sub Privée ... j'ai donc fait comme je sais le faire avec un sous programme appellé (fonction Call) dans le programme principal et ça fonctionne très bien.

J'ai remplacé "Target" Par la cellule et la colonne qui m’intéressent.

Cependant tout ne me parait pas très clair dans ce petit programme ... je suis par certainne de comprendre quand on signale que le "subscript" ne s'applique qu'aux chiffres ? ... Avec "#" ?

pourrais-tu me traduire le code pour que je comprenne les étapes ? je te met déjà ce que je pense avoir compris :

'Sub secondaire (= sous programme) qui ne peut être exécuté que via la fonction "call" dans la Sub principale.

Sub Indice(Nbre As Byte, Cptr As Byte)

  Nbre = Len(cells(6, 8)) 'Nbre est le nombre de caractères présents dans la cellule H6.

  For Cptr = 1 To Nbre
    If Mid(cells(6, 8).Value, Cptr, 1) Like "#" Then 'Mid retourne une chaîne (valeur de la cellue H6) contenant un nombre spécifié de caractères (Nbre) d'une chaîne.
      cells(6, 8).Characters(Cptr, 1).Font.Subscript = True 'subscript = Indice // Superscript = Exposant
    End If
  Next Cptr

End Sub

Merci d'avance !

Bonjour,

Bonjour Banzai64

# = tout chiffre unique (de 0 à 9).

Cdlt.

Bonjour

Bonjour Jean-Eric

Un conseil qui va t'aider dans la compréhension du code

Tu places le curseur sur un mot dont tu cherches la définition ( Mid ou Like) et tu appuies sur F1

Tu trouveras une meilleure explication que celle que je pourrais te donner

D'accord merci pour les infos tous les deux

A bientôt !!

Rechercher des sujets similaires à "mettre chiffres indice vba"