TOP
Somme, nombres, nombre écrit en ukrainien
Description
Il arrive très souvent que nous ayons besoin d'afficher nombres écrits en ukrainien dans Excel . Par exemple, afficher le nombre de pages d'un document écrit - un nombre "27" comme "Двадцять сім" .
De plus, à des fins comptables, le coût d’une transaction commerciale doit être écrit en lettres. Par exemple, le montant 10 568,23 montrer par écrit comment "Десять тисяч п'ятсот шістдесят вісім грн. 23 коп." , c'est-à-dire nécessaire somme en langue ukrainienne , mais Excel n'a pas de fonction standard à ces fins.
VBA code pour la fonction SUMINWORDS
Vous trouverez ci-dessous une fonction prête à l'emploi sur VBA, qui traduit n'importe quel nombre en sa représentation textuelle en ukrainien, c'est-à-dire en numéro écrit .
Cette fonctionnalité doit être ajoutée à votre livre avant utilisation.
Pour ça:
- Appuyez sur ALT+F11 pour ouvrir l'éditeur Visual Basic
- Ajouter un nouveau module vide via le menu Insert - Module
- Copiez et collez ici le texte de cette fonction :
- Function SUMINWORDS(n As Double, curr As Variant, kop As Variant) As String
-
- Dim Nums1, Nums2, Nums3, Nums4 As Variant
-
- Nums0 = Array("", "одна ", "дві ", "три ", "чотири ", "п'ять ", "шість ", "сім ", "вісім ", "дев'ять ")
- Nums1 = Array("", "один ", "два ", "три ", "чотири ", "п'ять ", "шість ", "сім ", "вісім ", "дев'ять ")
- Nums2 = Array("", "десять ", "двадцять ", "тридцять ", "сорок ", "п'ятдесят ", "шістдесят ", "сімдесят ", _
- "вісімдесят ", "дев'яносто ")
- Nums3 = Array("", "сто ", "двісті ", "триста ", "чотириста ", "п'ятсот ", "шістсот ", "сімсот ", _
- "вісімсот ", "дев'ятсот ")
- Nums4 = Array("", "одна ", "дві ", "три ", "чотири ", "п'ять ", "шість ", "сім ", "вісім ", "дев'ять ")
- Nums5 = Array("десять ", "одинадцять ", "дванадцять ", "тринадцять ", "чотирнадцять ", _
- "п'ятнадцять ", "шістнадцять ", "сімнадцять ", "вісімнадцять ", "дев'ятнадцять ")
-
- If n < 1 Then
- SUMINWORDS = "Нуль " & curr & " " & Round((n - Fix(n)) * 100) & " " & kop
-
- If curr = "" Then
- SUMINWORDS = "Нуль"
- End If
-
- Exit Function
- End If
-
- ed = Class(n, 1)
- dec = Class(n, 2)
- sot = Class(n, 3)
- tys = Class(n, 4)
- dectys = Class(n, 5)
- sottys = Class(n, 6)
- mil = Class(n, 7)
- decmil = Class(n, 8)
- sotmil = Class(n, 9)
- bil = Class(n, 10)
-
-
- Select Case bil
- Case 1
- bil_txt = Nums1(bil) & "мільярд "
- Case 2 To 4
- bil_txt = Nums1(bil) & "мільярди "
- Case 5 To 9
- bil_txt = Nums1(bil) & "мільярдів "
- End Select
-
-
- Select Case sotmil
- Case 1 To 9
- sotmil_txt = Nums3(sotmil)
- End Select
-
- Select Case decmil
- Case 1
- mil_txt = Nums5(mil) & "мільйонів "
- GoTo www
- Case 2 To 9
- decmil_txt = Nums2(decmil)
- End Select
-
- Select Case mil
- Case 0
- If decmil > 0 Then mil_txt = Nums4(mil) & "мільйонів "
- Case 1
- mil_txt = Nums1(mil) & "мільйон "
- Case 2, 3, 4
- mil_txt = Nums1(mil) & "мільйона "
- Case 5 To 9
- mil_txt = Nums1(mil) & "мільйонів "
- End Select
-
- If decmil = 0 And mil = 0 And sotmil <> 0 Then sotmil_txt = sotmil_txt & "мільйонів "
-
- www:
- sottys_txt = Nums3(sottys)
-
-
- Select Case dectys
- Case 1
- tys_txt = Nums5(tys) & "тисяч "
- GoTo eee
- Case 2 To 9
- dectys_txt = Nums2(dectys)
- End Select
-
- Select Case tys
- Case 0
- If dectys > 0 Then tys_txt = Nums4(tys) & "тисяч "
- Case 1
- tys_txt = Nums4(tys) & "тисячa "
- Case 2, 3, 4
- tys_txt = Nums4(tys) & "тисячі "
- Case 5 To 9
- tys_txt = Nums4(tys) & "тисяч "
- End Select
-
- If dectys = 0 And tys = 0 And sottys <> 0 Then sottys_txt = sottys_txt & " тисяч "
-
- eee:
- sot_txt = Nums3(sot)
-
-
- Select Case dec
- Case 1
- ed_txt = Nums5(ed)
- GoTo rrr
- Case 2 To 9
- dec_txt = Nums2(dec)
- End Select
-
- ed_txt = Nums0(ed)
-
- rrr:
-
- SUMINWORDS = bil_txt & sotmil_txt & decmil_txt & mil_txt & sottys_txt & dectys_txt _
- & tys_txt & sot_txt & dec_txt & ed_txt & curr & " " & Round((n - Fix(n)) * 100) & " " & kop
-
- If curr = "" Then
- SUMINWORDS = bil_txt & sotmil_txt & decmil_txt & mil_txt & sottys_txt & dectys_txt _
- & tys_txt & sot_txt & dec_txt & ed_txt
- End If
-
- SUMINWORDS = UCase(Mid(SUMINWORDS, 1, 1)) + Mid(SUMINWORDS, 2)
-
- End Function
-
-
- Private Function Class(M, I)
- Class = Int(Int(M - (10 ^ I) * Int(M / (10 ^ I))) / 10 ^ (I - 1))
- End Function
Function SUMINWORDS(n As Double, curr As Variant, kop As Variant) As String
' moonexcel.com.ua
Dim Nums1, Nums2, Nums3, Nums4 As Variant
Nums0 = Array("", "одна ", "дві ", "три ", "чотири ", "п'ять ", "шість ", "сім ", "вісім ", "дев'ять ")
Nums1 = Array("", "один ", "два ", "три ", "чотири ", "п'ять ", "шість ", "сім ", "вісім ", "дев'ять ")
Nums2 = Array("", "десять ", "двадцять ", "тридцять ", "сорок ", "п'ятдесят ", "шістдесят ", "сімдесят ", _
"вісімдесят ", "дев'яносто ")
Nums3 = Array("", "сто ", "двісті ", "триста ", "чотириста ", "п'ятсот ", "шістсот ", "сімсот ", _
"вісімсот ", "дев'ятсот ")
Nums4 = Array("", "одна ", "дві ", "три ", "чотири ", "п'ять ", "шість ", "сім ", "вісім ", "дев'ять ")
Nums5 = Array("десять ", "одинадцять ", "дванадцять ", "тринадцять ", "чотирнадцять ", _
"п'ятнадцять ", "шістнадцять ", "сімнадцять ", "вісімнадцять ", "дев'ятнадцять ")
If n < 1 Then
SUMINWORDS = "Нуль " & curr & " " & Round((n - Fix(n)) * 100) & " " & kop
If curr = "" Then
SUMINWORDS = "Нуль"
End If
Exit Function
End If
' nous divisons le nombre en chiffres à l'aide de la fonction auxiliaire Classe
ed = Class(n, 1)
dec = Class(n, 2)
sot = Class(n, 3)
tys = Class(n, 4)
dectys = Class(n, 5)
sottys = Class(n, 6)
mil = Class(n, 7)
decmil = Class(n, 8)
sotmil = Class(n, 9)
bil = Class(n, 10)
' vérifier des milliards
Select Case bil
Case 1
bil_txt = Nums1(bil) & "мільярд "
Case 2 To 4
bil_txt = Nums1(bil) & "мільярди "
Case 5 To 9
bil_txt = Nums1(bil) & "мільярдів "
End Select
' vérifier des millions
Select Case sotmil
Case 1 To 9
sotmil_txt = Nums3(sotmil)
End Select
Select Case decmil
Case 1
mil_txt = Nums5(mil) & "мільйонів "
GoTo www
Case 2 To 9
decmil_txt = Nums2(decmil)
End Select
Select Case mil
Case 0
If decmil > 0 Then mil_txt = Nums4(mil) & "мільйонів "
Case 1
mil_txt = Nums1(mil) & "мільйон "
Case 2, 3, 4
mil_txt = Nums1(mil) & "мільйона "
Case 5 To 9
mil_txt = Nums1(mil) & "мільйонів "
End Select
If decmil = 0 And mil = 0 And sotmil <> 0 Then sotmil_txt = sotmil_txt & "мільйонів "
www:
sottys_txt = Nums3(sottys)
' nous vérifions des milliers
Select Case dectys
Case 1
tys_txt = Nums5(tys) & "тисяч "
GoTo eee
Case 2 To 9
dectys_txt = Nums2(dectys)
End Select
Select Case tys
Case 0
If dectys > 0 Then tys_txt = Nums4(tys) & "тисяч "
Case 1
tys_txt = Nums4(tys) & "тисячa "
Case 2, 3, 4
tys_txt = Nums4(tys) & "тисячі "
Case 5 To 9
tys_txt = Nums4(tys) & "тисяч "
End Select
If dectys = 0 And tys = 0 And sottys <> 0 Then sottys_txt = sottys_txt & " тисяч "
eee:
sot_txt = Nums3(sot)
' nous vérifions des dizaines
Select Case dec
Case 1
ed_txt = Nums5(ed)
GoTo rrr
Case 2 To 9
dec_txt = Nums2(dec)
End Select
ed_txt = Nums0(ed)
rrr:
' former la dernière ligne
SUMINWORDS = bil_txt & sotmil_txt & decmil_txt & mil_txt & sottys_txt & dectys_txt _
& tys_txt & sot_txt & dec_txt & ed_txt & curr & " " & Round((n - Fix(n)) * 100) & " " & kop
If curr = "" Then
SUMINWORDS = bil_txt & sotmil_txt & decmil_txt & mil_txt & sottys_txt & dectys_txt _
& tys_txt & sot_txt & dec_txt & ed_txt
End If
SUMINWORDS = UCase(Mid(SUMINWORDS, 1, 1)) + Mid(SUMINWORDS, 2)
End Function
' fonction auxiliaire pour la sélection à partir du nombre de chiffres
Private Function Class(M, I)
Class = Int(Int(M - (10 ^ I) * Int(M / (10 ^ I))) / 10 ^ (I - 1))
End Function
Enregistrez le fichier et revenez à Excel.
Utilisation de la fonction
Vous pouvez maintenant insérer la fonction créée dans n'importe quelle cellule de la feuille de ce livre de la manière habituelle - via l'assistant de fonction (bouton
dans la barre de formule, catégorie Défini par l'utilisateur (User defined) ou en le tapant simplement manuellement dans la cellule et en spécifiant la cellule avec la somme comme argument. De plus, dans les paramètres de la fonction, vous pouvez préciser le nom de la devise (hryvnia, dollar, euro, etc.) et le nom des centièmes (centimes, centimes, etc.) :
=SUMINWORDS(texte; devise; centaines)
Si dans le paramètre "concevoir" insérer des guillemets doubles vides ( "" ), alors le montant sera affiché dans son ensemble numéro écrit :
Articles sur le sujet :