Automatiser en VBA (via une macro ou une fct) la mise en forme d'une chaîne

Magic_Doctor

XLDnaute Barbatruc
Bonjour,

Je voudrais mettre automatiquement en forme une chaîne de caractères de la manière suivante :
supposons que la chaîne soit "AUTOMATIQUES".
La taille de la police est 20.
Je voudrais que la chaîne apparaisse ainsi : "A U T O M A T I Q U E S"
Soit 1 espace entre 2 caractère, avec pour taille de l'espace non pas 20 mais 8.

Merci d'avance pour toute aide.
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Automatiser en VBA (via une macro ou une fct) la mise en forme d'une chaîne

Bonjour Magic Doctor,

voir fichier en pièce jointe

à+
Philippe
 

Pièces jointes

  • 111.xls
    29.5 KB · Affichages: 65
  • 111.xls
    29.5 KB · Affichages: 69
  • 111.xls
    29.5 KB · Affichages: 68

ROGER2327

XLDnaute Barbatruc
Re : Automatiser en VBA (via une macro ou une fct) la mise en forme d'une chaîne

Bonsoir à tous
Une variante avec une procédure évènementielle :
Code:
[COLOR="DarkSlateGray"][B]Private Sub Worksheet_Change(ByVal Target As Range)
Dim i&, x$, oCel As Range, oPlg As Range
   Set oPlg = Intersect(Target, Range("A1:B4,C9")) [COLOR="SeaGreen"]'Adapter la plage concernée par la procédure.[/COLOR]
   If Not oPlg Is Nothing Then
      For Each oCel In oPlg.Cells
         With oCel
            x = .Value
            For i = 1 To 2 * Len(x) - 2 Step 2
               x = Left$(x, i) & " " & Right$(x, Len(x) - i)
            Next
            Application.EnableEvents = False
            .Value = x
            Application.EnableEvents = True
         End With
      Next
   Set oPlg = Nothing
   End If
End Sub[/B][/COLOR]
ROGER2327
#3955


Mardi 10 Tatane 137 (Saints Pieds Nickelés, trinité, SQ)
5 Thermidor An CCXVIII
2010-W29-5T22:50:54Z
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Automatiser en VBA (via une macro ou une fct) la mise en forme d'une chaîne

Re, à tous,

Mon code était issu de l'enregistreur de macro; en faisant un peu le ménage dans ce code, la procédure a gagné en rapidité d'execution
Code:
Sub Macro1()
Application.ScreenUpdating = False
[C6] = ""
For i = 1 To Len([C4])
    [C6] = [C6] & Mid([C4], i, 1) & " "
Next i
For i = 1 To Len([C6]) Step 2
    [C6].Select
    With ActiveCell.Characters(Start:=i, Length:=1).Font
        .Size = 20
    End With
    With ActiveCell.Characters(Start:=i + 1, Length:=1).Font
        .Size = 8
    End With
Next i
Application.ScreenUpdating = True
End Sub


Bon week-end à tous
Philippe
 

Pièces jointes

  • 111.xls
    36 KB · Affichages: 44
  • 111.xls
    36 KB · Affichages: 52
  • 111.xls
    36 KB · Affichages: 55
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 195
Messages
2 086 079
Membres
103 112
dernier inscrit
cuq-laet