Programmation VBA majuscule
Résolu/Fermé
laeti_1364
Messages postés
7
Date d'inscription
lundi 2 mai 2022
Statut
Membre
Dernière intervention
12 mai 2022
-
Modifié le 11 juin 2022 à 14:28
ALS35 Messages postés 1033 Date d'inscription jeudi 18 juillet 2019 Statut Membre Dernière intervention 9 janvier 2024 - 11 juin 2022 à 14:23
ALS35 Messages postés 1033 Date d'inscription jeudi 18 juillet 2019 Statut Membre Dernière intervention 9 janvier 2024 - 11 juin 2022 à 14:23
A voir également:
- Majuscule vba
- É majuscule - Guide
- Mettre un texte en majuscule - Guide
- Code ascii de a majuscule - Guide
- Find vba - Astuces et Solutions
- Vba attendre 1 seconde ✓ - Forum VB / VBA
2 réponses
ALS35
Messages postés
1033
Date d'inscription
jeudi 18 juillet 2019
Statut
Membre
Dernière intervention
9 janvier 2024
139
4 mai 2022 à 11:11
4 mai 2022 à 11:11
Bonjour,
Programme compliqué !
Essaie de remplacer les deux dernières instructions par celles-ci :
Cordialement
Programme compliqué !
Essaie de remplacer les deux dernières instructions par celles-ci :
Dim e As String If centime = 0 Then d = "": myct = "": et = "" Else e = " et " chiffrelettre = UCase(t & e & d & myct)
Cordialement
brucine
Messages postés
18317
Date d'inscription
lundi 22 février 2021
Statut
Membre
Dernière intervention
20 décembre 2024
2 712
4 mai 2022 à 11:12
4 mai 2022 à 11:12
Bonjour,
C'est normal puisque "centimes" est en minuscules.
Le sujet est traité ici, mais pas en VBA:
https://forums.commentcamarche.net/forum/affich-37516117-convertir-des-chiffres-en-lettres-avec-une-unique-formule
C'est normal puisque "centimes" est en minuscules.
Le sujet est traité ici, mais pas en VBA:
https://forums.commentcamarche.net/forum/affich-37516117-convertir-des-chiffres-en-lettres-avec-une-unique-formule
Bonjour, j'ai un petit soucis au niveau du VBA.
Par exemple, lorsque j'ai un montant de 178,00€ il m'écris "UN CENT SEPTANTE HUIT EUROS" J'aimerai qu'il écrive uniquement "CENT SEPTANTE HUIT EUROS"
Par exemple, lorsque j'ai un montant de 178,00€ il m'écris "UN CENT SEPTANTE HUIT EUROS" J'aimerai qu'il écrive uniquement "CENT SEPTANTE HUIT EUROS"
Function chiffrelettre(s) Dim a As Variant, gros As Variant a = Array("", "UN", "DEUX", "TROIS", "QUATRE", "CINQ", "SIX", "SEPT", _ "HUIT", "NEUF", "DIX", "ONZE", "DOUZE", "TREIZE", "QUATORZE", "QUINZE", "SEIZE", "DIX SEPT", _ "DIX HUIT", "DIX NEUF", "VINGT", "VINGT ET UN", "VINGT DEUX", "VINGT TROIS", "VINGT QUATRE", _ "VINGT CINQ", "VINGT SIX", "VINGT SEPT", "VINGT HUIT", "VINGT NEUF", "TRENTE", "TRENTE ET UN", _ "TRENTE DEUX", "TRENTE TROIS", "TRENTE QUATRE", "TRENTE CINQ", "TRENTE SIX", "TRENTE SEPT", _ "TRENTE HUIT", "TRENTE NEUF", "QUARANTE", "QUARANTE ET UN", "QUARANTE DEUX", "QUARANTE TROIS", _ "QUARANTE QUATRE", "QUARANTE CINQ", "QUARANTE SIX", "QUARANTE SEPT", "QUARANTE HUIT", _ "QUARANTE NEUF", "CINQUANTE", "CINQUANTE ET UN", "CINQUANTE DEUX", "CINQUANTE TROIS", _ "CINQUANTE QUATRE", "CINQUANTE CINQ", "CINQUANTE SIX", "CINQUANTE SEPT", "CINQUANTE HUIT", _ "CINQUANTE NEUF", "SOIXANTE", "SOIXANTE ET UN", "SOIXANTE DEUX", "SOIXANTE TROIS", _ "SOIXANTE QUATRE", "SOIXANTE CINQ", "SOIXANTE SIX", "SOIXANTE SEPT", "SOIXANTE HUIT", _ "SOIXANTE NEUF", "SEPTANTE", "SEPTANTE ET UN", "SEPTENTE DEUX", _ "SEPTENTE QUATRE", "SEPTANTE CINQ", "SEPTANTE SIX", "SEPTANTE SEPT", _ "SEPTANTE HUIT", "SEPTANTE NEUF", "QUATRE-VINGTS", "QUATRE-VINGT UN", _ "QUATRE-VINGT DEUX", "QUATRE-VINGT TROIS", "QUATRE-VINGT QUATRE", "QUATRE-VINGT CINQ", _ "QUATRE-VINGT SIX", "QUATRE-VINGT SEPT", "QUATRE-VINGT HUIT", "QUATRE-VINGT NEUF", _ "NONANTE", "NONANTE ET UN", "NONANTE DEUX", "NONANTE TROIS", _ "NONANTE QUATRE", "NONANTE CINQ", "NONANTE SIX", "NONANTE SEPT", _ "NONANTE HUIT", "NONANTE NEUF") gros = Array("", "billions", "milliards", "millions", "mille", "EUROS", "billion", _ "milliard", "million", "mille", "Euro") sp = Space(1) chaine = "00000000000000" centime = s * 100 - (Int(s) * 100) s = Str(Int(s)): lg = Len(s) - 1: s = Right(s, lg): lg = Len(s) If lg < 15 Then chaine = Mid(chaine, 1, (15 - lg)) Else chaine = "" s = chaine + s 'billions au centaines gp = 1 For k = 1 To 5 x = Mid(s, gp, 1): c = a(Val(x)) x = Mid(s, gp + 1, 2): d = a(Val(x)) If k = 5 Then If t2 <> "" And c & d = "" Then mydz = "Euros" & sp: GoTo fin If t <> "" And c = "" And d = "un" Then mydz = "un Euros" & sp: GoTo fin If t <> "" And t2 = "" And c & d = "" Then mydz = "d'Euros" & sp: GoTo fin If t & c & d = "" Then myct = "": mydz = "": GoTo fin End If If c & d = "" Then GoTo fin If d = "" And c <> "" And c <> "un" Then mydz = c & sp & "cents " & gros(k) & sp: GoTo fin If d = "" And c = "un" Then mydz = "CENT " & gros(k) & sp: GoTo fin If d = "un" And c = "" Then myct = IIf(k = 4, gros(k) & sp, "un " & gros(k + 5) & sp): GoTo fin If d <> "" And c = "un" Then mydz = "cent" & sp If d <> "" And c <> "" And c <> "un" Then mydz = c & sp & "cent" + sp myct = d & sp & gros(k) & sp fin: t2 = mydz & myct t = t & mydz & myct mydz = "": myct = "" gp = gp + 3 Next d = a(centime) If t <> "" Then myct = IIf(centime = 1, " centime", " centimes") If t = "" Then myct = IIf(centime = 1, " centime d'Euro", " centimes d 'Euro") Dim e As String If centime = 0 Then d = "": myct = "": et = "" Else e = "et " chiffrelettre = UCase(t & e & d & myct) End Function
ALS35
Messages postés
1033
Date d'inscription
jeudi 18 juillet 2019
Statut
Membre
Dernière intervention
9 janvier 2024
139
>
laeti_1364
11 juin 2022 à 14:23
11 juin 2022 à 14:23
Bonjour,
1) C'est parce que tes valeurs définies sont en majuscule
(a = Array("", "UN", "DEUX", "TROIS", "QUATRE", "CINQ", "SIX", "SEPT", _ )
et que le code vba compare avec la chaîne en minuscule "un"
Soit tu passes toutes tes valeurs en minuscules, ce qui est plus juste à mon avis (et tant qu'à faire en mettant les traits d'union), soit tu places l'instruction
2) tu as un autre souci pour les valeurs inférieures à 1 euro avec le mot et qui est ajouté à tort
Remplace l'avant dernière instruction par :
Cordialement
1) C'est parce que tes valeurs définies sont en majuscule
(a = Array("", "UN", "DEUX", "TROIS", "QUATRE", "CINQ", "SIX", "SEPT", _ )
et que le code vba compare avec la chaîne en minuscule "un"
Soit tu passes toutes tes valeurs en minuscules, ce qui est plus juste à mon avis (et tant qu'à faire en mettant les traits d'union), soit tu places l'instruction
Option Compare Texten début de module qui permet de s’affranchir des minuscules et majuscules
2) tu as un autre souci pour les valeurs inférieures à 1 euro avec le mot et qui est ajouté à tort
Remplace l'avant dernière instruction par :
If centime = 0 Then d = "": myct = "": e = "" Else If t <> "" Then e = "et "
Cordialement
4 mai 2022 à 11:25
Belle journée à vous