اذهب الي المحتوي
أوفيسنا

تفقيط مبلغ في تقرير


moham_q

الردود الموصى بها

السلام عليكم الاخوة الاعزاء في المنتدى ... في المرفق ادناه تقرير مصدره استعلام لمجموع مبلغ يحوي حقل نصي والذي احتاجه طريقة تفقيط المبلغ في الحقل النصي الذي يظهر في فورمه التقرير 

 ... تحياتي وشكري لجميع الاخوة في المنتدى وشكراااااا

تفقيط مبلغ.rar

رابط هذا التعليق
شارك

الاخ علي المحترم ... بارك الله فيك و جزاك خيرا ... لدي سؤال عن كيفية الربط بين مربعي النص في التقرير الذي انا ارفقته حيث ان الكود الموجود في الموديلز لم يتضح لي منه عن طريقة الربط واذا كان التفقيط كمبلغ بالدينار بدل درجة كيف سيكون الكود .. خالص امتناني وتقديري

رابط هذا التعليق
شارك

11 ساعات مضت, moham_q said:

الاخ علي المحترم ... بارك الله فيك و جزاك خيرا ... لدي سؤال عن كيفية الربط بين مربعي النص في التقرير الذي انا ارفقته حيث ان الكود الموجود في الموديلز لم يتضح لي منه عن طريقة الربط واذا كان التفقيط كمبلغ بالدينار بدل درجة كيف سيكون الكود .. خالص امتناني وتقديري

اتفضل اخي

قاعدة بياناتك بعد تعديل

اضفت فانكشن لتحويل الارقام الى الاحرف NoToTXT

اضفت مربع نصي في تقرير

وفي مصدره كتبت هذا الكود

=" نؤيد لكم صحة المعلومات  حيث بلغ المجموع الكلي للرواتب ( " & NoToTxt([Text0];"دينار";"فلس") & " ) لاغيرها"

=" نؤيد لكم صحة المعلومات  حيث بلغ المجموع الكلي للرواتب ( " & NoToTxt([Text0];"دينار";"فلس") & " ) لاغيرها"

تكدر تغير دينار بدولار مثلا

و فلس بالسنت مثلا

تفقيط مبلغ.rar

رابط هذا التعليق
شارك

  • 2 years later...

جرب هذا  اخي salimboub24 وانسخها في الوحدة النمطية بإسم مثلا "convertir-chiffres-lettres" واستدعي الدالة

=NbEnLettres([مربع النص الذي به المبلغ في التقرير];"DA";"cm") & " "
Public Function ConvertNbLettres(NB, DA As String) As String

Dim varnum, varnumD, varnumU, resultat, varlet
Static chiffre(1 To 19)
chiffre(1) = "un"
chiffre(2) = "deux"
chiffre(3) = "trois"
chiffre(4) = "quatre"
chiffre(5) = "cinq"
chiffre(6) = "six"
chiffre(7) = "sept"
chiffre(8) = "huit"
chiffre(9) = "neuf"
chiffre(10) = "dix"
chiffre(11) = "onze"
chiffre(12) = "douze"
chiffre(13) = "treize"
chiffre(14) = "quatorze"
chiffre(15) = "quinze"
chiffre(16) = "seize"
chiffre(17) = "dix-sept"
chiffre(18) = "dix-huit"
chiffre(19) = "dix-neuf"
Static dizaine(1 To 8)
dizaine(1) = "dix"
dizaine(2) = "vingt"
dizaine(3) = "trente"
dizaine(4) = "quarante"
dizaine(5) = "cinquante"
dizaine(6) = "soixante"
dizaine(8) = "quatre-vingt"

'traitement du cas 0 frs
If NB >= 1 Then
resultat = ""
Else
resultat = "zéro"
GoTo fintraitementfrancs
End If

'traitement des millions
varnum = Int(NB / 1000000)
If varnum > 0 Then
GoSub centaine_dizaine
resultat = varlet + " million"
If varlet <> "un" Then: resultat = resultat + "s"
End If

'traitement des milliers
varnum = Int(NB) Mod 1000000
varnum = Int(varnum / 1000)
If varnum > 0 Then
GoSub centaine_dizaine
If varlet <> "un" Then: resultat = resultat + " " + varlet
resultat = resultat + " mille"
End If

'traitement des centaines et dizaines
varnum = Int(NB) Mod 1000
If varnum > 0 Then
GoSub centaine_dizaine
resultat = resultat + " " + varlet
End If
resultat = LTrim(resultat)
varlet = Right$(resultat, 4)

'traitement du "s" final pour vingt et cent et du "de" pour million
Select Case varlet
Case "cent", "ingt"
resultat = resultat + "s"
Case "lion", "ions"
resultat = resultat + " de"
End Select

fintraitementfrancs:
resultat = resultat + " " + DA
If NB > 2 Then: resultat = resultat + "s"

'traitement des centimes
varnum = Int((NB - Int(NB)) * 100 + 0.5)
If varnum > 0 Then
GoSub centaine_dizaine
resultat = resultat + " et " + varlet + " centime"
If varnum > 1 Then: resultat = resultat + "s"
End If

' conversion 1ère lettre en majuscule
resultat = UCase(Left(resultat, 1)) + Right(resultat, Len(resultat) - 1)

'renvoi du resultat de la fonction et fin de la fonction
ConvertNbLettres = resultat
Exit Function

'sous programme
centaine_dizaine:

varlet = ""

'traitement des centaines
If varnum >= 100 Then
varlet = chiffre(Int(varnum / 100))
varnum = varnum Mod 100
If varlet = "un" Then
varlet = "cent "
Else
varlet = varlet + " cent "
End If
End If

'traitement des dizaines
If varnum <= 19 Then
If varnum > 0 Then: varlet = varlet + chiffre(varnum)
Else
varnumD = Int(varnum / 10)
varnumU = varnum Mod 10
Select Case varnumD
Case Is <= 5
varlet = varlet + dizaine(varnumD)
Case 6, 7
varlet = varlet + dizaine(6)
Case 8, 9
varlet = varlet + dizaine(8)
End Select
If varnumU = 1 And varnumD < 8 Then
varlet = varlet + " et "
Else
If varnumU <> 0 Or varnumD = 7 Or varnumD = 9 Then: varlet = varlet
+ " "
End If
If varnumD = 7 Or varnumD = 9 Then: varnumU = varnumU + 10
If varnumU <> 0 Then: varlet = varlet + chiffre(varnumU)
End If
varlet = RTrim(varlet)
Return

End Function

 

تم تعديل بواسطه كريمو2
رابط هذا التعليق
شارك

في ١٩‏/٣‏/٢٠١٩ at 16:07, كريمو2 said:

=NbEnLettres([مربع النص الذي به المبلغ في التقرير];"DA";"cm") & " "

 شكرا لك أخي هذه العملية لم تصلح 

لقد ارسلت لك ملف  البرنامج كاملا حمله وارجو ان تقوم بالتعديل عليه 

لاحظ أخي في الاسفل المبلغ مكتوب 192000.00 هة فيه خطأ 

لانني قمت بترجمة ملف التفقيط قديم بالانجليزيى

 

image.png.f4d7c7e76c758563db4b14ae3d145ee8.png

image.png

ORDRE DE VERSEMENT.rar

رابط هذا التعليق
شارك

في ١٩‏/٣‏/٢٠١٩ at 16:07, كريمو2 said:

جرب هذا  اخي salimboub24 وانسخها في الوحدة النمطية بإسم مثلا "convertir-chiffres-lettres" واستدعي الدالة


=NbEnLettres([مربع النص الذي به المبلغ في التقرير];"DA";"cm") & " "

Public Function ConvertNbLettres(NB, DA As String) As String

Dim varnum, varnumD, varnumU, resultat, varlet
Static chiffre(1 To 19)
chiffre(1) = "un"
chiffre(2) = "deux"
chiffre(3) = "trois"
chiffre(4) = "quatre"
chiffre(5) = "cinq"
chiffre(6) = "six"
chiffre(7) = "sept"
chiffre(8) = "huit"
chiffre(9) = "neuf"
chiffre(10) = "dix"
chiffre(11) = "onze"
chiffre(12) = "douze"
chiffre(13) = "treize"
chiffre(14) = "quatorze"
chiffre(15) = "quinze"
chiffre(16) = "seize"
chiffre(17) = "dix-sept"
chiffre(18) = "dix-huit"
chiffre(19) = "dix-neuf"
Static dizaine(1 To 8)
dizaine(1) = "dix"
dizaine(2) = "vingt"
dizaine(3) = "trente"
dizaine(4) = "quarante"
dizaine(5) = "cinquante"
dizaine(6) = "soixante"
dizaine(8) = "quatre-vingt"

'traitement du cas 0 frs
If NB >= 1 Then
resultat = ""
Else
resultat = "zéro"
GoTo fintraitementfrancs
End If

'traitement des millions
varnum = Int(NB / 1000000)
If varnum > 0 Then
GoSub centaine_dizaine
resultat = varlet + " million"
If varlet <> "un" Then: resultat = resultat + "s"
End If

'traitement des milliers
varnum = Int(NB) Mod 1000000
varnum = Int(varnum / 1000)
If varnum > 0 Then
GoSub centaine_dizaine
If varlet <> "un" Then: resultat = resultat + " " + varlet
resultat = resultat + " mille"
End If

'traitement des centaines et dizaines
varnum = Int(NB) Mod 1000
If varnum > 0 Then
GoSub centaine_dizaine
resultat = resultat + " " + varlet
End If
resultat = LTrim(resultat)
varlet = Right$(resultat, 4)

'traitement du "s" final pour vingt et cent et du "de" pour million
Select Case varlet
Case "cent", "ingt"
resultat = resultat + "s"
Case "lion", "ions"
resultat = resultat + " de"
End Select

fintraitementfrancs:
resultat = resultat + " " + DA
If NB > 2 Then: resultat = resultat + "s"

'traitement des centimes
varnum = Int((NB - Int(NB)) * 100 + 0.5)
If varnum > 0 Then
GoSub centaine_dizaine
resultat = resultat + " et " + varlet + " centime"
If varnum > 1 Then: resultat = resultat + "s"
End If

' conversion 1ère lettre en majuscule
resultat = UCase(Left(resultat, 1)) + Right(resultat, Len(resultat) - 1)

'renvoi du resultat de la fonction et fin de la fonction
ConvertNbLettres = resultat
Exit Function

'sous programme
centaine_dizaine:

varlet = ""

'traitement des centaines
If varnum >= 100 Then
varlet = chiffre(Int(varnum / 100))
varnum = varnum Mod 100
If varlet = "un" Then
varlet = "cent "
Else
varlet = varlet + " cent "
End If
End If

'traitement des dizaines
If varnum <= 19 Then
If varnum > 0 Then: varlet = varlet + chiffre(varnum)
Else
varnumD = Int(varnum / 10)
varnumU = varnum Mod 10
Select Case varnumD
Case Is <= 5
varlet = varlet + dizaine(varnumD)
Case 6, 7
varlet = varlet + dizaine(6)
Case 8, 9
varlet = varlet + dizaine(8)
End Select
If varnumU = 1 And varnumD < 8 Then
varlet = varlet + " et "
Else
If varnumU <> 0 Or varnumD = 7 Or varnumD = 9 Then: varlet = varlet
+ " "
End If
If varnumD = 7 Or varnumD = 9 Then: varnumU = varnumU + 10
If varnumU <> 0 Then: varlet = varlet + chiffre(varnumU)
End If
varlet = RTrim(varlet)
Return

End Function

 

السلام عليكم أخي اذا امكنك أريد مثال للتحميل

رابط هذا التعليق
شارك

لقد اضفت وحدة نمطية احرى

تفقيط التقرير اصبح يشتغل اما تفقيط الفورم فاظن المشكلة في اصدار الاكسس

Base de données11.accdb

تم تعديل بواسطه كريمو2
رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information