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

XL 2019 mettre la taille de police du 1er mot à 13 2 ème mot à 11

dindin

XLDnaute Occasionnel
bonjour le Forum
j'ai dans la colonne A des mots
la colonne B des chiffres entre parenthèse.
j'ai réussi à les assembler dans la colonne C en utilisant un code VBa
par contre je n'arrive pas à mettre la taille de police du 1er mot à 13 2 ème mot à 11
voir capture
Merci d'avance
j'aurais besoin de votre aide.
 

Jacky67

XLDnaute Barbatruc
Bonjour,
Une piste
Avec mot en A1, chiffre en B1 le tout concatener en C1
VB:
Sub format()
[c1] = [a1] & [b1]
[c1].Characters(1, Len([a1])).Font.Size = 13
[c1].Characters(Len([a1]) + 1, Len([b1])).Font.Size = 11
End Sub
 
Dernière édition:

dindin

XLDnaute Occasionnel
Bonjour,
Une piste
Avec mot en A1, chiffre en B1 le tout concatener en C1
VB:
Sub format()
[c1] = [a1] & [b1]
[c1].Characters(1, Len([a1])).Font.Size = 13
[c1].Characters(Len([a1]) + 1, Len([b1])).Font.Size = 11
End Sub


j'arrive pas à l'adapter à lacolonne C
VB:
Sub CONCAT()
For i = 1 To Range("C" & Rows.Count).End(xlUp).Row
On Error Resume Next
'Cells(i, 4).Value = Cells(i, 1) & " " & Range("A1").Value & Cells(i, 2) & Range("B1").Value
'Cells(i, 4).Value = Cells(i, 1) & vbCrLf & Range("A1").Value & Cells(i, 2) & Range("B1").Value
'Cells(i, 4).Value = Cells(i, 4).Characters(1, Len(Cells(i, 4)).Font.Size = 18 & Cells(i, 4).Characters(Len(Cells(i, 4)) + 1, Len(Cells(i, 4))).Font.Size = 10
Cells(i, 3).Characters(1, Len([C])).Font.Size = 18
Cells(i, 3).Characters(Len([C]) + 1, Len([C])).Font.Size = 10
Next
End Sub
 

Jacky67

XLDnaute Barbatruc
Re..
Essaye comme ceci
Dans l'exemple les noms sont en colonne A, les chiffres (sans parenthèse) en colonne B, le résultat en colonne C
VB:
Sub CONCAT()
    Dim C As Range
    For Each C In Range("c1:c" & Cells.Find("*", , , , xlByRows, xlPrevious).Row)
        C = C.Offset(, -2) & " (" & C.Offset(, -1) & ")"
        C.Characters(1, Len(C.Offset(, -2))).Font.Size = 18
        C.Characters(Len(C.Offset(, -2)) + 1, Len(C.Offset(, -1)) + 3).Font.Size = 10
    Next
End Sub
 

Pièces jointes

  • format.xlsm
    16.6 KB · Affichages: 8

dindin

XLDnaute Occasionnel
Merci jacky67
 

patricktoulon

XLDnaute Barbatruc
re
Bonjour a tous les deux
faite moi plaisir précisez le parent ; sait on jamais que ce soit pas le sheets actif qui est concerné dans un with par exemple
VB:
Sub CONCAT()
    Dim C As Range
    with sheets("toto")
        For Each C In .Range("c1:c" & .Cells.Find("*", , , , xlByRows, xlPrevious).Row)
        C = C.Offset(, -2) & " (" & C.Offset(, -1) & ")"
        C.Characters(1, Len(C.Offset(, -2))).Font.Size = 18
        C.Characters(Len(C.Offset(, -2)) + 1, Len(C.Offset(, -1)) + 3).Font.Size = 10
        Next
end with

End Sub

après le find previous!!!???? je vois pas trop pourquoi sortir l'artillerie lourde mais bon ???
sachant que quand un find est lancé on ne l’arrête pas il s’arrête tout seul quand il trouve et génère une erreur quand il trouve rien c'est ballo !!! il est de toute maniere plus lourd car il part de tout en bas

donc
For Each C In .Range("c1", .Cells(rows.count,"C").end(xlup))

 

dindin

XLDnaute Occasionnel

Merci
patricktoulon

le coude fonctionne très bien ainsi que les autres.
par contre j'ai fais une bêtise après avoir posté mon message .
j'ai supprimé les donné des colonnes A et B .
j'essaye depuis hier de modifier le code pour qu'il fasse la changement directement sur la colonne C sans grouper les mots ensemble.
c'est dire mettre le 1 er mot en 14 et le 2 ème en 11
voici ce que j'ai pu faire
VB:
Sub CONCAT()
    Dim C As Range
    For Each C In Range("c1:c" & Cells.Find("*", , , , xlByRows, xlPrevious).Row)
        C = C.Offset(, 0) & " (" & C.Offset(, 0) & ")"
        C.Characters(1, Len(C.Offset(, 0))).Font.Size = 18
        C.Characters(Len(C.Offset(, 0)) + 1, Len(C.Offset(, 0)) + 3).Font.Size = 10
    Next
End Sub
je n'arrive pas à l'adapter pour qu'il fasse le chabgment directement sur la colonne C
 

patricktoulon

XLDnaute Barbatruc
re
ben il faut simplement déterminer la longueur du 1 er mot
donc direct en travaillant sur colonne "C" sans passer par une concaténation de "A" et "B"
et en prime on gère les cellules éventuellement vides et ou celles qui n'ont pas le format "abcdef....(xx...)

VB:
Sub grosetpetit()
    Dim C As Range, x&
    With ActiveSheet    ' ou sheets("toto")
        For Each C In .Range("c1", .Cells(Rows.Count, "C").End(xlUp))
            If C.Value <> "" Then
                 x = Len(Split(C, "(")(0))
                If x < Len(C.Text) Then C.Font.Size = 10: C.Characters(1, x).Font.Size = 18
            End If
        Next
    End With
End Sub

 

dindin

XLDnaute Occasionnel
Merci
 

Discussions similaires

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