Mettre en rouge et gras
Bonsoir a tous et toutes, forum bonsoir
Dans mon programme s'affiche actuellement le message ci-dessous, ca fonctionne, mais je souhaiterai SVP que le " D " de dernier soit en gras et rouge ainsi que le " à "
Dernier enregistrement le 04 06 2009 à 19:42
Donc si vous avez un peu de temps, je vous en remercie d'avance.
Je vous souhaite une excellente soirée
Raymond
Dim modifs As Boolean
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
modifs = True
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.DisplayAlerts = False
ThisWorkbook.SaveAs ThisWorkbook.Path & "\Gestion " & Format(Now, "dddd dd mmm yyyy", vbMonday) & ".xlsm"
Application.DisplayAlerts = True
If modifs = True Then
Sheets("Compte").[A3].Value = "Dernier enregistrement le " & Format(Date, "dd mm yyyy") _
& " à " & Format(Time, "H:MM")
End If
End SubBonsoir,
Voici une solution :
Public Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.DisplayAlerts = False
ThisWorkbook.SaveAs ThisWorkbook.Path & "\Gestion " & Format(Now, "dddd dd mmm yyyy", vbMonday) & ".xlsm"
Application.DisplayAlerts = True
If modifs = True Then
With Worksheets("Compte").[A3]
.Value = "Dernier enregistrement le " & Format(Date, "dd mm yyyy") & " à " & Format(Time, "H:MM")
' Mettre le D en gras et rouge
With .Characters(Start:=1, Length:=1).Font
.FontStyle = "Gras"
.ColorIndex = 3
End With
' Mettre le à en gras et rouge
With .Characters(Start:=38, Length:=1).Font
.FontStyle = "Gras"
.ColorIndex = 3
End With
End With
End If
End SubBonjour a tous et toutes, bonjour forum
Bonjour Readi
Merci pour ta réponse et le code, Mais ca ne fonctionne pas comme attendu,
ca me mets tout le message en rouge et gras
" Dernier enregistrement le 04 06 2009 à 19:42 "
Je vais regarder après mon café te redirai si je trouve, c'est pas gagné,
A plus tard et merci
Ray
Bonjour,
Je pense avoir trouvé la solution à ton problème.
Il s'agit de rajouter le format de la cellule (.NumberFormat = "@") avant la mise en forme. C'est le même souci rencontré dans le post "Afficher les douze mois".
Voici le code :
Public Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.DisplayAlerts = False
ThisWorkbook.SaveAs ThisWorkbook.Path & "\Gestion " & Format(Now, "dddd dd mmm yyyy", vbMonday) & ".xlsm"
Application.DisplayAlerts = True
If modifs = True Then
With Worksheets("Compte").[A3]
.ClearFormats
.NumberFormat = "@"
.Value = "Dernier enregistrement le " & Format(Date, "dd mm yyyy") & " à " & Format(Time, "H:MM")
' Mettre le D en gras et rouge
With .Characters(Start:=1, Length:=1).Font
.FontStyle = "Gras"
.ColorIndex = 3
End With
' Mettre le à en gras et rouge
With .Characters(Start:=38, Length:=1).Font
.FontStyle = "Gras"
.ColorIndex = 3
End With
End With
End If
End SubRe salut Readi, forum
Bon ca fonctionne mais pas facile a gérer derrière, car ca fout en l'air le centrage, les remplissages motifs et textures, les dégradés bicolores houla houla, ca reste sur un fond de cellule blanc.
c'est pas simple et pas facile d'utilisation tout ca
Enfin merci beaucoup c'est gentil a toi, pour le code et le chti coup de main.
Je te souhaite de passer une agréable journée
Raymond
re,
Pour éviter de supprimer les formats de la cellule, il faut enlever cette ligne :
.ClearFormatsRe readi, forum
Merci pour le " ClearFormats " j'y ai penser en faisant mes courses ce matin, je viens d'essayer effectivement ca marche,
Par contre le " D " et le " à " sont bien bien en Rouge et Gras mais le restant du message est en noire mais en Gras, faudrai écriture noire pas Gras.
Je vais voir cette après midi, en tout cas merci a toi et également une bonne après midi.
A plus tard
Raymond
re,
Une autre version :
Public Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.DisplayAlerts = False
ThisWorkbook.SaveAs ThisWorkbook.Path & "\Gestion " & Format(Now, "dddd dd mmm yyyy", vbMonday) & ".xlsm"
Application.DisplayAlerts = True
If modifs = True Then
With Worksheets("Compte").[A3]
.NumberFormat = "@"
.Value = "Dernier enregistrement le " & Format(Date, "dd mm yyyy") & " à " & Format(Time, "H:MM")
With .Characters(Start:=1, Length:=Len(.Value)).Font
.Bold = False
.ColorIndex = 0
End With
' Mettre le D en gras et rouge
With .Characters(Start:=1, Length:=1).Font
.Bold = True
.ColorIndex = 3
End With
' Mettre le à en gras et rouge
With .Characters(Start:=38, Length:=1).Font
.Bold = True
.ColorIndex = 3
End With
End With
End If
End SubN'ayant pas Excel 2007, il n'est pas évident de trouver la bonne solution.
Re Readi, forum
Voici ce que j'ai réussi a faire avec ton aide, je t'en remercie beaucoup.
Il y a surement mieux et plus court a faire pour améliorer le code.
Je laisse le code aux virtuoses du VBA, auquel cas je suis preneur.
Sinon si ca peut servir a quelqu'un
Je te remercie a nouveau et te dit surement a plus tard, car je suis en train de revoir tous mon programme afin de l'optimiser pour qu'il ne ressemble pas a une check list de boeing.
Bonne fin d'après midi a toi
Raymond
Dim modifs As Boolean
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
modifs = True
End Sub
''''''''''''''''
Public Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.DisplayAlerts = False
ThisWorkbook.SaveAs ThisWorkbook.Path & "\Gestion " & Format(Now, "dddd dd mmm yyyy", vbMonday) & ".xlsm"
Application.DisplayAlerts = True
If modifs = True Then
With Worksheets("Compte").[A3]
.NumberFormat = "@"
.Value = "Dernier enregistrement le " & Format(Date, "dd mm yyyy") & " à " & Format(Time, "H:MM")
.Font.Name = "Arial"
.Font.Size = 11
.VerticalAlignment = xlCenter
.HorizontalAlignment = xlCenter
.Characters(1, 1).Font.ColorIndex = 3 'Pour mettre le D
.Characters(1, 1).Font.Bold = True
''''''''''''''''''''''''''''''''''''''''''''''''''
.Characters(2, 37).Font.ColorIndex = 1 'Retour a la normal
.Characters(2, 37).Font.Bold = False
''''''''''''''''''''''''''''''''''''''''''''''''''
.Characters(38, 1).Font.ColorIndex = 3 'Pour le à
.Characters(38, 1).Font.Bold = True
.Characters(39, 6).Font.ColorIndex = 1 'Retour a la normal
.Characters(39, 6).Font.Bold = False
End With
End If
End Sub