creer une facture sur un devis

grisan29

XLDnaute Accro
bonjour a vous tous

dans le fichier joint, quelle serai la solution pour récupérer un devis sous
"c:\Facture" & "\Devis\"
, soit pour le transformer en facture, où pour le modifier

Merci de votre compréhension
j'ai oublier de vous dire que le bouton "nouvelle feuille" fonctionne bien

Pascal
 
Dernière édition:

grisan29

XLDnaute Accro
Re : creer une facture sur un devis

bonjour a vous tous

je vous joint une évolution mais qui ne fait pas ce qu'il faut
j'arrive a ouvrir la feuille sauvegardée mais c'est tout, il faudrait que ses données soit transférées dans le fichier qui la créer c'est le problème
je me suis peut être pris a l'envers pour créer ce fichier mais tant pis

Pascal
 

pascal21

XLDnaute Barbatruc
Re : creer une facture sur un devis

bonjour
chez moi la ligne de convertion chiffres en lettres ne fonctionne pas alors je te donne à tout hasard un code trouvé sur le forum
Code:
Option Explicit





'***********


' Devise=0   aucune
'        =1   Euro €
'        =2   Dollar 
' Langue=0   Français
'        =1   Belgique
'        =2   Suisse
'***********
' Conversion limitée à 999 999 999 999  999 ou 9 999 999 999 999,99

' si le nombre contient plus de 2  décimales, il est arrondit à 2 décimales

Public Function ConvNumberLetter(Nombre  As Double, Optional Devise As Byte = 0, _
                                  Optional  Langue As Byte = 0) As String

    Dim dblEnt As Variant, byDec As Byte
  
     Dim bNegatif As Boolean

   Dim strDev As String, strCentimes As String
   If Nombre < 0 Then
       bNegatif = True
       Nombre = Abs(Nombre)
     End If
     dblEnt = Int(Nombre)
    byDec = CInt((Nombre - dblEnt) * 100)
    If byDec = 0 Then
        If dblEnt > 999999999999999# Then
           ConvNumberLetter =  "#TropGrand"
           Exit Function
        End If
    Else
        If dblEnt > 9999999999999.99 Then
        ConvNumberLetter =  "#TropGrand"
           Exit Function
         End If
     End If
    Select Case Devise
        Case 0
            If byDec > 0 Then strDev =  " virgule "
         Case 1
            strDev = " Euro"
 [/TR]
 [TR]
  [TD]            If dblEnt >= 1000000 And  Right$(dblEnt, 6) = "000000" Then strDev = " d'Euro"[/TD]
 [/TR]
 [TR]
  [TD]            If byDec > 0 Then strCentimes  = strCentimes & " Cent"[/TD]
 [/TR]
 [TR]
  [TD]            If byDec > 1 Then strCentimes  = strCentimes & "s"[/TD]
 [/TR]
 [TR]
  [TD]         Case 2[/TD]
 [/TR]
 [TR]
  [TD]            strDev = " Dollar"[/TD]
 [/TR]
 [TR]
  [TD]            If byDec > 0 Then strCentimes  = strCentimes & " Cent"[/TD]
 [/TR]
 [TR]
  [TD]     End Select[/TD]
 [/TR]
 [TR]
  [TD]     If dblEnt > 1 And Devise <> 0 Then strDev = strDev &  "s"[/TD]
 [/TR]
 [TR]
  [TD]     strDev = strDev & " "[/TD]
 [/TR]
 [TR]
  [TD]     If dblEnt = 0 Then[/TD]
 [/TR]
 [TR]
  [TD]         ConvNumberLetter = "zéro " & strDev[/TD]
 [/TR]
 [TR]
  [TD]     Else[/TD]
 [/TR]
 [TR]
  [TD]         ConvNumberLetter = ConvNumEnt(CDbl(dblEnt), Langue) & strDev[/TD]
 [/TR]
 [TR]
  [TD]     End If[/TD]
 [/TR]
 [TR]
  [TD]     If byDec = 0 Then[/TD]
 [/TR]
 [TR]
  [TD]         If Devise <> 0 Then ConvNumberLetter = ConvNumberLetter &  "zéro Cent"[/TD]
 [/TR]
 [TR]
  [TD]     Else[/TD]
 [/TR]
 [TR]
  [TD]         If Devise = 0 Then[/TD]
 [/TR]
 [TR]
  [TD]            ConvNumberLetter =  ConvNumberLetter & _[/TD]
 [/TR]
 [TR]
  [TD]                ConvNumDizaine(byDec, Langue,  True) & strCentimes[/TD]
 [/TR]
 [TR]
  [TD]         Else[/TD]
 [/TR]
 [TR]
  [TD]            ConvNumberLetter =  ConvNumberLetter & _[/TD]
 [/TR]
 [TR]
  [TD]                ConvNumDizaine(byDec, Langue,  False) & strCentimes[/TD]
 [/TR]
 [TR]
  [TD]         End If[/TD]
 [/TR]
 [TR]
  [TD]     End If[/TD]
 [/TR]
 [TR]
  [TD]     ConvNumberLetter = Replace(ConvNumberLetter, "  ", " ")[/TD]
 [/TR]
 [TR]
  [TD]     If Left(ConvNumberLetter, 1) = " " Then ConvNumberLetter = _[/TD]
 [/TR]
 [TR]
  [TD]         Right$(ConvNumberLetter, Len(ConvNumberLetter) - 1)[/TD]
 [/TR]
 [TR]
  [TD]     If Right$(ConvNumberLetter, 1) = " " Then ConvNumberLetter =  _[/TD]
 [/TR]
 [TR]
  [TD]         Left(ConvNumberLetter, Len(ConvNumberLetter) - 1)[/TD]
 [/TR]
 [TR]
  [TD]End Function[/TD]
 [/TR]
 [TR]
  [TD][/TD]
 [/TR]
 [TR]
  [TD]Private Function ConvNumEnt(Nombre As  Double, Langue As Byte)[/TD]
 [/TR]
 [TR]
  [TD][/TD]
 [/TR]
 [TR]
  [TD]     Dim iTmp As Variant, dblReste As Double[/TD]
 [/TR]
 [TR]
  [TD]     Dim strTmp As String[/TD]
 [/TR]
 [TR]
  [TD]     Dim iCent As Integer, iMille As Integer, iMillion As Integer[/TD]
 [/TR]
 [TR]
  [TD]     Dim iMilliard As Integer, iBillion As Integer[/TD]
 [/TR]
 [TR]
  [TD]    [/TD]
 [/TR]
 [TR]
  [TD]     iTmp = Nombre - (Int(Nombre / 1000) * 1000)[/TD]
 [/TR]
 [TR]
  [TD]     iCent = CInt(iTmp)[/TD]
 [/TR]
 [TR]
  [TD]     ConvNumEnt = Nz(ConvNumCent(iCent, Langue))[/TD]
 [/TR]
 [TR]
  [TD]     dblReste = Int(Nombre / 1000)[/TD]
 [/TR]
 [TR]
  [TD]     If iTmp = 0 And dblReste = 0 Then Exit Function[/TD]
 [/TR]
 [TR]
  [TD]     iTmp = dblReste - (Int(dblReste / 1000) * 1000)[/TD]
 [/TR]
 [TR]
  [TD]     If iTmp = 0 And dblReste = 0 Then Exit Function[/TD]
 [/TR]
 [TR]
  [TD]     iMille = CInt(iTmp)[/TD]
 [/TR]
 [TR]
  [TD]     strTmp = ConvNumCent(iMille, Langue)[/TD]
 [/TR]
 [TR]
  [TD]     Select Case iTmp[/TD]
 [/TR]
 [TR]
  [TD]         Case 0[/TD]
 [/TR]
 [TR]
  [TD]         Case 1[/TD]
 [/TR]
 [TR]
  [TD]            strTmp = " mille "[/TD]
 [/TR]
 [TR]
  [TD]         Case Else[/TD]
 [/TR]
 [TR]
  [TD]            strTmp = strTmp & "  mille "[/TD]
 [/TR]
 [TR]
  [TD]     End Select[/TD]
 [/TR]
 [TR]
  [TD]     If iMille = 0 And iCent > 0 Then ConvNumEnt = "et " &  ConvNumEnt[/TD]
 [/TR]
 [TR]
  [TD]     ConvNumEnt = Nz(strTmp) & ConvNumEnt[/TD]
 [/TR]
 [TR]
  [TD]     dblReste = Int(dblReste / 1000)[/TD]
 [/TR]
 [TR]
  [TD]     iTmp = dblReste - (Int(dblReste / 1000) * 1000)[/TD]
 [/TR]
 [TR]
  [TD]     If iTmp = 0 And dblReste = 0 Then Exit Function[/TD]
 [/TR]
 [TR]
  [TD]     iMillion = CInt(iTmp)[/TD]
 [/TR]
 [TR]
  [TD]     strTmp = ConvNumCent(iMillion, Langue)[/TD]
 [/TR]
 [TR]
  [TD]     Select Case iTmp[/TD]
 [/TR]
 [TR]
  [TD]         Case 0[/TD]
 [/TR]
 [TR]
  [TD]         Case 1[/TD]
 [/TR]
 [TR]
  [TD]            strTmp = strTmp & "  million "[/TD]
 [/TR]
 [TR]
  [TD]         Case Else[/TD]
 [/TR]
 [TR]
  [TD]            strTmp = strTmp & "  millions "[/TD]
 [/TR]
 [TR]
  [TD]     End Select[/TD]
 [/TR]
 [TR]
  [TD]     If iMille = 1 Then ConvNumEnt = "et " & ConvNumEnt[/TD]
 [/TR]
 [TR]
  [TD]     ConvNumEnt = Nz(strTmp) & ConvNumEnt[/TD]
 [/TR]
 [TR]
  [TD]     dblReste = Int(dblReste / 1000)[/TD]
 [/TR]
 [TR]
  [TD]     iTmp = dblReste - (Int(dblReste / 1000) * 1000)[/TD]
 [/TR]
 [TR]
  [TD]     If iTmp = 0 And dblReste = 0 Then Exit Function[/TD]
 [/TR]
 [TR]
  [TD]     iMilliard = CInt(iTmp)[/TD]
 [/TR]
 [TR]
  [TD]     strTmp = ConvNumCent(iMilliard, Langue)[/TD]
 [/TR]
 [TR]
  [TD]     Select Case iTmp[/TD]
 [/TR]
 [TR]
  [TD]         Case 0[/TD]
 [/TR]
 [TR]
  [TD]         Case 1[/TD]
 [/TR]
 [TR]
  [TD]            strTmp = strTmp & "  milliard "[/TD]
 [/TR]
 [TR]
  [TD]         Case Else[/TD]
 [/TR]
 [TR]
  [TD]            strTmp = strTmp & "  milliards "[/TD]
 [/TR]
 [TR]
  [TD]     End Select[/TD]
 [/TR]
 [TR]
  [TD]     If iMillion = 1 Then ConvNumEnt = "et " & ConvNumEnt[/TD]
 [/TR]
 [TR]
  [TD]     ConvNumEnt = Nz(strTmp) & ConvNumEnt[/TD]
 [/TR]
 [TR]
  [TD]     dblReste = Int(dblReste / 1000)[/TD]
 [/TR]
 [TR]
  [TD]     iTmp = dblReste - (Int(dblReste / 1000) * 1000)[/TD]
 [/TR]
 [TR]
  [TD]     If iTmp = 0 And dblReste = 0 Then Exit Function[/TD]
 [/TR]
 [TR]
  [TD]     iBillion = CInt(iTmp)[/TD]
 [/TR]
 [TR]
  [TD]     strTmp = ConvNumCent(iBillion, Langue)[/TD]
 [/TR]
 [TR]
  [TD]     Select Case iTmp[/TD]
 [/TR]
 [TR]
  [TD]         Case 0[/TD]
 [/TR]
 [TR]
  [TD]         Case 1[/TD]
 [/TR]
 [TR]
  [TD]            strTmp = strTmp & "  billion "[/TD]
 [/TR]
 [TR]
  [TD]         Case Else[/TD]
 [/TR]
 [TR]
  [TD]            strTmp = strTmp & "  billions "[/TD]
 [/TR]
 [TR]
  [TD]     End Select[/TD]
 [/TR]
 [TR]
  [TD]     If iMilliard = 1 Then ConvNumEnt = "et " & ConvNumEnt[/TD]
 [/TR]
 [TR]
  [TD]     ConvNumEnt = Nz(strTmp) & ConvNumEnt[/TD]
 [/TR]
 [TR]
  [TD]End Function[/TD]
 [/TR]
 [TR]
  [TD][/TD]
 [/TR]
 [TR]
  [TD]Private Function ConvNumDizaine(Nombre As  Byte, Langue As Byte, bDec As Boolean) As String[/TD]
 [/TR]
 [TR]
  [TD]     Dim TabUnit As Variant, TabDiz As Variant[/TD]
 [/TR]
 [TR]
  [TD]     Dim byUnit As Byte, byDiz As Byte[/TD]
 [/TR]
 [TR]
  [TD]     Dim strLiaison As String[/TD]
 [/TR]
 [TR]
  [TD]    [/TD]
 [/TR]
 [TR]
  [TD]     If bDec Then[/TD]
 [/TR]
 [TR]
  [TD]         TabDiz = Array("zéro", "", "vingt",  "trente", "quarante", "cinquante", _[/TD]
 [/TR]
 [TR]
  [TD]            "soixante",  "soixante", "quatre-vingt", "quatre-vingt")[/TD]
 [/TR]
 [TR]
  [TD]     Else[/TD]
 [/TR]
 [TR]
  [TD]         TabDiz = Array("", "", "vingt",  "trente", "quarante", "cinquante", _[/TD]
 [/TR]
 [TR]
  [TD]            "soixante",  "soixante", "quatre-vingt", "quatre-vingt")[/TD]
 [/TR]
 [TR]
  [TD]     End If[/TD]
 [/TR]
 [TR]
  [TD]     If Nombre = 0 Then[/TD]
 [/TR]
 [TR]
  [TD]         TabUnit = Array("zéro")[/TD]
 [/TR]
 [TR]
  [TD]     Else[/TD]
 [/TR]
 [TR]
  [TD]         TabUnit = Array("", "un", "deux",  "trois", "quatre", "cinq", "six",  "sept", _[/TD]
 [/TR]
 [TR]
  [TD]            "huit",  "neuf", "dix", "onze", "douze",  "treize", "quatorze", "quinze", _[/TD]
 [/TR]
 [TR]
  [TD]            "seize",  "dix-sept", "dix-huit", "dix-neuf")[/TD]
 [/TR]
 [TR]
  [TD]     End If[/TD]
 [/TR]
 [TR]
  [TD]     If Langue = 1 Then[/TD]
 [/TR]
 [TR]
  [TD]         TabDiz(7) = "septante"[/TD]
 [/TR]
 [TR]
  [TD]         TabDiz(9) = "nonante"[/TD]
 [/TR]
 [TR]
  [TD]     ElseIf Langue = 2 Then[/TD]
 [/TR]
 [TR]
  [TD]         TabDiz(7) = "septante"[/TD]
 [/TR]
 [TR]
  [TD]         TabDiz(8) = "huitante"[/TD]
 [/TR]
 [TR]
  [TD]         TabDiz(9) = "nonante"[/TD]
 [/TR]
 [TR]
  [TD]     End If[/TD]
 [/TR]
 [TR]
  [TD]     byDiz = Int(Nombre / 10)[/TD]
 [/TR]
 [TR]
  [TD]     byUnit = Nombre - (byDiz * 10)[/TD]
 [/TR]
 [TR]
  [TD]     strLiaison = "-"[/TD]
 [/TR]
 [TR]
  [TD]     If byUnit = 1 Then strLiaison = " et "[/TD]
 [/TR]
 [TR]
  [TD]     Select Case byDiz[/TD]
 [/TR]
 [TR]
  [TD]         Case 0[/TD]
 [/TR]
 [TR]
  [TD]            strLiaison = " "[/TD]
 [/TR]
 [TR]
  [TD]         Case 1[/TD]
 [/TR]
 [TR]
  [TD]            byUnit = byUnit + 10[/TD]
 [/TR]
 [TR]
  [TD]            strLiaison = ""[/TD]
 [/TR]
 [TR]
  [TD]         Case 7[/TD]
 [/TR]
 [TR]
  [TD]            If Langue = 0 Then byUnit =  byUnit + 10[/TD]
 [/TR]
 [TR]
  [TD]         Case 8[/TD]
 [/TR]
 [TR]
  [TD]            If Langue <> 2 Then  strLiaison = "-"[/TD]
 [/TR]
 [TR]
  [TD]         Case 9[/TD]
 [/TR]
 [TR]
  [TD]            If Langue = 0 Then[/TD]
 [/TR]
 [TR]
  [TD]                byUnit = byUnit + 10[/TD]
 [/TR]
 [TR]
  [TD]                strLiaison = "-"[/TD]
 [/TR]
 [TR]
  [TD]            End If[/TD]
 [/TR]
 [TR]
  [TD]     End Select[/TD]
 [/TR]
 [TR]
  [TD]     ConvNumDizaine = TabDiz(byDiz)[/TD]
 [/TR]
 [TR]
  [TD]     If byDiz = 8 And Langue <> 2 And byUnit = 0 Then ConvNumDizaine  = ConvNumDizaine & "s"[/TD]
 [/TR]
 [TR]
  [TD]     If TabUnit(byUnit) <> "" Then[/TD]
 [/TR]
 [TR]
  [TD]         ConvNumDizaine = ConvNumDizaine & strLiaison & TabUnit(byUnit)[/TD]
 [/TR]
 [TR]
  [TD]     Else[/TD]
 [/TR]
 [TR]
  [TD]         ConvNumDizaine = ConvNumDizaine[/TD]
 [/TR]
 [TR]
  [TD]     End If[/TD]
 [/TR]
 [TR]
  [TD]End Function[/TD]
 [/TR]
 [TR]
  [TD][/TD]
 [/TR]
 [TR]
  [TD]Private Function ConvNumCent(Nombre As  Integer, Langue As Byte) As String[/TD]
 [/TR]
 [TR]
  [TD]     Dim TabUnit As Variant[/TD]
 [/TR]
 [TR]
  [TD]     Dim byCent As Byte, byReste As Byte[/TD]
 [/TR]
 [TR]
  [TD]     Dim strReste As String[/TD]
 [/TR]
 [TR]
  [TD]    [/TD]
 [/TR]
 [TR]
  [TD]     TabUnit = Array("", "un", "deux",  "trois", "quatre", "cinq", "six",  "sept", _[/TD]
 [/TR]
 [TR]
  [TD]         "huit", "neuf", "dix")[/TD]
 [/TR]
 [TR]
  [TD]     byCent = Int(Nombre / 100)[/TD]
 [/TR]
 [TR]
  [TD]     byReste = Nombre - (byCent * 100)[/TD]
 [/TR]
 [TR]
  [TD]     strReste = ConvNumDizaine(byReste, Langue, False)[/TD]
 [/TR]
 [TR]
  [TD]     Select Case byCent[/TD]
 [/TR]
 [TR]
  [TD]         Case 0[/TD]
 [/TR]
 [TR]
  [TD]            ConvNumCent = strReste[/TD]
 [/TR]
 [TR]
  [TD]         Case 1[/TD]
 [/TR]
 [TR]
  [TD]            If byReste = 0 Then[/TD]
 [/TR]
 [TR]
  [TD]                ConvNumCent =  "cent"[/TD]
 [/TR]
 [TR]
  [TD]            Else[/TD]
 [/TR]
 [TR]
  [TD]                ConvNumCent = "cent  " & strReste[/TD]
 [/TR]
 [TR]
  [TD]            End If[/TD]
 [/TR]
 [TR]
  [TD]         Case Else[/TD]
 [/TR]
 [TR]
  [TD]            If byReste = 0 Then[/TD]
 [/TR]
 [TR]
  [TD]                ConvNumCent = TabUnit(byCent)  & " cents"[/TD]
 [/TR]
 [TR]
  [TD]            Else[/TD]
 [/TR]
 [TR]
  [TD]                ConvNumCent = TabUnit(byCent)  & " cent " & strReste[/TD]
 [/TR]
 [TR]
  [TD]            End If[/TD]
 [/TR]
 [TR]
  [TD]     End Select[/TD]
 [/TR]
 [TR]
  [TD]End Function[/TD]
 [/TR]
 [TR]
  [TD][/TD]
 [/TR]
 [TR]
  [TD]Private Function Nz(strNb As String) As  String[/TD]
 [/TR]
 [TR]
  [TD]     If strNb <> " zéro" Then Nz = strNb[/TD]
 [/TR]
 [TR]
  [TD]End Function[/TD]
[/TR]
[/TABLE]
attention lors du copier/coller des balises se sont insérées, j'ai commencé à les enlever mais pour éviter d'effacer du code par erreur j'ai arrêté
tu trouveras la page avec le code ici
ensuite tu mets ceci dans ta cellule
Code:
="Soit " &ConvNumberLetter(MTTC;1;0)
pour la facture j'essaie d'y jeter un oeil si je comprends tout
 
Dernière édition:

grisan29

XLDnaute Accro
Re : creer une facture sur un devis

bonjour pascal21

chez moi le code dans le module pour chiffre en lettre fonctionne tres bien comme tu peux le constater, mais je ne peux t'aider sur ton code car je nesuis pas un expert en vba, sinon je ne passerai pas par un forum pour mon fichier
je suis sous windows8 et office 2010

Pascal
 

grisan29

XLDnaute Accro
Re : creer une facture sur un devis

bonjour Pascal21

merci pour le lien:cool: vers le code chiffre en lettres mais il ne fait pas mon affaire car il inscrit "virgule" à la place de "Euros" et ne mets pas "cents" a la fin, en fait c'est un code parfait pour les nombres mais pas pour les nombres monétaires

Pascal
edit j'ai modifier le code comme ci dessous et cela fonctionne
Code:
'Select Case Devise
        'Case 0
            If byDec > 0 Then strDev = " Euros "
        'Case 1
            'strDev = " Euros"
            If dblEnt >= 1000000 And Right$(dblEnt, 6) = "000000" Then strDev = "Euros"
            If byDec > 0 Then strCentimes = strCentimes & " Cent"
            If byDec > 1 Then strCentimes = strCentimes & "s"
       ' Case 2
            'strDev = " Dollar"
            'If byDec > 0 Then strCentimes = strCentimes & " Cent"
    'End Select

c'est cette ligne qui écrivait "virgule" et j'ai mis "Euros" à la place
Code:
  If byDec > 0 Then strDev = " Euros "
je ne sait pas a quoi font référence les "Case" car le problème doit etre la

merci
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 545
Messages
2 089 486
Membres
104 182
dernier inscrit
matiasi