formater les euros dans ligne de macro

libellule85

XLDnaute Accro
Bonsoir le forum,

Je cherche désespérément à mettre les euros de cette macro avec le format 10 250.25 €
car actuellement celà me donne 10250.25 €

Code:
Range("E5") = "=""En somme totale de : ""&SUM(R[13]C[-2]:RC[-2])&"" €"""

D'avance merci pour votre aide
 

DoubleZero

XLDnaute Barbatruc
Re : formater les euros dans ligne de macro

Re-bonjour, libellule85, le Forum,

Peut-être ainsi :

Code:
Sub Euros()
With Range("E5")
.FormulaR1C1 = "=SUM(RC[-2]:R[13]C[-2])"
.NumberFormat = """En somme totale de : ""#,##0.00"" €"""
End With
End Sub

A bientôt :)
 

libellule85

XLDnaute Accro
Re : formater les euros dans ligne de macro

Bonjour DoubleZero, JCGL, le forum,

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 :
5a7fc8c6c86b28772612ef9cd32c0.jpg

D'avance merci pour votre aide
 

Pièces jointes

  • 250212.jpg
    250212.jpg
    6.1 KB · Affichages: 94
  • Essai format Libellule85.xls
    32 KB · Affichages: 47
Dernière édition:

DoubleZero

XLDnaute Barbatruc
Re : formater les euros dans ligne de macro

Bonjour, libellule85, JCGL :), le Forum,

Ne parvenant pas à adapter les codes fournis hier au nouveau besoin, je te suggère deux nouvelles options, certes moins élégantes mais fonctionnelles.

A bientôt :)
 

Pièces jointes

  • 00 - libellule85 - Chiffre colorer V2.xls
    109.5 KB · Affichages: 53

klin89

XLDnaute Accro
Re : formater les euros dans ligne de macro

Bonjour le forum, :)

Ce que propose DoubleZero au post #2 fonctionne pourtant chez moi :confused:
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 $"
.../...

Klin89
 

klin89

XLDnaute Accro
Re : formater les euros dans ligne de macro

Re libellule85

Si j'ai bien compris :p
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

Klin89
 
Dernière édition:

libellule85

XLDnaute Accro
re Klin89,

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" :p il faut remplacé Private Sub Worksheet_SelectionChange(ByVal Target As Range) par Private Sub Worksheet_Change(ByVal Target As Range) et celà fonctionne à merveille
 
Dernière édition:

klin89

XLDnaute Accro
Re : formater les euros dans ligne de macro

Re libellule85

Précision : l'événement Worksheet_Change se redéclenchera lors de l'exécution de ces 2 instructions :
VB:
.FormulaR1C1 = "=SUM(RC[-2]:R[13]C[-2])"
.Value = "En somme totale de : " & Range("E5").Text
Ce qui peut provoquer quelques désagréments.
Passe en mode pas à pas, tu verras :eek:

Klin89
 

libellule85

XLDnaute Accro
Re : formater les euros dans ligne de macro

Bonjour Klin89, le forum,

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 :confused:
 

Excel-lent

XLDnaute Barbatruc
Re : formater les euros dans ligne de macro

Bonsoir Libellule85, le fil,


Libellule85 à dit:
avoir le résultat en D19 avec les cellules à calculer de D4 à D17


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

=> c'est à dire la cellule D17 comme demandé ;)


Bonne journée
 
Dernière édition:

Discussions similaires

Réponses
11
Affichages
420

Statistiques des forums

Discussions
312 088
Messages
2 085 199
Membres
102 816
dernier inscrit
bolivier