Bonjour,
j'ai une macro dont une procedure (sub traitement impayes) me retourne un
fichier .xls et un fichier.txt.
le fichier .xls est ok mais le fichier.txt me renvoie un montant erronné.il
senblerait que la macro supprime le 1er chiffre du montant ,prend la chaine
de chiffre(limité à 5 chiffres max.) sans la virgule puis rajoute la virgule
suivi de 2 chiffres.
ex si montant =523,13 on a dans le fichier.txt 2313,13
je n'arrive pas à trouver ce qui pose probleme dans la procedure..pouvez
vous m'eclairer...je vous laisse la macro
Sub choix()
menu_avip.Show
End Sub
Sub extraction_ACI()
'
'
Dim date_etat As String, date_aci2 As String
Const dir = "S:\CONTENTIEUX_AVIP\ACI\"
' Const DIR = "C:\avip\ACI\"
menu_avip.Hide
date_aci = InputBox("Les ACI de Quelle date doit-on extraire ?", "ATTENTION
Saisir la date sous le format JJMMAA")
date_aci2 = Left$(date_aci, 2) & "/" & Mid(date_aci, 3, 2) & "/20" &
Right$(date_aci, 2)
' création fichier ACI _ date du jour
ActiveWorkbook.SaveAs Filename:=dir & nom_fich
' ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
' ActiveWorkbook.Close
End Sub
Sub extraction_versement()
'
'
Dim date_etat As String, date_aci2 As String
Const dir = "S:\CONTENTIEUX_AVIP\RIOU\"
'Const DIR = "C:\avip\RIOU\"
menu_avip.Hide
date_RIOU = InputBox("Les Versements de Quelle date doit-on extraire ?",
"ATTENTION Saisir la date sous le format JJMMAA")
col = InputBox("Dans quelle colonne ont été saisis les paiements ? ")
date_RIOU2 = Left$(date_RIOU, 2) & "/" & Mid(date_RIOU, 3, 2) & "/20" &
Right$(date_RIOU, 2)
' création fichier Versements RIOU
Const dir = "s:\CONTENTIEUX_AVIP\RIOU\"
' Const dir = "c:\AVIP\RIOU\"
Dim nomfich As String
Dim debut As Range, fin As Range, maplage As Range, col As Variant
Dim bureau As String, typ As String, nom As String
Dim fichier As String, fichier_resultat As String
Dim i As Integer, nb_lignes As Integer, postit As String
Dim solde As Double, caution As Double, valeur As Double
Dim rue As String, tel1 As String, tel2 As String, montant As Double,
materiel As String
For m = 1 To nb_lignes
num_contrat = Range("B" & m)
contrat_suivant = Range("B" & m).Offset(1, 0)
contrat_suivant2 = Range("B" & m).Offset(2, 0)
col_L = Range("L" & m)
longueur = Len(col_L)
If contrat_suivant = "" Then
m = nb_lignes
GoTo fin:
End If
If contrat_suivant = num_contrat Then
If longueur = 11 Or longueur = 12 Then
facture1 = Range("L" & m) & "*" & Left(Range("M" & m), 6) &
Right(Range("M" & m), 2) & "*" & Range("N" & m) & "€"
Else
facture1 = Range("L" & m)
End If
facture2 = Range("L" & m + 1) & "*" & Left(Range("M" & m), 6) &
Right(Range("M" & m), 2) & "*" & Range("N" & m + 1) & "€"
resultat = facture1 & "+" & facture2
Range("L" & m) = resultat
Range("N" & m) = Range("N" & m) + Range("N" & m + 1)
Rows(m + 1 & ":" & m + 1).Select
Selection.Delete Shift:=xlUp
If contrat_suivant2 = num_contrat Then m = m - 1
Else
Range("L" & m) = Range("L" & m) & "*" & Left(Range("M" & m), 6) &
Right(Range("M" & m), 2) & "*" & Range("N" & m) & "€"
End If
Next m
fin:
Set debut = Range("A1")
Set fin = debut.End(xlDown)
Set maplage = Range(debut, fin)
' comptage nb lignes
nb_lignes = 0
For Each macellule In maplage
nb_lignes = nb_lignes + 1
Next
Range("L" & nb_lignes) = Range("L" & nb_lignes) & " du " & Range("M" &
nb_lignes) & " de " & Range("N" & nb_lignes) & " EUR"
result = String(7, " ")
' numéro client RIOU
result = result & num_client
' calcul numéro client interne FT
ref_client = cadrage(Range("B" & i), 20, " ")
result = result & ref_client
' calcul code civilité
civ = civilite(Range("C" & i))
If civ = "" Then civ = "11"
result = result & civ
' calcul nom débiteur
nom = Range("D" & i)
nom_client = cadrage(nom, 30, " ")
result = result & nom_client
' calcul prenom debiteur
result = result & String(30, " ")
' calcul nom rue 1 & 2
num = Range("E" & i)
typvoie = Range("F" & i)
voie = Range("G" & i)
rue = num & " " & typvoie & " " & voie
ad = cadrage(rue, 60, " ")
result = result & ad
' code insee
result = result & insee(Range("I" & i))
' calcul commune
nom_commune = cadrage((Range("J" & i)), 30, " ")
result = result & nom_commune
' calcul code postal
cp = Range("I" & i)
If Len(cp) = 4 Then cp = "0" & cp
result = result & cp
' calcul bureau distributeur
result = result & String(30, " ")
' calcul n° tel 1
If Range("K" & i) = "" Then
tel1 = String(12, " ")
Else:
tel1 = Range("K" & i)
' num1 = Mid(tel1, 1, 2)
' num2 = Mid(tel1, 4, 2)
' num3 = Mid(tel1, 7, 2)
' num4 = Mid(tel1, 10, 2)
' num5 = Mid(tel1, 13, 2)
' tel1 = num1 + num2 + num3 + num4 + num5
End If
result = result & cadrage(tel1, 12, " ")
' calcul n° tel 2
result = result & cadrage(tel2, 12, " ")
' calcul n° RM/RC
result = result & String(15, " ")
' calcul siècle facture & date
Daters = Range("M" & i)
siecle = " 20"
annee = Mid(Daters, 3, 2)
mois = Mid(Daters, 5, 2)
siecle_date = siecle & " " & annee & mois
result = result & siecle_date
' calcul montant privilégié + tarif
result = result & " " & "000000000,00" & "B"
' calcul type créance + MOntant principal en francs français
If civ = "03" Or civ = "04" Or civ = "05" Or civ = "15" Or civ = "18" Or civ
= "19" Or civ = "20" Then
typ = "1"
Else: typ = "2"
End If
result = result & typ & " " & "000000000,00"
' calcul siecle mise en demeure + date mise en demeure
result = result & " 00 000000"
' calcul libellé facture + fondement créance
result = result & String(160, " ")
' calcul code option + code pays
result = result & "201"
'calcul postit
col = "L" & i
postit = Range(col)
result = result & cadrage(postit, 80, " ")
' calcul litige + type débiteur + historique + code devise + montant
privilégié
adpost = cadrage(Range("H" & i), 73, " ")
result = result & "NP" & adpost & "EU" & " " & "000000000,00"
' calcul montant en principal
solde = CDbl(Range("N" & i))
principal = solde
montant_formaté = Format(principal, "#########,##0.00")
Open fichier_resultat For Append As #1
Print #1, result
Close #1
i = i + 1
Next macellule
' Windows("macro_fi").Activate
Cells.Select
Selection.Delete
Windows(nom_OK).Activate
ActiveWorkbook.Save
ActiveWorkbook.Close
MsgBox "Le fichier " & site & "_resultat peut être déposé maintenant sur le
site @ de RIOU ", vbOKOnly + vbInformation
menu_avip.Show
End Sub
Function cadrage(chaine As String, longueur As Integer, car As String) As
String
Dim l1 As Integer, nb_espaces As Integer
l1 = Len(chaine)
nb_espaces = longueur - l1
If nb_espaces > 0 Then
cadrage = chaine & String(nb_espaces, car)
Else: cadrage = Left(chaine, longueur)
End If
End Function
Function cadragedroite(chaine As Variant) As String
If UCase(civ) = "SA" Then civilite = "01"
If UCase(civ) = "SARL" Then civilite = "02"
If UCase(civ) = "M" Then civilite = "03"
If UCase(civ) = "MME" Then civilite = "04"
If UCase(civ) = "MLLE" Then civilite = "05"
If UCase(civ) = "STE" Then civilite = "06"
If UCase(civ) = "ETS" Then civilite = "07"
If UCase(civ) = "ASS" Then civilite = "10"
If UCase(civ) = "" Then civilite = "11"
If UCase(civ) = "SCI" Then civilite = "13"
If UCase(civ) = "EURL" Then civilite = "14"
If UCase(civ) = "MTR" Then civilite = "15"
If UCase(civ) = "M.MME" Then civilite = "18"
If UCase(civ) = "DR" Then civilite = "20"
If UCase(civ) = "SCP" Then civilite = "22"
If UCase(civ) = "BAR" Then civilit = "07"
End Function
Function commune(cp As String) As String
' Windows("macro_fi").Activate
Set C = Worksheets("liste_villes").Columns("D").Find(cp)
commune = cadrage(C.Offset(0, -2), 30, " ")
End Function
Function insee(cp As String)
' Windows("macro_fi").Activate
On Error GoTo finf:
Set C = Worksheets("liste_villes").Columns("D").Find(cp)
insee1 = C.Offset(0, -1)
If Len(insee1) = 5 Then
insee = insee1
Else
insee = "0" & insee1
End If
' MsgBox "resultat = " & insee
finf:
If Len(cp) = 5 Then
insee = cp
Else
insee = "0" & cp
End If
End Function
Re.. pourrais tu essayer de remplacer cette partie de code ( située à la fin de ta macro) **************** principal = solde montant_formaté = Format(principal, "#########,##0.00")
result = result & cadragedroite(montant) ***********************
par la seule ligne suivante :
result = result & String(12 - Len(Format(solde, "0.00")), "0") & Format(solde, "0.00")
ça devrait le faire .....
"ALF" a écrit dans le message de news:
Bonjour, j'ai une macro dont une procedure (sub traitement impayes) me retourne un fichier .xls et un fichier.txt. le fichier .xls est ok mais le fichier.txt me renvoie un montant erronné.il senblerait que la macro supprime le 1er chiffre du montant ,prend la chaine de chiffre(limité à 5 chiffres max.) sans la virgule puis rajoute la virgule suivi de 2 chiffres. ex si montant R3,13 on a dans le fichier.txt 2313,13 je n'arrive pas à trouver ce qui pose probleme dans la procedure..pouvez vous m'eclairer...je vous laisse la macro
Sub choix()
menu_avip.Show
End Sub
Sub extraction_ACI() ' ' Dim date_etat As String, date_aci2 As String Const dir = "S:CONTENTIEUX_AVIPACI" ' Const DIR = "C:avipACI"
menu_avip.Hide
date_aci = InputBox("Les ACI de Quelle date doit-on extraire ?", "ATTENTION Saisir la date sous le format JJMMAA") date_aci2 = Left$(date_aci, 2) & "/" & Mid(date_aci, 3, 2) & "/20" & Right$(date_aci, 2) ' création fichier ACI _ date du jour
ActiveWorkbook.SaveAs Filename:=dir & nom_fich ' ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True ' ActiveWorkbook.Close End Sub
Sub extraction_versement() ' ' Dim date_etat As String, date_aci2 As String Const dir = "S:CONTENTIEUX_AVIPRIOU" 'Const DIR = "C:avipRIOU"
menu_avip.Hide
date_RIOU = InputBox("Les Versements de Quelle date doit-on extraire ?", "ATTENTION Saisir la date sous le format JJMMAA") col = InputBox("Dans quelle colonne ont été saisis les paiements ? ") date_RIOU2 = Left$(date_RIOU, 2) & "/" & Mid(date_RIOU, 3, 2) & "/20" & Right$(date_RIOU, 2) ' création fichier Versements RIOU
Const dir = "s:CONTENTIEUX_AVIPRIOU" ' Const dir = "c:AVIPRIOU" Dim nomfich As String Dim debut As Range, fin As Range, maplage As Range, col As Variant Dim bureau As String, typ As String, nom As String Dim fichier As String, fichier_resultat As String Dim i As Integer, nb_lignes As Integer, postit As String Dim solde As Double, caution As Double, valeur As Double Dim rue As String, tel1 As String, tel2 As String, montant As Double, materiel As String
For m = 1 To nb_lignes num_contrat = Range("B" & m) contrat_suivant = Range("B" & m).Offset(1, 0) contrat_suivant2 = Range("B" & m).Offset(2, 0) col_L = Range("L" & m) longueur = Len(col_L) If contrat_suivant = "" Then m = nb_lignes GoTo fin: End If If contrat_suivant = num_contrat Then If longueur = 11 Or longueur = 12 Then facture1 = Range("L" & m) & "*" & Left(Range("M" & m), 6) & Right(Range("M" & m), 2) & "*" & Range("N" & m) & "?" Else facture1 = Range("L" & m) End If facture2 = Range("L" & m + 1) & "*" & Left(Range("M" & m), 6) & Right(Range("M" & m), 2) & "*" & Range("N" & m + 1) & "?" resultat = facture1 & "+" & facture2 Range("L" & m) = resultat Range("N" & m) = Range("N" & m) + Range("N" & m + 1) Rows(m + 1 & ":" & m + 1).Select Selection.Delete Shift:=xlUp If contrat_suivant2 = num_contrat Then m = m - 1
Else Range("L" & m) = Range("L" & m) & "*" & Left(Range("M" & m), 6) & Right(Range("M" & m), 2) & "*" & Range("N" & m) & "?" End If
Next m
fin:
Set debut = Range("A1") Set fin = debut.End(xlDown) Set maplage = Range(debut, fin)
' comptage nb lignes
nb_lignes = 0 For Each macellule In maplage nb_lignes = nb_lignes + 1 Next Range("L" & nb_lignes) = Range("L" & nb_lignes) & " du " & Range("M" & nb_lignes) & " de " & Range("N" & nb_lignes) & " EUR"
result = String(7, " ") ' numéro client RIOU result = result & num_client ' calcul numéro client interne FT ref_client = cadrage(Range("B" & i), 20, " ") result = result & ref_client ' calcul code civilité civ = civilite(Range("C" & i)) If civ = "" Then civ = "11" result = result & civ ' calcul nom débiteur nom = Range("D" & i) nom_client = cadrage(nom, 30, " ") result = result & nom_client ' calcul prenom debiteur result = result & String(30, " ") ' calcul nom rue 1 & 2 num = Range("E" & i) typvoie = Range("F" & i) voie = Range("G" & i) rue = num & " " & typvoie & " " & voie ad = cadrage(rue, 60, " ") result = result & ad ' code insee result = result & insee(Range("I" & i))
' calcul commune nom_commune = cadrage((Range("J" & i)), 30, " ") result = result & nom_commune ' calcul code postal cp = Range("I" & i) If Len(cp) = 4 Then cp = "0" & cp result = result & cp ' calcul bureau distributeur result = result & String(30, " ") ' calcul n° tel 1 If Range("K" & i) = "" Then tel1 = String(12, " ") Else: tel1 = Range("K" & i) ' num1 = Mid(tel1, 1, 2) ' num2 = Mid(tel1, 4, 2) ' num3 = Mid(tel1, 7, 2) ' num4 = Mid(tel1, 10, 2) ' num5 = Mid(tel1, 13, 2) ' tel1 = num1 + num2 + num3 + num4 + num5 End If result = result & cadrage(tel1, 12, " ") ' calcul n° tel 2 result = result & cadrage(tel2, 12, " ") ' calcul n° RM/RC result = result & String(15, " ") ' calcul siècle facture & date Daters = Range("M" & i) siecle = " 20" annee = Mid(Daters, 3, 2) mois = Mid(Daters, 5, 2) siecle_date = siecle & " " & annee & mois result = result & siecle_date
' calcul montant privilégié + tarif result = result & " " & "000000000,00" & "B" ' calcul type créance + MOntant principal en francs français If civ = "03" Or civ = "04" Or civ = "05" Or civ = "15" Or civ = "18" Or civ = "19" Or civ = "20" Then typ = "1" Else: typ = "2" End If result = result & typ & " " & "000000000,00"
' calcul siecle mise en demeure + date mise en demeure result = result & " 00 000000" ' calcul libellé facture + fondement créance result = result & String(160, " ") ' calcul code option + code pays result = result & "201" 'calcul postit col = "L" & i postit = Range(col) result = result & cadrage(postit, 80, " ") ' calcul litige + type débiteur + historique + code devise + montant privilégié
adpost = cadrage(Range("H" & i), 73, " ") result = result & "NP" & adpost & "EU" & " " & "000000000,00" ' calcul montant en principal solde = CDbl(Range("N" & i))
principal = solde montant_formaté = Format(principal, "#########,##0.00")
Open fichier_resultat For Append As #1 Print #1, result Close #1 i = i + 1 Next macellule
' Windows("macro_fi").Activate Cells.Select Selection.Delete Windows(nom_OK).Activate ActiveWorkbook.Save ActiveWorkbook.Close MsgBox "Le fichier " & site & "_resultat peut être déposé maintenant sur le site @ de RIOU ", vbOKOnly + vbInformation
menu_avip.Show End Sub
Function cadrage(chaine As String, longueur As Integer, car As String) As String
Dim l1 As Integer, nb_espaces As Integer
l1 = Len(chaine) nb_espaces = longueur - l1
If nb_espaces > 0 Then cadrage = chaine & String(nb_espaces, car) Else: cadrage = Left(chaine, longueur) End If
End Function
Function cadragedroite(chaine As Variant) As String
If UCase(civ) = "SA" Then civilite = "01" If UCase(civ) = "SARL" Then civilite = "02" If UCase(civ) = "M" Then civilite = "03" If UCase(civ) = "MME" Then civilite = "04" If UCase(civ) = "MLLE" Then civilite = "05" If UCase(civ) = "STE" Then civilite = "06" If UCase(civ) = "ETS" Then civilite = "07" If UCase(civ) = "ASS" Then civilite = "10" If UCase(civ) = "" Then civilite = "11" If UCase(civ) = "SCI" Then civilite = "13" If UCase(civ) = "EURL" Then civilite = "14" If UCase(civ) = "MTR" Then civilite = "15" If UCase(civ) = "M.MME" Then civilite = "18" If UCase(civ) = "DR" Then civilite = "20" If UCase(civ) = "SCP" Then civilite = "22" If UCase(civ) = "BAR" Then civilit = "07"
End Function
Function commune(cp As String) As String
' Windows("macro_fi").Activate Set C = Worksheets("liste_villes").Columns("D").Find(cp) commune = cadrage(C.Offset(0, -2), 30, " ")
End Function Function insee(cp As String)
' Windows("macro_fi").Activate On Error GoTo finf: Set C = Worksheets("liste_villes").Columns("D").Find(cp)
insee1 = C.Offset(0, -1) If Len(insee1) = 5 Then insee = insee1 Else insee = "0" & insee1 End If
' MsgBox "resultat = " & insee finf: If Len(cp) = 5 Then insee = cp Else insee = "0" & cp End If End Function
Merci pour votre soutien.
-- ALF
Re..
pourrais tu essayer de remplacer cette partie de code ( située à la fin de
ta macro)
****************
principal = solde
montant_formaté = Format(principal, "#########,##0.00")
result = result & cadragedroite(montant)
***********************
par la seule ligne suivante :
result = result & String(12 - Len(Format(solde, "0.00")), "0") &
Format(solde, "0.00")
ça devrait le faire .....
"ALF" <ALF@discussions.microsoft.com> a écrit dans le message de news:
8E29DACC-447F-4DB8-A101-00DF1C0442C9@microsoft.com...
Bonjour,
j'ai une macro dont une procedure (sub traitement impayes) me retourne un
fichier .xls et un fichier.txt.
le fichier .xls est ok mais le fichier.txt me renvoie un montant
erronné.il
senblerait que la macro supprime le 1er chiffre du montant ,prend la
chaine
de chiffre(limité à 5 chiffres max.) sans la virgule puis rajoute la
virgule
suivi de 2 chiffres.
ex si montant R3,13 on a dans le fichier.txt 2313,13
je n'arrive pas à trouver ce qui pose probleme dans la procedure..pouvez
vous m'eclairer...je vous laisse la macro
Sub choix()
menu_avip.Show
End Sub
Sub extraction_ACI()
'
'
Dim date_etat As String, date_aci2 As String
Const dir = "S:CONTENTIEUX_AVIPACI"
' Const DIR = "C:avipACI"
menu_avip.Hide
date_aci = InputBox("Les ACI de Quelle date doit-on extraire ?",
"ATTENTION
Saisir la date sous le format JJMMAA")
date_aci2 = Left$(date_aci, 2) & "/" & Mid(date_aci, 3, 2) & "/20" &
Right$(date_aci, 2)
' création fichier ACI _ date du jour
ActiveWorkbook.SaveAs Filename:=dir & nom_fich
' ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
' ActiveWorkbook.Close
End Sub
Sub extraction_versement()
'
'
Dim date_etat As String, date_aci2 As String
Const dir = "S:CONTENTIEUX_AVIPRIOU"
'Const DIR = "C:avipRIOU"
menu_avip.Hide
date_RIOU = InputBox("Les Versements de Quelle date doit-on extraire ?",
"ATTENTION Saisir la date sous le format JJMMAA")
col = InputBox("Dans quelle colonne ont été saisis les paiements ? ")
date_RIOU2 = Left$(date_RIOU, 2) & "/" & Mid(date_RIOU, 3, 2) & "/20" &
Right$(date_RIOU, 2)
' création fichier Versements RIOU
Const dir = "s:CONTENTIEUX_AVIPRIOU"
' Const dir = "c:AVIPRIOU"
Dim nomfich As String
Dim debut As Range, fin As Range, maplage As Range, col As Variant
Dim bureau As String, typ As String, nom As String
Dim fichier As String, fichier_resultat As String
Dim i As Integer, nb_lignes As Integer, postit As String
Dim solde As Double, caution As Double, valeur As Double
Dim rue As String, tel1 As String, tel2 As String, montant As Double,
materiel As String
For m = 1 To nb_lignes
num_contrat = Range("B" & m)
contrat_suivant = Range("B" & m).Offset(1, 0)
contrat_suivant2 = Range("B" & m).Offset(2, 0)
col_L = Range("L" & m)
longueur = Len(col_L)
If contrat_suivant = "" Then
m = nb_lignes
GoTo fin:
End If
If contrat_suivant = num_contrat Then
If longueur = 11 Or longueur = 12 Then
facture1 = Range("L" & m) & "*" & Left(Range("M" & m), 6) &
Right(Range("M" & m), 2) & "*" & Range("N" & m) & "?"
Else
facture1 = Range("L" & m)
End If
facture2 = Range("L" & m + 1) & "*" & Left(Range("M" & m), 6) &
Right(Range("M" & m), 2) & "*" & Range("N" & m + 1) & "?"
resultat = facture1 & "+" & facture2
Range("L" & m) = resultat
Range("N" & m) = Range("N" & m) + Range("N" & m + 1)
Rows(m + 1 & ":" & m + 1).Select
Selection.Delete Shift:=xlUp
If contrat_suivant2 = num_contrat Then m = m - 1
Else
Range("L" & m) = Range("L" & m) & "*" & Left(Range("M" & m), 6) &
Right(Range("M" & m), 2) & "*" & Range("N" & m) & "?"
End If
Next m
fin:
Set debut = Range("A1")
Set fin = debut.End(xlDown)
Set maplage = Range(debut, fin)
' comptage nb lignes
nb_lignes = 0
For Each macellule In maplage
nb_lignes = nb_lignes + 1
Next
Range("L" & nb_lignes) = Range("L" & nb_lignes) & " du " & Range("M" &
nb_lignes) & " de " & Range("N" & nb_lignes) & " EUR"
result = String(7, " ")
' numéro client RIOU
result = result & num_client
' calcul numéro client interne FT
ref_client = cadrage(Range("B" & i), 20, " ")
result = result & ref_client
' calcul code civilité
civ = civilite(Range("C" & i))
If civ = "" Then civ = "11"
result = result & civ
' calcul nom débiteur
nom = Range("D" & i)
nom_client = cadrage(nom, 30, " ")
result = result & nom_client
' calcul prenom debiteur
result = result & String(30, " ")
' calcul nom rue 1 & 2
num = Range("E" & i)
typvoie = Range("F" & i)
voie = Range("G" & i)
rue = num & " " & typvoie & " " & voie
ad = cadrage(rue, 60, " ")
result = result & ad
' code insee
result = result & insee(Range("I" & i))
' calcul commune
nom_commune = cadrage((Range("J" & i)), 30, " ")
result = result & nom_commune
' calcul code postal
cp = Range("I" & i)
If Len(cp) = 4 Then cp = "0" & cp
result = result & cp
' calcul bureau distributeur
result = result & String(30, " ")
' calcul n° tel 1
If Range("K" & i) = "" Then
tel1 = String(12, " ")
Else:
tel1 = Range("K" & i)
' num1 = Mid(tel1, 1, 2)
' num2 = Mid(tel1, 4, 2)
' num3 = Mid(tel1, 7, 2)
' num4 = Mid(tel1, 10, 2)
' num5 = Mid(tel1, 13, 2)
' tel1 = num1 + num2 + num3 + num4 + num5
End If
result = result & cadrage(tel1, 12, " ")
' calcul n° tel 2
result = result & cadrage(tel2, 12, " ")
' calcul n° RM/RC
result = result & String(15, " ")
' calcul siècle facture & date
Daters = Range("M" & i)
siecle = " 20"
annee = Mid(Daters, 3, 2)
mois = Mid(Daters, 5, 2)
siecle_date = siecle & " " & annee & mois
result = result & siecle_date
' calcul montant privilégié + tarif
result = result & " " & "000000000,00" & "B"
' calcul type créance + MOntant principal en francs français
If civ = "03" Or civ = "04" Or civ = "05" Or civ = "15" Or civ = "18" Or
civ
= "19" Or civ = "20" Then
typ = "1"
Else: typ = "2"
End If
result = result & typ & " " & "000000000,00"
' calcul siecle mise en demeure + date mise en demeure
result = result & " 00 000000"
' calcul libellé facture + fondement créance
result = result & String(160, " ")
' calcul code option + code pays
result = result & "201"
'calcul postit
col = "L" & i
postit = Range(col)
result = result & cadrage(postit, 80, " ")
' calcul litige + type débiteur + historique + code devise + montant
privilégié
adpost = cadrage(Range("H" & i), 73, " ")
result = result & "NP" & adpost & "EU" & " " & "000000000,00"
' calcul montant en principal
solde = CDbl(Range("N" & i))
principal = solde
montant_formaté = Format(principal, "#########,##0.00")
Open fichier_resultat For Append As #1
Print #1, result
Close #1
i = i + 1
Next macellule
' Windows("macro_fi").Activate
Cells.Select
Selection.Delete
Windows(nom_OK).Activate
ActiveWorkbook.Save
ActiveWorkbook.Close
MsgBox "Le fichier " & site & "_resultat peut être déposé maintenant sur
le
site @ de RIOU ", vbOKOnly + vbInformation
menu_avip.Show
End Sub
Function cadrage(chaine As String, longueur As Integer, car As String) As
String
Dim l1 As Integer, nb_espaces As Integer
l1 = Len(chaine)
nb_espaces = longueur - l1
If nb_espaces > 0 Then
cadrage = chaine & String(nb_espaces, car)
Else: cadrage = Left(chaine, longueur)
End If
End Function
Function cadragedroite(chaine As Variant) As String
If UCase(civ) = "SA" Then civilite = "01"
If UCase(civ) = "SARL" Then civilite = "02"
If UCase(civ) = "M" Then civilite = "03"
If UCase(civ) = "MME" Then civilite = "04"
If UCase(civ) = "MLLE" Then civilite = "05"
If UCase(civ) = "STE" Then civilite = "06"
If UCase(civ) = "ETS" Then civilite = "07"
If UCase(civ) = "ASS" Then civilite = "10"
If UCase(civ) = "" Then civilite = "11"
If UCase(civ) = "SCI" Then civilite = "13"
If UCase(civ) = "EURL" Then civilite = "14"
If UCase(civ) = "MTR" Then civilite = "15"
If UCase(civ) = "M.MME" Then civilite = "18"
If UCase(civ) = "DR" Then civilite = "20"
If UCase(civ) = "SCP" Then civilite = "22"
If UCase(civ) = "BAR" Then civilit = "07"
End Function
Function commune(cp As String) As String
' Windows("macro_fi").Activate
Set C = Worksheets("liste_villes").Columns("D").Find(cp)
commune = cadrage(C.Offset(0, -2), 30, " ")
End Function
Function insee(cp As String)
' Windows("macro_fi").Activate
On Error GoTo finf:
Set C = Worksheets("liste_villes").Columns("D").Find(cp)
insee1 = C.Offset(0, -1)
If Len(insee1) = 5 Then
insee = insee1
Else
insee = "0" & insee1
End If
' MsgBox "resultat = " & insee
finf:
If Len(cp) = 5 Then
insee = cp
Else
insee = "0" & cp
End If
End Function
Re.. pourrais tu essayer de remplacer cette partie de code ( située à la fin de ta macro) **************** principal = solde montant_formaté = Format(principal, "#########,##0.00")
result = result & cadragedroite(montant) ***********************
par la seule ligne suivante :
result = result & String(12 - Len(Format(solde, "0.00")), "0") & Format(solde, "0.00")
ça devrait le faire .....
"ALF" a écrit dans le message de news:
Bonjour, j'ai une macro dont une procedure (sub traitement impayes) me retourne un fichier .xls et un fichier.txt. le fichier .xls est ok mais le fichier.txt me renvoie un montant erronné.il senblerait que la macro supprime le 1er chiffre du montant ,prend la chaine de chiffre(limité à 5 chiffres max.) sans la virgule puis rajoute la virgule suivi de 2 chiffres. ex si montant R3,13 on a dans le fichier.txt 2313,13 je n'arrive pas à trouver ce qui pose probleme dans la procedure..pouvez vous m'eclairer...je vous laisse la macro
Sub choix()
menu_avip.Show
End Sub
Sub extraction_ACI() ' ' Dim date_etat As String, date_aci2 As String Const dir = "S:CONTENTIEUX_AVIPACI" ' Const DIR = "C:avipACI"
menu_avip.Hide
date_aci = InputBox("Les ACI de Quelle date doit-on extraire ?", "ATTENTION Saisir la date sous le format JJMMAA") date_aci2 = Left$(date_aci, 2) & "/" & Mid(date_aci, 3, 2) & "/20" & Right$(date_aci, 2) ' création fichier ACI _ date du jour
ActiveWorkbook.SaveAs Filename:=dir & nom_fich ' ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True ' ActiveWorkbook.Close End Sub
Sub extraction_versement() ' ' Dim date_etat As String, date_aci2 As String Const dir = "S:CONTENTIEUX_AVIPRIOU" 'Const DIR = "C:avipRIOU"
menu_avip.Hide
date_RIOU = InputBox("Les Versements de Quelle date doit-on extraire ?", "ATTENTION Saisir la date sous le format JJMMAA") col = InputBox("Dans quelle colonne ont été saisis les paiements ? ") date_RIOU2 = Left$(date_RIOU, 2) & "/" & Mid(date_RIOU, 3, 2) & "/20" & Right$(date_RIOU, 2) ' création fichier Versements RIOU
Const dir = "s:CONTENTIEUX_AVIPRIOU" ' Const dir = "c:AVIPRIOU" Dim nomfich As String Dim debut As Range, fin As Range, maplage As Range, col As Variant Dim bureau As String, typ As String, nom As String Dim fichier As String, fichier_resultat As String Dim i As Integer, nb_lignes As Integer, postit As String Dim solde As Double, caution As Double, valeur As Double Dim rue As String, tel1 As String, tel2 As String, montant As Double, materiel As String
For m = 1 To nb_lignes num_contrat = Range("B" & m) contrat_suivant = Range("B" & m).Offset(1, 0) contrat_suivant2 = Range("B" & m).Offset(2, 0) col_L = Range("L" & m) longueur = Len(col_L) If contrat_suivant = "" Then m = nb_lignes GoTo fin: End If If contrat_suivant = num_contrat Then If longueur = 11 Or longueur = 12 Then facture1 = Range("L" & m) & "*" & Left(Range("M" & m), 6) & Right(Range("M" & m), 2) & "*" & Range("N" & m) & "?" Else facture1 = Range("L" & m) End If facture2 = Range("L" & m + 1) & "*" & Left(Range("M" & m), 6) & Right(Range("M" & m), 2) & "*" & Range("N" & m + 1) & "?" resultat = facture1 & "+" & facture2 Range("L" & m) = resultat Range("N" & m) = Range("N" & m) + Range("N" & m + 1) Rows(m + 1 & ":" & m + 1).Select Selection.Delete Shift:=xlUp If contrat_suivant2 = num_contrat Then m = m - 1
Else Range("L" & m) = Range("L" & m) & "*" & Left(Range("M" & m), 6) & Right(Range("M" & m), 2) & "*" & Range("N" & m) & "?" End If
Next m
fin:
Set debut = Range("A1") Set fin = debut.End(xlDown) Set maplage = Range(debut, fin)
' comptage nb lignes
nb_lignes = 0 For Each macellule In maplage nb_lignes = nb_lignes + 1 Next Range("L" & nb_lignes) = Range("L" & nb_lignes) & " du " & Range("M" & nb_lignes) & " de " & Range("N" & nb_lignes) & " EUR"
result = String(7, " ") ' numéro client RIOU result = result & num_client ' calcul numéro client interne FT ref_client = cadrage(Range("B" & i), 20, " ") result = result & ref_client ' calcul code civilité civ = civilite(Range("C" & i)) If civ = "" Then civ = "11" result = result & civ ' calcul nom débiteur nom = Range("D" & i) nom_client = cadrage(nom, 30, " ") result = result & nom_client ' calcul prenom debiteur result = result & String(30, " ") ' calcul nom rue 1 & 2 num = Range("E" & i) typvoie = Range("F" & i) voie = Range("G" & i) rue = num & " " & typvoie & " " & voie ad = cadrage(rue, 60, " ") result = result & ad ' code insee result = result & insee(Range("I" & i))
' calcul commune nom_commune = cadrage((Range("J" & i)), 30, " ") result = result & nom_commune ' calcul code postal cp = Range("I" & i) If Len(cp) = 4 Then cp = "0" & cp result = result & cp ' calcul bureau distributeur result = result & String(30, " ") ' calcul n° tel 1 If Range("K" & i) = "" Then tel1 = String(12, " ") Else: tel1 = Range("K" & i) ' num1 = Mid(tel1, 1, 2) ' num2 = Mid(tel1, 4, 2) ' num3 = Mid(tel1, 7, 2) ' num4 = Mid(tel1, 10, 2) ' num5 = Mid(tel1, 13, 2) ' tel1 = num1 + num2 + num3 + num4 + num5 End If result = result & cadrage(tel1, 12, " ") ' calcul n° tel 2 result = result & cadrage(tel2, 12, " ") ' calcul n° RM/RC result = result & String(15, " ") ' calcul siècle facture & date Daters = Range("M" & i) siecle = " 20" annee = Mid(Daters, 3, 2) mois = Mid(Daters, 5, 2) siecle_date = siecle & " " & annee & mois result = result & siecle_date
' calcul montant privilégié + tarif result = result & " " & "000000000,00" & "B" ' calcul type créance + MOntant principal en francs français If civ = "03" Or civ = "04" Or civ = "05" Or civ = "15" Or civ = "18" Or civ = "19" Or civ = "20" Then typ = "1" Else: typ = "2" End If result = result & typ & " " & "000000000,00"
' calcul siecle mise en demeure + date mise en demeure result = result & " 00 000000" ' calcul libellé facture + fondement créance result = result & String(160, " ") ' calcul code option + code pays result = result & "201" 'calcul postit col = "L" & i postit = Range(col) result = result & cadrage(postit, 80, " ") ' calcul litige + type débiteur + historique + code devise + montant privilégié
adpost = cadrage(Range("H" & i), 73, " ") result = result & "NP" & adpost & "EU" & " " & "000000000,00" ' calcul montant en principal solde = CDbl(Range("N" & i))
principal = solde montant_formaté = Format(principal, "#########,##0.00")
Open fichier_resultat For Append As #1 Print #1, result Close #1 i = i + 1 Next macellule
' Windows("macro_fi").Activate Cells.Select Selection.Delete Windows(nom_OK).Activate ActiveWorkbook.Save ActiveWorkbook.Close MsgBox "Le fichier " & site & "_resultat peut être déposé maintenant sur le site @ de RIOU ", vbOKOnly + vbInformation
menu_avip.Show End Sub
Function cadrage(chaine As String, longueur As Integer, car As String) As String
Dim l1 As Integer, nb_espaces As Integer
l1 = Len(chaine) nb_espaces = longueur - l1
If nb_espaces > 0 Then cadrage = chaine & String(nb_espaces, car) Else: cadrage = Left(chaine, longueur) End If
End Function
Function cadragedroite(chaine As Variant) As String
If UCase(civ) = "SA" Then civilite = "01" If UCase(civ) = "SARL" Then civilite = "02" If UCase(civ) = "M" Then civilite = "03" If UCase(civ) = "MME" Then civilite = "04" If UCase(civ) = "MLLE" Then civilite = "05" If UCase(civ) = "STE" Then civilite = "06" If UCase(civ) = "ETS" Then civilite = "07" If UCase(civ) = "ASS" Then civilite = "10" If UCase(civ) = "" Then civilite = "11" If UCase(civ) = "SCI" Then civilite = "13" If UCase(civ) = "EURL" Then civilite = "14" If UCase(civ) = "MTR" Then civilite = "15" If UCase(civ) = "M.MME" Then civilite = "18" If UCase(civ) = "DR" Then civilite = "20" If UCase(civ) = "SCP" Then civilite = "22" If UCase(civ) = "BAR" Then civilit = "07"
End Function
Function commune(cp As String) As String
' Windows("macro_fi").Activate Set C = Worksheets("liste_villes").Columns("D").Find(cp) commune = cadrage(C.Offset(0, -2), 30, " ")
End Function Function insee(cp As String)
' Windows("macro_fi").Activate On Error GoTo finf: Set C = Worksheets("liste_villes").Columns("D").Find(cp)
insee1 = C.Offset(0, -1) If Len(insee1) = 5 Then insee = insee1 Else insee = "0" & insee1 End If
' MsgBox "resultat = " & insee finf: If Len(cp) = 5 Then insee = cp Else insee = "0" & cp End If End Function
Merci pour votre soutien.
-- ALF
ALF
re, Phil,je n'ai qu'un mot a te dire...BRAVO Cela fonctionne parfaitement,et en plus la procedure en est reduite.. Merci à toi et aussi à j-luc car c'etait vraiment peu evident ... -- ALF
Re.. pourrais tu essayer de remplacer cette partie de code ( située à la fin de ta macro) **************** principal = solde montant_formaté = Format(principal, "#########,##0.00")
result = result & cadragedroite(montant) ***********************
par la seule ligne suivante :
result = result & String(12 - Len(Format(solde, "0.00")), "0") & Format(solde, "0.00")
ça devrait le faire .....
"ALF" a écrit dans le message de news:
Bonjour, j'ai une macro dont une procedure (sub traitement impayes) me retourne un fichier .xls et un fichier.txt. le fichier .xls est ok mais le fichier.txt me renvoie un montant erronné.il senblerait que la macro supprime le 1er chiffre du montant ,prend la chaine de chiffre(limité à 5 chiffres max.) sans la virgule puis rajoute la virgule suivi de 2 chiffres. ex si montant R3,13 on a dans le fichier.txt 2313,13 je n'arrive pas à trouver ce qui pose probleme dans la procedure..pouvez vous m'eclairer...je vous laisse la macro
Sub choix()
menu_avip.Show
End Sub
Sub extraction_ACI() ' ' Dim date_etat As String, date_aci2 As String Const dir = "S:CONTENTIEUX_AVIPACI" ' Const DIR = "C:avipACI"
menu_avip.Hide
date_aci = InputBox("Les ACI de Quelle date doit-on extraire ?", "ATTENTION Saisir la date sous le format JJMMAA") date_aci2 = Left$(date_aci, 2) & "/" & Mid(date_aci, 3, 2) & "/20" & Right$(date_aci, 2) ' création fichier ACI _ date du jour
ActiveWorkbook.SaveAs Filename:=dir & nom_fich ' ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True ' ActiveWorkbook.Close End Sub
Sub extraction_versement() ' ' Dim date_etat As String, date_aci2 As String Const dir = "S:CONTENTIEUX_AVIPRIOU" 'Const DIR = "C:avipRIOU"
menu_avip.Hide
date_RIOU = InputBox("Les Versements de Quelle date doit-on extraire ?", "ATTENTION Saisir la date sous le format JJMMAA") col = InputBox("Dans quelle colonne ont été saisis les paiements ? ") date_RIOU2 = Left$(date_RIOU, 2) & "/" & Mid(date_RIOU, 3, 2) & "/20" & Right$(date_RIOU, 2) ' création fichier Versements RIOU
re,
Phil,je n'ai qu'un mot a te dire...BRAVO
Cela fonctionne parfaitement,et en plus la procedure en est reduite..
Merci à toi et aussi à j-luc car c'etait vraiment peu evident ...
--
ALF
Re..
pourrais tu essayer de remplacer cette partie de code ( située à la fin de
ta macro)
****************
principal = solde
montant_formaté = Format(principal, "#########,##0.00")
result = result & cadragedroite(montant)
***********************
par la seule ligne suivante :
result = result & String(12 - Len(Format(solde, "0.00")), "0") &
Format(solde, "0.00")
ça devrait le faire .....
"ALF" <ALF@discussions.microsoft.com> a écrit dans le message de news:
8E29DACC-447F-4DB8-A101-00DF1C0442C9@microsoft.com...
Bonjour,
j'ai une macro dont une procedure (sub traitement impayes) me retourne un
fichier .xls et un fichier.txt.
le fichier .xls est ok mais le fichier.txt me renvoie un montant
erronné.il
senblerait que la macro supprime le 1er chiffre du montant ,prend la
chaine
de chiffre(limité à 5 chiffres max.) sans la virgule puis rajoute la
virgule
suivi de 2 chiffres.
ex si montant R3,13 on a dans le fichier.txt 2313,13
je n'arrive pas à trouver ce qui pose probleme dans la procedure..pouvez
vous m'eclairer...je vous laisse la macro
Sub choix()
menu_avip.Show
End Sub
Sub extraction_ACI()
'
'
Dim date_etat As String, date_aci2 As String
Const dir = "S:CONTENTIEUX_AVIPACI"
' Const DIR = "C:avipACI"
menu_avip.Hide
date_aci = InputBox("Les ACI de Quelle date doit-on extraire ?",
"ATTENTION
Saisir la date sous le format JJMMAA")
date_aci2 = Left$(date_aci, 2) & "/" & Mid(date_aci, 3, 2) & "/20" &
Right$(date_aci, 2)
' création fichier ACI _ date du jour
ActiveWorkbook.SaveAs Filename:=dir & nom_fich
' ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
' ActiveWorkbook.Close
End Sub
Sub extraction_versement()
'
'
Dim date_etat As String, date_aci2 As String
Const dir = "S:CONTENTIEUX_AVIPRIOU"
'Const DIR = "C:avipRIOU"
menu_avip.Hide
date_RIOU = InputBox("Les Versements de Quelle date doit-on extraire ?",
"ATTENTION Saisir la date sous le format JJMMAA")
col = InputBox("Dans quelle colonne ont été saisis les paiements ? ")
date_RIOU2 = Left$(date_RIOU, 2) & "/" & Mid(date_RIOU, 3, 2) & "/20" &
Right$(date_RIOU, 2)
' création fichier Versements RIOU
re, Phil,je n'ai qu'un mot a te dire...BRAVO Cela fonctionne parfaitement,et en plus la procedure en est reduite.. Merci à toi et aussi à j-luc car c'etait vraiment peu evident ... -- ALF
Re.. pourrais tu essayer de remplacer cette partie de code ( située à la fin de ta macro) **************** principal = solde montant_formaté = Format(principal, "#########,##0.00")
result = result & cadragedroite(montant) ***********************
par la seule ligne suivante :
result = result & String(12 - Len(Format(solde, "0.00")), "0") & Format(solde, "0.00")
ça devrait le faire .....
"ALF" a écrit dans le message de news:
Bonjour, j'ai une macro dont une procedure (sub traitement impayes) me retourne un fichier .xls et un fichier.txt. le fichier .xls est ok mais le fichier.txt me renvoie un montant erronné.il senblerait que la macro supprime le 1er chiffre du montant ,prend la chaine de chiffre(limité à 5 chiffres max.) sans la virgule puis rajoute la virgule suivi de 2 chiffres. ex si montant R3,13 on a dans le fichier.txt 2313,13 je n'arrive pas à trouver ce qui pose probleme dans la procedure..pouvez vous m'eclairer...je vous laisse la macro
Sub choix()
menu_avip.Show
End Sub
Sub extraction_ACI() ' ' Dim date_etat As String, date_aci2 As String Const dir = "S:CONTENTIEUX_AVIPACI" ' Const DIR = "C:avipACI"
menu_avip.Hide
date_aci = InputBox("Les ACI de Quelle date doit-on extraire ?", "ATTENTION Saisir la date sous le format JJMMAA") date_aci2 = Left$(date_aci, 2) & "/" & Mid(date_aci, 3, 2) & "/20" & Right$(date_aci, 2) ' création fichier ACI _ date du jour
ActiveWorkbook.SaveAs Filename:=dir & nom_fich ' ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True ' ActiveWorkbook.Close End Sub
Sub extraction_versement() ' ' Dim date_etat As String, date_aci2 As String Const dir = "S:CONTENTIEUX_AVIPRIOU" 'Const DIR = "C:avipRIOU"
menu_avip.Hide
date_RIOU = InputBox("Les Versements de Quelle date doit-on extraire ?", "ATTENTION Saisir la date sous le format JJMMAA") col = InputBox("Dans quelle colonne ont été saisis les paiements ? ") date_RIOU2 = Left$(date_RIOU, 2) & "/" & Mid(date_RIOU, 3, 2) & "/20" & Right$(date_RIOU, 2) ' création fichier Versements RIOU