Je souhaite créer un bouton qui me change le texte en souligné/pas souligné sur les cellules sélectionnées (feuille verrouillée par mot de passe).
J'imaginais un code comme celui-ci mais il ne fonctionne que dans un sens:$
VB:
'Bouton mettre le texte souligné/pas souligné
Sub BoutonSouligné()
Dim C As Range
ActiveSheet.Unprotect Password:="."
For Each C In Selection
'boucle sur chaque cas
If C.Font.Underline = True Then
C.Font.Underline = False
Else
C.Font.Underline = True
End If
Next
ActiveSheet.Protect Password:="."
End Sub
Sub BoutonSouligné()
Dim C As Range
ActiveSheet.Unprotect Password:="."
For Each C In Selection
'boucle sur chaque cas
If C.Font.Underline = 2 Then
C.Font.Underline = 1
Else
C.Font.Underline = 2
End If
Next
ActiveSheet.Protect Password:="."
End Sub
Sub BoutonSouligné()
Dim pl As Range
ActiveSheet.Unprotect Password:="."
Set pl = Selection
pl.Font.Underline = IIf(pl.Font.Underline = 2, 1, 2)
ActiveSheet.Protect Password:="."
End Sub
Salut à tous,
Je ne sais pas ce qu'est un underline = 1 ....
Champs
xlUnderlineStyleDouble
-4119
Double souligné épais.
xlUnderlineStyleDoubleAccounting
5
Deux soulignés fins placés côte à côte.
xlUnderlineStyleNone
-4142
Aucun soulignement.
xlUnderlineStyleSingle
2
Soulignement simple.
xlUnderlineStyleSingleAccounting
4
Non prise en charge.
VB:
Sub BoutonSouligné()
Dim C As Range
ActiveSheet.Unprotect Password:="."
For Each C In Selection
If C.Font.Underline <> xlUnderlineStyleNone _
Then C.Font.Underline = xlUnderlineStyleNone _
Else C.Font.Underline = xlUnderlineStyleSingle
Next
ActiveSheet.Protect Password:="."
End Sub
Merci pour votre aide. En bidouillant un peu j'ai trouvé cette possibilité:
VB:
Sub BoutonSouligné()
Dim C As Range
ActiveSheet.Unprotect Password:="."
For Each C In Selection
'boucle sur chaque cas
If C.Font.Underline = xlUnderlineStyleNone Then
C.Font.Underline = True
Else
C.Font.Underline = False
End If
Next
ActiveSheet.Protect Password:="."
End Sub
re
Bonjour
alala lalala !!!!
pourquoi boucler sur toutes les cellules
la propriété font est un membre de range ;range qui peut etre une cellule ou plusieures
attention au resultat true false meme si notre cher VBA est tolerant avec notre façon de voir tout faux ou vrai(false/true)
la propriété renvoie en fait EN LECTURE
-4419 pour le double souligné
2 pour le souligné simple
-4142 pour le non souligné
alors en dessous 0 ca renvoie false alors que le double souligné est en dessous zero
ma conclusion on envoie en false uniquement pour l'enlever et non pour le lire
et on l'applique a la selection en 1 coup
Code:
Private Sub CommandButton1_Click()
With Selection.Font
.Underline = IIf(.Underline = 2, False, 2)
End With
End Sub
re
ben c'est simple par exemple on teste la cellule A1
sub test()
msgbox [a1].font.underline
end sub
regarde le message
apres tu peut aller carrément dans les definitions pour savoir qui est membre de qui
parce que, dans l'énoncé du post 1, il n'est pas précisé que toutes les cellules sélectionnées ont le même formatage de départ, je pars donc du principe qu'il peut y avoir certaines cellules en souligné et d'autres pas. C'est d'ailleurs comme cela que l'ébauche de code de ce post essaye de fonctionner.