Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Affichage d'un texte en partie invisible en vba

6 réponses
Avatar
M41
Bonjour

Soit une chaîne de 100 caractères dont on ne veut laisser visibles que les
10 premiers dans une cellule.
J'ai bien trouvé qqs solutions :
- insertion d'un retour à la ligne puis forcer la hauteur des cellules
de la ligne
- justifier en écrivant en blanc et corps de 1 les 90 derniers
caractères

Excel refuse l'écriture en corps 0 (taille de police) qui serait la solution
la plus élégante en VBA. Peut on forcer cette solution ? existe t il
d'autres méthodes ?

Peut on créer une police dont le graphisme est celui de chr(0) ?

Cordialement

M41

6 réponses

Avatar
JB
Bonjour,

A la saisie en colonne A:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
Target.Characters(Start:, Length:00).Font.ColorIndex = 2
End If
End Sub

JB

On 14 avr, 18:55, "M41" wrote:
Bonjour

Soit une chaîne de 100 caractères dont on ne veut laisser visibles qu e les
10 premiers dans une cellule.
J'ai bien trouvé qqs solutions :
- insertion d'un retour à la ligne puis forcer la hauteur des cellu les
de la ligne
- justifier en écrivant en blanc et corps de 1 les 90 derniers
caractères

Excel refuse l'écriture en corps 0 (taille de police) qui serait la sol ution
la plus élégante en VBA. Peut on forcer cette solution ? existe t il
d'autres méthodes ?

Peut on créer une police dont le graphisme est celui de chr(0) ?

Cordialement

M41


Avatar
garnote
Bonjour M41,

Quelque chose du genre, peut-être :

Sub Invisible()
[A1].Characters(Start:, Length:).Font.ColorIndex = 2
End Sub

Serge


"M41" a écrit dans le message de news: 46210738$0$27381$
Bonjour

Soit une chaîne de 100 caractères dont on ne veut laisser visibles que les 10 premiers dans une cellule.
J'ai bien trouvé qqs solutions :
- insertion d'un retour à la ligne puis forcer la hauteur des cellules de la ligne
- justifier en écrivant en blanc et corps de 1 les 90 derniers caractères

Excel refuse l'écriture en corps 0 (taille de police) qui serait la solution la plus élégante en VBA. Peut on forcer cette
solution ? existe t il d'autres méthodes ?

Peut on créer une police dont le graphisme est celui de chr(0) ?

Cordialement

M41




Avatar
M41
Re

Merci
mais cette solution déborde sur les colonnes voisines
problème si les fonds de cellules sont colorés
une justification ajoutée rend le début illisible

Je l'ai aussi testée avec les 2 autres méthodes décrites

Cordialement

M41




"garnote" a écrit dans le message de news:

Bonjour M41,

Quelque chose du genre, peut-être :

Sub Invisible()
[A1].Characters(Start:, Length:).Font.ColorIndex = 2
End Sub

Serge


"M41" a écrit dans le message de news:
46210738$0$27381$
Bonjour

Soit une chaîne de 100 caractères dont on ne veut laisser visibles que
les 10 premiers dans une cellule.
J'ai bien trouvé qqs solutions :
- insertion d'un retour à la ligne puis forcer la hauteur des cellules
de la ligne
- justifier en écrivant en blanc et corps de 1 les 90 derniers
caractères

Excel refuse l'écriture en corps 0 (taille de police) qui serait la
solution la plus élégante en VBA. Peut on forcer cette solution ? existe
t il d'autres méthodes ?

Peut on créer une police dont le graphisme est celui de chr(0) ?

Cordialement

M41








Avatar
garnote
Alors peut-être ceci :

Sub Les_10_Premiers_Visibles_Les_90_Derniers_Invisibles()
Dim i As Integer
Dim rep As String
With [a1]
.WrapText = True
.Characters(Start:, Length:).Font.ColorIndex = .Interior.ColorIndex
For i = 1 To 56
.Characters(Start:=1, Length:).Font.ColorIndex = i
rep = MsgBox("Quand vous êtes satisfait de la couleur" & vbNewLine _
& "des dix premiers caractères, cliquez sur Oui.", vbYesNo)
If rep = vbYes Then Exit Sub
Next i
End With
End Sub

Serge






"M41" a écrit dans le message de news: 462116bb$0$5108$
Re

Merci
mais cette solution déborde sur les colonnes voisines
problème si les fonds de cellules sont colorés
une justification ajoutée rend le début illisible

Je l'ai aussi testée avec les 2 autres méthodes décrites

Cordialement

M41




"garnote" a écrit dans le message de news:
Bonjour M41,

Quelque chose du genre, peut-être :

Sub Invisible()
[A1].Characters(Start:, Length:).Font.ColorIndex = 2
End Sub

Serge


"M41" a écrit dans le message de news: 46210738$0$27381$
Bonjour

Soit une chaîne de 100 caractères dont on ne veut laisser visibles que les 10 premiers dans une cellule.
J'ai bien trouvé qqs solutions :
- insertion d'un retour à la ligne puis forcer la hauteur des cellules de la ligne
- justifier en écrivant en blanc et corps de 1 les 90 derniers caractères

Excel refuse l'écriture en corps 0 (taille de police) qui serait la solution la plus élégante en VBA. Peut on forcer cette
solution ? existe t il d'autres méthodes ?

Peut on créer une police dont le graphisme est celui de chr(0) ?

Cordialement

M41












Avatar
garnote
ou un tipeu mieux :

Sub Les_10_Premiers_Visibles_Les_90_Derniers_Invisibles()
Dim i As Integer
Dim rep As String
With [a1]
.WrapText = True
.Characters(Start:, Length:).Font.ColorIndex = .Interior.ColorIndex
For i = 1 To 56
If i <> .Interior.ColorIndex Then
.Characters(Start:=1, Length:).Font.ColorIndex = i
rep = MsgBox("Quand vous êtes satisfait de la couleur" & vbNewLine _
& "des dix premiers caractères, cliquez sur Oui.", vbYesNo)
If rep = vbYes Then Exit Sub
End If
Next i
End With
End Sub

Serge



"garnote" a écrit dans le message de news: %
Alors peut-être ceci :

Sub Les_10_Premiers_Visibles_Les_90_Derniers_Invisibles()
Dim i As Integer
Dim rep As String
With [a1]
.WrapText = True
.Characters(Start:, Length:).Font.ColorIndex = .Interior.ColorIndex
For i = 1 To 56
.Characters(Start:=1, Length:).Font.ColorIndex = i
rep = MsgBox("Quand vous êtes satisfait de la couleur" & vbNewLine _
& "des dix premiers caractères, cliquez sur Oui.", vbYesNo)
If rep = vbYes Then Exit Sub
Next i
End With
End Sub

Serge






"M41" a écrit dans le message de news: 462116bb$0$5108$
Re

Merci
mais cette solution déborde sur les colonnes voisines
problème si les fonds de cellules sont colorés
une justification ajoutée rend le début illisible

Je l'ai aussi testée avec les 2 autres méthodes décrites

Cordialement

M41




"garnote" a écrit dans le message de news:
Bonjour M41,

Quelque chose du genre, peut-être :

Sub Invisible()
[A1].Characters(Start:, Length:).Font.ColorIndex = 2
End Sub

Serge


"M41" a écrit dans le message de news: 46210738$0$27381$
Bonjour

Soit une chaîne de 100 caractères dont on ne veut laisser visibles que les 10 premiers dans une cellule.
J'ai bien trouvé qqs solutions :
- insertion d'un retour à la ligne puis forcer la hauteur des cellules de la ligne
- justifier en écrivant en blanc et corps de 1 les 90 derniers caractères

Excel refuse l'écriture en corps 0 (taille de police) qui serait la solution la plus élégante en VBA. Peut on forcer cette
solution ? existe t il d'autres méthodes ?

Peut on créer une police dont le graphisme est celui de chr(0) ?

Cordialement

M41
















Avatar
garnote
Ave M41,

Je n'avais pas tenu compte du cas ou il n'y a aucun remplissage
et j'ai choisi deux couleurs de caractères (blanc ou noir) selon la
couleur de fond de la cellule (tu peux modifier mon choix).
Ça donne ceci :

Sub Les_10_Premiers_Visibles_Les_90_Derniers_Invisibles()
Dim i As Integer
Dim rep As String
With [a1]
.WrapText = True
If .Interior.ColorIndex = xlNone Then
.Characters(Start:=1, Length:).Font.ColorIndex = 1
.Characters(Start:, Length:).Font.ColorIndex = 2
Exit Sub
End If
.Characters(Start:, Length:).Font.ColorIndex = .Interior.ColorIndex
Select Case .Interior.ColorIndex
Case 2, 4, 6, 8, 15, 19, 20, 24, 27, 28, 33, 34, 35, 36, 37
.Characters(Start:=1, Length:).Font.ColorIndex = 1
Case Else
.Characters(Start:=1, Length:).Font.ColorIndex = 2
End Select
End With
End Sub

Cela te convient-il ?

À cette heure-ci, au Québec, il est temps d'aller faire dodo.
J'ai bien aimé mon vino uruguayen, le Don Pascual, Tannat 2005 ;-)
Allez Hic, au pieu !

Serge


















"garnote" a écrit dans le message de news: %
ou un tipeu mieux :

Sub Les_10_Premiers_Visibles_Les_90_Derniers_Invisibles()
Dim i As Integer
Dim rep As String
With [a1]
.WrapText = True
.Characters(Start:, Length:).Font.ColorIndex = .Interior.ColorIndex
For i = 1 To 56
If i <> .Interior.ColorIndex Then
.Characters(Start:=1, Length:).Font.ColorIndex = i
rep = MsgBox("Quand vous êtes satisfait de la couleur" & vbNewLine _
& "des dix premiers caractères, cliquez sur Oui.", vbYesNo)
If rep = vbYes Then Exit Sub
End If
Next i
End With
End Sub

Serge



"garnote" a écrit dans le message de news: %
Alors peut-être ceci :

Sub Les_10_Premiers_Visibles_Les_90_Derniers_Invisibles()
Dim i As Integer
Dim rep As String
With [a1]
.WrapText = True
.Characters(Start:, Length:).Font.ColorIndex = .Interior.ColorIndex
For i = 1 To 56
.Characters(Start:=1, Length:).Font.ColorIndex = i
rep = MsgBox("Quand vous êtes satisfait de la couleur" & vbNewLine _
& "des dix premiers caractères, cliquez sur Oui.", vbYesNo)
If rep = vbYes Then Exit Sub
Next i
End With
End Sub

Serge






"M41" a écrit dans le message de news: 462116bb$0$5108$
Re

Merci
mais cette solution déborde sur les colonnes voisines
problème si les fonds de cellules sont colorés
une justification ajoutée rend le début illisible

Je l'ai aussi testée avec les 2 autres méthodes décrites

Cordialement

M41




"garnote" a écrit dans le message de news:
Bonjour M41,

Quelque chose du genre, peut-être :

Sub Invisible()
[A1].Characters(Start:, Length:).Font.ColorIndex = 2
End Sub

Serge


"M41" a écrit dans le message de news: 46210738$0$27381$
Bonjour

Soit une chaîne de 100 caractères dont on ne veut laisser visibles que les 10 premiers dans une cellule.
J'ai bien trouvé qqs solutions :
- insertion d'un retour à la ligne puis forcer la hauteur des cellules de la ligne
- justifier en écrivant en blanc et corps de 1 les 90 derniers caractères

Excel refuse l'écriture en corps 0 (taille de police) qui serait la solution la plus élégante en VBA. Peut on forcer cette
solution ? existe t il d'autres méthodes ?

Peut on créer une police dont le graphisme est celui de chr(0) ?

Cordialement

M41