Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Tout d'abord je vous remercie pour vos réponses mais celà ne marche pas ! Mais c'est de ma faute, j'aurais dû vous donner la macro en entier ! Donc voici ci-dessous celle-ci :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'Adaptation de codes de Catrice (Merci !)
If Not Intersect(Target, Range("e5")) Is Nothing Then
Target.Font.ColorIndex = 1
Target.Font.Bold = False
With Target.Characters(35, 20).Font
.ColorIndex = 3
.Bold = True
End With
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
Range("E5") = "=""Ce qui donne une somme totale de : ""&SUM(R[13]C[-2]:RC[-2])&"" €"""
Range("E5").Value = Range("E5").Value
If Not Intersect(Target, Range("e5")) Is Nothing And Target.Count = 1 Then
If Target = "" Then
Target.Font.ColorIndex = 1
Target.Font.Bold = False
End If
End If
Application.ScreenUpdating = True
End Sub
Cette macro me donne actuellement le résultat suivant :
Ce que propose DoubleZero au post #2 fonctionne pourtant chez moi
VB:
'Un poil différent pour formater la cellule :
.../...
Range("E5") = "=SUM(R[13]C[-2]:RC[-2])"
Range("E5").NumberFormat = """Ce qui donne une somme totale de : ""# ##0.00 $"
.../...
Merci beaucoup pour ta réponse, effectivement celà fonctionne (la séparation des milles, centaines de mille etc... se fait) mais maintenant la somme n'est plus en gras et en rouge....
Si j'ai bien compris
A tester, le résultat est renvoyé en E5 :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
If Not Intersect(Target, Columns(3)) Is Nothing Then
With Range("E5")
.FormulaR1C1 = "=SUM(RC[-2]:R[13]C[-2])"
.NumberFormat = "# ##0.00 $"
.Value = "Ce qui donne une somme totale de : " & Range("E5").Text
.Characters(Start:=35, Length:=Len([E5]) - 34).Font.ColorIndex = 3
.Characters(Start:=35, Length:=Len([E5]) - 34).Font.Bold = True
End With
End If
Application.ScreenUpdating = True
End Sub
Dans le code, il faut définir .FormulaR1C1 correctement.
Une variante : on se base sur la position des :
VB:
.../...
With Range("E5")
.FormulaR1C1 = "=SUM(RC[-2]:R[13]C[-2])"
.NumberFormat = "# ##0.00 $"
.Value = "En somme totale de : " & Range("E5").Text
Montant = Mid([E5], InStrRev([E5], ":") + 2)
Pos = InStr(1, Range("E5").Text, Montant, vbTextCompare)
With Range("E5").Characters(Start:=Pos, Length:=Len(Montant)).Font
.ColorIndex = 3
.Bold = True
End With
End With
.../...
En complément pour libellule85
VB:
Sub Mise_en_Forme_du_Montant()
Dim LgMontant As Byte, i As Long, Chaîne As String
Chaîne = Range("E5")
For i = 1 To Len(Chaîne)
If Mid(Chaîne, i, 1) = ":" Then Exit For
Next i
LgMontant = Len(Chaîne) - i
With Range("E5").Characters(Start:=i + 1, Length:=LgMontant).Font
.ColorIndex = 3
.Bold = True
End With
End Sub
Oui tu as bien compris : Super !!!!!! Un grand grand merci pour ton aide, c'est vraiment sympa.
J'ai quand même une question : quand je met une nouvelle somme et que je valide le total ne se met pas à jour, je suis obligé de re-cliquer dessus pour que le total change.
Edit : j'ai trouvé le "problème" il faut remplacé Private Sub Worksheet_SelectionChange(ByVal Target As Range) par Private Sub Worksheet_Change(ByVal Target As Range) et celà fonctionne à merveille
Excuses moi de t'embêter une nouvelle fois.
J'ai essayé de transposer la macro pour avoir le résultat en D19 avec les cellules à calculer de D4 à D17
j'ai donc remplacé .FormulaR1C1 = "=SUM(RC[-2]:R[13]C[-2])" par .FormulaR1C1 = "=SUM(R[-15]C:R[-2]C)" et les E5 par D19 mais celà ne fonctionne pas
Essaye le code ci-dessous (chez moi il fonctionne) :
VB:
Application.ScreenUpdating = False
If Not Intersect(Target, Columns(3)) Is Nothing Then
With Range("D19")
.FormulaR1C1 = "=SUM(R[-15]C:R[-2]C)"
.NumberFormat = "# ##0.00 $"
.Value = "Ce qui donne une somme totale de : " & Range("D19").Text
.Characters(Start:=35, Length:=Len([D19]) - 34).Font.ColorIndex = 3
.Characters(Start:=35, Length:=Len([D19]) - 34).Font.Bold = True
End With
End If
Application.ScreenUpdating = True
End Sub
Explications :
Grâce à l'utilisation de With Range ("D19") et du point au début de chaque ligne, Excel sait que tu parle de la cellule D19.
Donc pour ta somme il part de D19.
-------------------------------------------------------------------------
Dans le code R[-15]C
-> R[-15] : signifie qu'il s'agit de la cellule 15 lignes au DESSUS (car le chiffre est négatif, s'il avait été positif cela aurait signifié en dessous) de la cellule D19
-> C : signifie qu'il s'agit de la MEME colonne que la cellule D19 car il n'y a AUCUN chiffre après
=> c'est à dire la cellule D4 comme demandé
-------------------------------------------------------------------------
Dans le code R[-2]C
-> R[-2] : signifie qu'il s'agit de la cellule 2 lignes au DESSUS (car le chiffre est négatif, s'il avait été positif cela aurait signifié en dessous) de la cellule D19
-> C : signifie qu'il s'agit de la MEME colonne que la cellule D19 car il n'y a AUCUN chiffre après
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.