Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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 :


D'avance merci pour votre aide
 

Pièces jointes

  • 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
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
 

libellule85

XLDnaute Accro
Re : formater les euros dans ligne de macro

Bonjour Klin89,

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....
 

klin89

XLDnaute Accro
Re : formater les euros dans ligne de macro

Re libellule85

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

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" 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

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
 

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
439
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…