Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…