Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA - transformar les décimales numériques selon condition

1 réponse
Avatar
PauloSub21
Bonjour,

Je suis novice avec le VBA Excel, j'ai déjà réussi à faire certaines choses simples, mais aujourd'hui j'ai un problème que je pense pouvoir résoudre avec le VBA.

Sur mon fichier Excel, je souhaiterais afficher des montants avec un visuel différent s'il s'agit de montant rond ou avec des centimes, à savoir:

1'000.--
1'000.25
1'000.05
2'111.--
etc...

Est-ce qu'il existe une fonction VBA pour changer visuellement ces montants.

J'ai testé le format personnalisé directement dans la cellule, mais ça ne fonctionne pas.

Est-ce que quelqu'un pourrait m'aider dans le forum?

Je vous remercie d'avance

1 réponse

Avatar
MichD
Le 16/10/21 Í  17:39, PauloSub21 a écrit :
Bonjour,
Je suis novice avec le VBA Excel, j'ai déjÍ  réussi Í  faire certaines choses
simples, mais aujourd'hui j'ai un problème que je pense pouvoir résoudre avec le
VBA.
Sur mon fichier Excel, je souhaiterais afficher des montants avec un visuel
différent s'il s'agit de montant rond ou avec des centimes, Í  savoir:
1'000.--
1'000.25
1'000.05
2'111.--
etc...
Est-ce qu'il existe une fonction VBA pour changer visuellement ces montants.
J'ai testé le format personnalisé directement dans la cellule, mais ça ne
fonctionne pas.
Est-ce que quelqu'un pourrait m'aider dans le forum?
Je vous remercie d'avance

Bonjour,
Je n'ai pas vraiment compris ce que tu voulais.
Donne quelques exemples concerts du contenu actuel des cellules et
l'affichage que tu voudrais obtenir du contenu de ces cellules.
La seule manière d'obtenir dans une colonne un format comme celui-ci :
A ) Tu fais un clic droit sur l'onglet de la feuille o͹ l'action se déroule.
B ) Dans la page blanche ouverte par l'éditeur de code, tu copies la
procédure suivante. Dans mon exemple, j'ai utilisé la colonne "A" Í 
partir de A1:Ax x étant la dernière ligne non vide de la colonne. La
procédure suppose que toutes les données de la plage sont des entrées
numériques.
Dans cette ligne de code :
Set Rg = Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)
Remplace le A par la lettre de la colonne
et le 1 par le numéro de la première ligne des données numériques de la
colonne.
Moi, j'ai supposé que tu saisis les valeurs comme ceci :
1000
1000,52
2563,45
3000
Le résultat que tu vas obtenir après la saisie d'une donnée sera :
1000.--
1000,52
2563,45
3000.--
Cette procédure ne traite pas les données déjÍ  présentes dans la
feuille, mais affecte seulement le format de la cellule lors de la saisie.
'---------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg As Range, C As Range
Set Rg = Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)
If Not Intersect(Target, Rg) Is Nothing Then
For Each C In Rg
If C - CLng(C) > 0 Then
C.NumberFormat = "### ##0.00"
Else
Application.EnableEvents = False
C.Value = C.Value * 1
C.NumberFormat = "### ##0"",--"""
Application.EnableEvents = True
End If
Next
End If
End Sub
'---------------------------------
MichD