Bonjour,
j'ai une macro excel récupérée et qui a été construite à l'origine sur
excel
2003 via WINDOWS XP alors que mon environnement est wIndows 200 pro et
excel
2000.
apparemment la macro s'arrette à un moment avec le message suivant
:"erreur
d"éxécution 13: incompatibilité de type" et lorsque j'active le debogage
,j'obtiend la ligne suivante selectionné en JAUNE:
Range("N" & m) = Range("N" & m) + Range("N" & m + 1)
et le resultat partiel obtenu sur le fichier dans les cellules de la
colonne N est le suivant:
263401,41278501,0299531,19183070,38537339,64 ????
Apparemment la macro n'a pas pu effectuer la somme des montants mais par
contre a rajouté sur la meme ligne les différents montants les uns à la
suite
des autres!!...comme du texte alors que c'est censé etre des valeurs
"réèls
doubles"....
à l'origine les valeurs sont en format standard et doivent être convertis
en
format réèl double...
j'ai l'impression qu'il y a un caractère parasite qui empêche d'activer
l'opération addition..
Pouvez vous m'aider à ce sujet???
Je vous laisse la macro en question :
Sub traitement_impayes()
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 String,
materiel As String
Date_jour = Date
Date_jour = Left(Date, 2) & Mid(Date, 4, 2) & Right(Date, 2)
fichier_resultat = Date_jour & "_resultat.txt"
On Error GoTo 1
Kill (fichier_resultat)
1
num_client = "04999"
' mise en forme fichier AVIP
menu_avip.Hide
MsgBox "Merci de choisir le fichier à traiter "
Application.FindFile
' Rows("1:1").Select
' Selection.Delete Shift:=xlUp
Columns("C:E").Select
Selection.Delete Shift:=xlToLeft
Columns("L:M").Select
Selection.Delete Shift:=xlToLeft
Columns("M:M").Select
Selection.Delete Shift:=xlToLeft
Columns("N:N").Select
Selection.Delete Shift:=xlToLeft
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
For j = 1 To nb_lignes
code_montant = Range("O" & j)
montant = CDbl(Range("N" & j))
Select Case code_montant
Case "C"
Range("N" & j) = -1 * montant
Case "D"
Range("N" & j) = montant
Case ""
Range("N" & j) = montant
End Select
Next j
nom_f = ActiveWorkbook.Name
ActiveWorkbook.SaveAs Filename:= _
dir & "en attente envoi" & "OK_" & nom_f, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:úlse, CreateBackup:úlse
nom_OK = ActiveWorkbook.Name
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("A1:N" & nb_lignes).Select
Selection.Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess,
_
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
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"
Cells.Select
Selection.Copy
Windows("macro_gestion_AVIP.xls").Activate
Sheets("macro").Select
Cells.Select
ActiveSheet.Paste
i = 1
For Each macellule In maplage
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")
montant_formaté = montant_formaté * 100
montant = Str$(montant_formaté)
longueur = Len(montant)
partie_gauche = Left$(montant, longueur - 2)
partie_droite = Right$(montant, 2)
montant_final = partie_gauche & "," & partie_droite
montant = Mid$(montant_final, 2, Len(montant_final) - 1)
' MsgBox "resultat - montant final : " & montant & " longueur " &
Len(montant)
result = result & cadragedroite(montant)
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
Merci de votre soutien.
--
ALF
Bonjour,
j'ai une macro excel récupérée et qui a été construite à l'origine sur
excel
2003 via WINDOWS XP alors que mon environnement est wIndows 200 pro et
excel
2000.
apparemment la macro s'arrette à un moment avec le message suivant
:"erreur
d"éxécution 13: incompatibilité de type" et lorsque j'active le debogage
,j'obtiend la ligne suivante selectionné en JAUNE:
Range("N" & m) = Range("N" & m) + Range("N" & m + 1)
et le resultat partiel obtenu sur le fichier dans les cellules de la
colonne N est le suivant:
263401,41278501,0299531,19183070,38537339,64 ????
Apparemment la macro n'a pas pu effectuer la somme des montants mais par
contre a rajouté sur la meme ligne les différents montants les uns à la
suite
des autres!!...comme du texte alors que c'est censé etre des valeurs
"réèls
doubles"....
à l'origine les valeurs sont en format standard et doivent être convertis
en
format réèl double...
j'ai l'impression qu'il y a un caractère parasite qui empêche d'activer
l'opération addition..
Pouvez vous m'aider à ce sujet???
Je vous laisse la macro en question :
Sub traitement_impayes()
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 String,
materiel As String
Date_jour = Date
Date_jour = Left(Date, 2) & Mid(Date, 4, 2) & Right(Date, 2)
fichier_resultat = Date_jour & "_resultat.txt"
On Error GoTo 1
Kill (fichier_resultat)
1
num_client = "04999"
' mise en forme fichier AVIP
menu_avip.Hide
MsgBox "Merci de choisir le fichier à traiter "
Application.FindFile
' Rows("1:1").Select
' Selection.Delete Shift:=xlUp
Columns("C:E").Select
Selection.Delete Shift:=xlToLeft
Columns("L:M").Select
Selection.Delete Shift:=xlToLeft
Columns("M:M").Select
Selection.Delete Shift:=xlToLeft
Columns("N:N").Select
Selection.Delete Shift:=xlToLeft
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
For j = 1 To nb_lignes
code_montant = Range("O" & j)
montant = CDbl(Range("N" & j))
Select Case code_montant
Case "C"
Range("N" & j) = -1 * montant
Case "D"
Range("N" & j) = montant
Case ""
Range("N" & j) = montant
End Select
Next j
nom_f = ActiveWorkbook.Name
ActiveWorkbook.SaveAs Filename:= _
dir & "en attente envoi" & "OK_" & nom_f, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:úlse, CreateBackup:úlse
nom_OK = ActiveWorkbook.Name
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("A1:N" & nb_lignes).Select
Selection.Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess,
_
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
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"
Cells.Select
Selection.Copy
Windows("macro_gestion_AVIP.xls").Activate
Sheets("macro").Select
Cells.Select
ActiveSheet.Paste
i = 1
For Each macellule In maplage
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")
montant_formaté = montant_formaté * 100
montant = Str$(montant_formaté)
longueur = Len(montant)
partie_gauche = Left$(montant, longueur - 2)
partie_droite = Right$(montant, 2)
montant_final = partie_gauche & "," & partie_droite
montant = Mid$(montant_final, 2, Len(montant_final) - 1)
' MsgBox "resultat - montant final : " & montant & " longueur " &
Len(montant)
result = result & cadragedroite(montant)
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
Merci de votre soutien.
--
ALF
Bonjour,
j'ai une macro excel récupérée et qui a été construite à l'origine sur
excel
2003 via WINDOWS XP alors que mon environnement est wIndows 200 pro et
excel
2000.
apparemment la macro s'arrette à un moment avec le message suivant
:"erreur
d"éxécution 13: incompatibilité de type" et lorsque j'active le debogage
,j'obtiend la ligne suivante selectionné en JAUNE:
Range("N" & m) = Range("N" & m) + Range("N" & m + 1)
et le resultat partiel obtenu sur le fichier dans les cellules de la
colonne N est le suivant:
263401,41278501,0299531,19183070,38537339,64 ????
Apparemment la macro n'a pas pu effectuer la somme des montants mais par
contre a rajouté sur la meme ligne les différents montants les uns à la
suite
des autres!!...comme du texte alors que c'est censé etre des valeurs
"réèls
doubles"....
à l'origine les valeurs sont en format standard et doivent être convertis
en
format réèl double...
j'ai l'impression qu'il y a un caractère parasite qui empêche d'activer
l'opération addition..
Pouvez vous m'aider à ce sujet???
Je vous laisse la macro en question :
Sub traitement_impayes()
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 String,
materiel As String
Date_jour = Date
Date_jour = Left(Date, 2) & Mid(Date, 4, 2) & Right(Date, 2)
fichier_resultat = Date_jour & "_resultat.txt"
On Error GoTo 1
Kill (fichier_resultat)
1
num_client = "04999"
' mise en forme fichier AVIP
menu_avip.Hide
MsgBox "Merci de choisir le fichier à traiter "
Application.FindFile
' Rows("1:1").Select
' Selection.Delete Shift:=xlUp
Columns("C:E").Select
Selection.Delete Shift:=xlToLeft
Columns("L:M").Select
Selection.Delete Shift:=xlToLeft
Columns("M:M").Select
Selection.Delete Shift:=xlToLeft
Columns("N:N").Select
Selection.Delete Shift:=xlToLeft
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
For j = 1 To nb_lignes
code_montant = Range("O" & j)
montant = CDbl(Range("N" & j))
Select Case code_montant
Case "C"
Range("N" & j) = -1 * montant
Case "D"
Range("N" & j) = montant
Case ""
Range("N" & j) = montant
End Select
Next j
nom_f = ActiveWorkbook.Name
ActiveWorkbook.SaveAs Filename:= _
dir & "en attente envoi" & "OK_" & nom_f, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:úlse, CreateBackup:úlse
nom_OK = ActiveWorkbook.Name
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("A1:N" & nb_lignes).Select
Selection.Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess,
_
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
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"
Cells.Select
Selection.Copy
Windows("macro_gestion_AVIP.xls").Activate
Sheets("macro").Select
Cells.Select
ActiveSheet.Paste
i = 1
For Each macellule In maplage
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")
montant_formaté = montant_formaté * 100
montant = Str$(montant_formaté)
longueur = Len(montant)
partie_gauche = Left$(montant, longueur - 2)
partie_droite = Right$(montant, 2)
montant_final = partie_gauche & "," & partie_droite
montant = Mid$(montant_final, 2, Len(montant_final) - 1)
' MsgBox "resultat - montant final : " & montant & " longueur " &
Len(montant)
result = result & cadragedroite(montant)
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
Merci de votre soutien.
--
ALF
Bonjour
Sans trop chercher, essaie simplement de modifier comme ceci :
On error resume next
Range("N" & m).Value = Range("N" & m).Value + Range("N" & m + 1).Value
If err <> 0 Then msgbox "problème dans les valeurs de cellules" : exit sub
Cordialement
Pascal
"ALF" a écrit dans le message de news:Bonjour,
j'ai une macro excel récupérée et qui a été construite à l'origine sur
excel
2003 via WINDOWS XP alors que mon environnement est wIndows 200 pro et
excel
2000.
apparemment la macro s'arrette à un moment avec le message suivant
:"erreur
d"éxécution 13: incompatibilité de type" et lorsque j'active le debogage
,j'obtiend la ligne suivante selectionné en JAUNE:
Range("N" & m) = Range("N" & m) + Range("N" & m + 1)
et le resultat partiel obtenu sur le fichier dans les cellules de la
colonne N est le suivant:
263401,41278501,0299531,19183070,38537339,64 ????
Apparemment la macro n'a pas pu effectuer la somme des montants mais par
contre a rajouté sur la meme ligne les différents montants les uns à la
suite
des autres!!...comme du texte alors que c'est censé etre des valeurs
"réèls
doubles"....
à l'origine les valeurs sont en format standard et doivent être convertis
en
format réèl double...
j'ai l'impression qu'il y a un caractère parasite qui empêche d'activer
l'opération addition..
Pouvez vous m'aider à ce sujet???
Je vous laisse la macro en question :
Sub traitement_impayes()
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 String,
materiel As String
Date_jour = Date
Date_jour = Left(Date, 2) & Mid(Date, 4, 2) & Right(Date, 2)
fichier_resultat = Date_jour & "_resultat.txt"
On Error GoTo 1
Kill (fichier_resultat)
1
num_client = "04999"
' mise en forme fichier AVIP
menu_avip.Hide
MsgBox "Merci de choisir le fichier à traiter "
Application.FindFile
' Rows("1:1").Select
' Selection.Delete Shift:=xlUp
Columns("C:E").Select
Selection.Delete Shift:=xlToLeft
Columns("L:M").Select
Selection.Delete Shift:=xlToLeft
Columns("M:M").Select
Selection.Delete Shift:=xlToLeft
Columns("N:N").Select
Selection.Delete Shift:=xlToLeft
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
For j = 1 To nb_lignes
code_montant = Range("O" & j)
montant = CDbl(Range("N" & j))
Select Case code_montant
Case "C"
Range("N" & j) = -1 * montant
Case "D"
Range("N" & j) = montant
Case ""
Range("N" & j) = montant
End Select
Next j
nom_f = ActiveWorkbook.Name
ActiveWorkbook.SaveAs Filename:= _
dir & "en attente envoi" & "OK_" & nom_f, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:úlse, CreateBackup:úlse
nom_OK = ActiveWorkbook.Name
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("A1:N" & nb_lignes).Select
Selection.Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess,
_
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
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"
Cells.Select
Selection.Copy
Windows("macro_gestion_AVIP.xls").Activate
Sheets("macro").Select
Cells.Select
ActiveSheet.Paste
i = 1
For Each macellule In maplage
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")
montant_formaté = montant_formaté * 100
montant = Str$(montant_formaté)
longueur = Len(montant)
partie_gauche = Left$(montant, longueur - 2)
partie_droite = Right$(montant, 2)
montant_final = partie_gauche & "," & partie_droite
montant = Mid$(montant_final, 2, Len(montant_final) - 1)
' MsgBox "resultat - montant final : " & montant & " longueur " &
Len(montant)
result = result & cadragedroite(montant)
Open fichier_resultat For Append As #1
Print #1, result
Close #1
Bonjour
Sans trop chercher, essaie simplement de modifier comme ceci :
On error resume next
Range("N" & m).Value = Range("N" & m).Value + Range("N" & m + 1).Value
If err <> 0 Then msgbox "problème dans les valeurs de cellules" : exit sub
Cordialement
Pascal
"ALF" <ALF@discussions.microsoft.com> a écrit dans le message de news:
717C624F-ABC8-493F-97CE-0F7B74DD52D1@microsoft.com...
Bonjour,
j'ai une macro excel récupérée et qui a été construite à l'origine sur
excel
2003 via WINDOWS XP alors que mon environnement est wIndows 200 pro et
excel
2000.
apparemment la macro s'arrette à un moment avec le message suivant
:"erreur
d"éxécution 13: incompatibilité de type" et lorsque j'active le debogage
,j'obtiend la ligne suivante selectionné en JAUNE:
Range("N" & m) = Range("N" & m) + Range("N" & m + 1)
et le resultat partiel obtenu sur le fichier dans les cellules de la
colonne N est le suivant:
263401,41278501,0299531,19183070,38537339,64 ????
Apparemment la macro n'a pas pu effectuer la somme des montants mais par
contre a rajouté sur la meme ligne les différents montants les uns à la
suite
des autres!!...comme du texte alors que c'est censé etre des valeurs
"réèls
doubles"....
à l'origine les valeurs sont en format standard et doivent être convertis
en
format réèl double...
j'ai l'impression qu'il y a un caractère parasite qui empêche d'activer
l'opération addition..
Pouvez vous m'aider à ce sujet???
Je vous laisse la macro en question :
Sub traitement_impayes()
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 String,
materiel As String
Date_jour = Date
Date_jour = Left(Date, 2) & Mid(Date, 4, 2) & Right(Date, 2)
fichier_resultat = Date_jour & "_resultat.txt"
On Error GoTo 1
Kill (fichier_resultat)
1
num_client = "04999"
' mise en forme fichier AVIP
menu_avip.Hide
MsgBox "Merci de choisir le fichier à traiter "
Application.FindFile
' Rows("1:1").Select
' Selection.Delete Shift:=xlUp
Columns("C:E").Select
Selection.Delete Shift:=xlToLeft
Columns("L:M").Select
Selection.Delete Shift:=xlToLeft
Columns("M:M").Select
Selection.Delete Shift:=xlToLeft
Columns("N:N").Select
Selection.Delete Shift:=xlToLeft
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
For j = 1 To nb_lignes
code_montant = Range("O" & j)
montant = CDbl(Range("N" & j))
Select Case code_montant
Case "C"
Range("N" & j) = -1 * montant
Case "D"
Range("N" & j) = montant
Case ""
Range("N" & j) = montant
End Select
Next j
nom_f = ActiveWorkbook.Name
ActiveWorkbook.SaveAs Filename:= _
dir & "en attente envoi" & "OK_" & nom_f, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:úlse, CreateBackup:úlse
nom_OK = ActiveWorkbook.Name
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("A1:N" & nb_lignes).Select
Selection.Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess,
_
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
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"
Cells.Select
Selection.Copy
Windows("macro_gestion_AVIP.xls").Activate
Sheets("macro").Select
Cells.Select
ActiveSheet.Paste
i = 1
For Each macellule In maplage
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")
montant_formaté = montant_formaté * 100
montant = Str$(montant_formaté)
longueur = Len(montant)
partie_gauche = Left$(montant, longueur - 2)
partie_droite = Right$(montant, 2)
montant_final = partie_gauche & "," & partie_droite
montant = Mid$(montant_final, 2, Len(montant_final) - 1)
' MsgBox "resultat - montant final : " & montant & " longueur " &
Len(montant)
result = result & cadragedroite(montant)
Open fichier_resultat For Append As #1
Print #1, result
Close #1
Bonjour
Sans trop chercher, essaie simplement de modifier comme ceci :
On error resume next
Range("N" & m).Value = Range("N" & m).Value + Range("N" & m + 1).Value
If err <> 0 Then msgbox "problème dans les valeurs de cellules" : exit sub
Cordialement
Pascal
"ALF" a écrit dans le message de news:Bonjour,
j'ai une macro excel récupérée et qui a été construite à l'origine sur
excel
2003 via WINDOWS XP alors que mon environnement est wIndows 200 pro et
excel
2000.
apparemment la macro s'arrette à un moment avec le message suivant
:"erreur
d"éxécution 13: incompatibilité de type" et lorsque j'active le debogage
,j'obtiend la ligne suivante selectionné en JAUNE:
Range("N" & m) = Range("N" & m) + Range("N" & m + 1)
et le resultat partiel obtenu sur le fichier dans les cellules de la
colonne N est le suivant:
263401,41278501,0299531,19183070,38537339,64 ????
Apparemment la macro n'a pas pu effectuer la somme des montants mais par
contre a rajouté sur la meme ligne les différents montants les uns à la
suite
des autres!!...comme du texte alors que c'est censé etre des valeurs
"réèls
doubles"....
à l'origine les valeurs sont en format standard et doivent être convertis
en
format réèl double...
j'ai l'impression qu'il y a un caractère parasite qui empêche d'activer
l'opération addition..
Pouvez vous m'aider à ce sujet???
Je vous laisse la macro en question :
Sub traitement_impayes()
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 String,
materiel As String
Date_jour = Date
Date_jour = Left(Date, 2) & Mid(Date, 4, 2) & Right(Date, 2)
fichier_resultat = Date_jour & "_resultat.txt"
On Error GoTo 1
Kill (fichier_resultat)
1
num_client = "04999"
' mise en forme fichier AVIP
menu_avip.Hide
MsgBox "Merci de choisir le fichier à traiter "
Application.FindFile
' Rows("1:1").Select
' Selection.Delete Shift:=xlUp
Columns("C:E").Select
Selection.Delete Shift:=xlToLeft
Columns("L:M").Select
Selection.Delete Shift:=xlToLeft
Columns("M:M").Select
Selection.Delete Shift:=xlToLeft
Columns("N:N").Select
Selection.Delete Shift:=xlToLeft
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
For j = 1 To nb_lignes
code_montant = Range("O" & j)
montant = CDbl(Range("N" & j))
Select Case code_montant
Case "C"
Range("N" & j) = -1 * montant
Case "D"
Range("N" & j) = montant
Case ""
Range("N" & j) = montant
End Select
Next j
nom_f = ActiveWorkbook.Name
ActiveWorkbook.SaveAs Filename:= _
dir & "en attente envoi" & "OK_" & nom_f, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:úlse, CreateBackup:úlse
nom_OK = ActiveWorkbook.Name
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("A1:N" & nb_lignes).Select
Selection.Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess,
_
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
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"
Cells.Select
Selection.Copy
Windows("macro_gestion_AVIP.xls").Activate
Sheets("macro").Select
Cells.Select
ActiveSheet.Paste
i = 1
For Each macellule In maplage
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")
montant_formaté = montant_formaté * 100
montant = Str$(montant_formaté)
longueur = Len(montant)
partie_gauche = Left$(montant, longueur - 2)
partie_droite = Right$(montant, 2)
montant_final = partie_gauche & "," & partie_droite
montant = Mid$(montant_final, 2, Len(montant_final) - 1)
' MsgBox "resultat - montant final : " & montant & " longueur " &
Len(montant)
result = result & cadragedroite(montant)
Open fichier_resultat For Append As #1
Print #1, result
Close #1
par contre et c'est peut etre une piste,est ce normal que dans la
declaration on ai :"montant As String" alors que l'on veut en restitution
du
réèl double comme type de données....
Re,
Ca ne marche pas avec la modif que tu as proposé et j'ai le massage
d'erreur
"probleme dans les valeurs de cellules"
Merci
--
ALFBonjour
Sans trop chercher, essaie simplement de modifier comme ceci :
On error resume next
Range("N" & m).Value = Range("N" & m).Value + Range("N" & m + 1).Value
If err <> 0 Then msgbox "problème dans les valeurs de cellules" : exit
sub
Cordialement
Pascal
"ALF" a écrit dans le message de news:Bonjour,
j'ai une macro excel récupérée et qui a été construite à l'origine sur
excel
2003 via WINDOWS XP alors que mon environnement est wIndows 200 pro et
excel
2000.
apparemment la macro s'arrette à un moment avec le message suivant
:"erreur
d"éxécution 13: incompatibilité de type" et lorsque j'active le
debogage
,j'obtiend la ligne suivante selectionné en JAUNE:
Range("N" & m) = Range("N" & m) + Range("N" & m + 1)
et le resultat partiel obtenu sur le fichier dans les cellules de la
colonne N est le suivant:
263401,41278501,0299531,19183070,38537339,64 ????
Apparemment la macro n'a pas pu effectuer la somme des montants mais
par
contre a rajouté sur la meme ligne les différents montants les uns à la
suite
des autres!!...comme du texte alors que c'est censé etre des valeurs
"réèls
doubles"....
à l'origine les valeurs sont en format standard et doivent être
convertis
en
format réèl double...
j'ai l'impression qu'il y a un caractère parasite qui empêche d'activer
l'opération addition..
Pouvez vous m'aider à ce sujet???
Je vous laisse la macro en question :
Sub traitement_impayes()
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 String,
materiel As String
Date_jour = Date
Date_jour = Left(Date, 2) & Mid(Date, 4, 2) & Right(Date, 2)
fichier_resultat = Date_jour & "_resultat.txt"
On Error GoTo 1
Kill (fichier_resultat)
1
num_client = "04999"
' mise en forme fichier AVIP
menu_avip.Hide
MsgBox "Merci de choisir le fichier à traiter "
Application.FindFile
' Rows("1:1").Select
' Selection.Delete Shift:=xlUp
Columns("C:E").Select
Selection.Delete Shift:=xlToLeft
Columns("L:M").Select
Selection.Delete Shift:=xlToLeft
Columns("M:M").Select
Selection.Delete Shift:=xlToLeft
Columns("N:N").Select
Selection.Delete Shift:=xlToLeft
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
For j = 1 To nb_lignes
code_montant = Range("O" & j)
montant = CDbl(Range("N" & j))
Select Case code_montant
Case "C"
Range("N" & j) = -1 * montant
Case "D"
Range("N" & j) = montant
Case ""
Range("N" & j) = montant
End Select
Next j
nom_f = ActiveWorkbook.Name
ActiveWorkbook.SaveAs Filename:= _
dir & "en attente envoi" & "OK_" & nom_f, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:úlse, CreateBackup:úlse
nom_OK = ActiveWorkbook.Name
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("A1:N" & nb_lignes).Select
Selection.Sort Key1:=Range("B1"), Order1:=xlAscending,
Header:=xlGuess,
_
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
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"
Cells.Select
Selection.Copy
Windows("macro_gestion_AVIP.xls").Activate
Sheets("macro").Select
Cells.Select
ActiveSheet.Paste
i = 1
For Each macellule In maplage
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")
montant_formaté = montant_formaté * 100
montant = Str$(montant_formaté)
longueur = Len(montant)
partie_gauche = Left$(montant, longueur - 2)
partie_droite = Right$(montant, 2)
montant_final = partie_gauche & "," & partie_droite
montant = Mid$(montant_final, 2, Len(montant_final) - 1)
' MsgBox "resultat - montant final : " & montant & " longueur " &
Len(montant)
result = result & cadragedroite(montant)
Open fichier_resultat For Append As #1
Print #1, result
Close #1
par contre et c'est peut etre une piste,est ce normal que dans la
declaration on ai :"montant As String" alors que l'on veut en restitution
du
réèl double comme type de données....
Re,
Ca ne marche pas avec la modif que tu as proposé et j'ai le massage
d'erreur
"probleme dans les valeurs de cellules"
Merci
--
ALF
Bonjour
Sans trop chercher, essaie simplement de modifier comme ceci :
On error resume next
Range("N" & m).Value = Range("N" & m).Value + Range("N" & m + 1).Value
If err <> 0 Then msgbox "problème dans les valeurs de cellules" : exit
sub
Cordialement
Pascal
"ALF" <ALF@discussions.microsoft.com> a écrit dans le message de news:
717C624F-ABC8-493F-97CE-0F7B74DD52D1@microsoft.com...
Bonjour,
j'ai une macro excel récupérée et qui a été construite à l'origine sur
excel
2003 via WINDOWS XP alors que mon environnement est wIndows 200 pro et
excel
2000.
apparemment la macro s'arrette à un moment avec le message suivant
:"erreur
d"éxécution 13: incompatibilité de type" et lorsque j'active le
debogage
,j'obtiend la ligne suivante selectionné en JAUNE:
Range("N" & m) = Range("N" & m) + Range("N" & m + 1)
et le resultat partiel obtenu sur le fichier dans les cellules de la
colonne N est le suivant:
263401,41278501,0299531,19183070,38537339,64 ????
Apparemment la macro n'a pas pu effectuer la somme des montants mais
par
contre a rajouté sur la meme ligne les différents montants les uns à la
suite
des autres!!...comme du texte alors que c'est censé etre des valeurs
"réèls
doubles"....
à l'origine les valeurs sont en format standard et doivent être
convertis
en
format réèl double...
j'ai l'impression qu'il y a un caractère parasite qui empêche d'activer
l'opération addition..
Pouvez vous m'aider à ce sujet???
Je vous laisse la macro en question :
Sub traitement_impayes()
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 String,
materiel As String
Date_jour = Date
Date_jour = Left(Date, 2) & Mid(Date, 4, 2) & Right(Date, 2)
fichier_resultat = Date_jour & "_resultat.txt"
On Error GoTo 1
Kill (fichier_resultat)
1
num_client = "04999"
' mise en forme fichier AVIP
menu_avip.Hide
MsgBox "Merci de choisir le fichier à traiter "
Application.FindFile
' Rows("1:1").Select
' Selection.Delete Shift:=xlUp
Columns("C:E").Select
Selection.Delete Shift:=xlToLeft
Columns("L:M").Select
Selection.Delete Shift:=xlToLeft
Columns("M:M").Select
Selection.Delete Shift:=xlToLeft
Columns("N:N").Select
Selection.Delete Shift:=xlToLeft
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
For j = 1 To nb_lignes
code_montant = Range("O" & j)
montant = CDbl(Range("N" & j))
Select Case code_montant
Case "C"
Range("N" & j) = -1 * montant
Case "D"
Range("N" & j) = montant
Case ""
Range("N" & j) = montant
End Select
Next j
nom_f = ActiveWorkbook.Name
ActiveWorkbook.SaveAs Filename:= _
dir & "en attente envoi" & "OK_" & nom_f, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:úlse, CreateBackup:úlse
nom_OK = ActiveWorkbook.Name
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("A1:N" & nb_lignes).Select
Selection.Sort Key1:=Range("B1"), Order1:=xlAscending,
Header:=xlGuess,
_
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
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"
Cells.Select
Selection.Copy
Windows("macro_gestion_AVIP.xls").Activate
Sheets("macro").Select
Cells.Select
ActiveSheet.Paste
i = 1
For Each macellule In maplage
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")
montant_formaté = montant_formaté * 100
montant = Str$(montant_formaté)
longueur = Len(montant)
partie_gauche = Left$(montant, longueur - 2)
partie_droite = Right$(montant, 2)
montant_final = partie_gauche & "," & partie_droite
montant = Mid$(montant_final, 2, Len(montant_final) - 1)
' MsgBox "resultat - montant final : " & montant & " longueur " &
Len(montant)
result = result & cadragedroite(montant)
Open fichier_resultat For Append As #1
Print #1, result
Close #1
par contre et c'est peut etre une piste,est ce normal que dans la
declaration on ai :"montant As String" alors que l'on veut en restitution
du
réèl double comme type de données....
Re,
Ca ne marche pas avec la modif que tu as proposé et j'ai le massage
d'erreur
"probleme dans les valeurs de cellules"
Merci
--
ALFBonjour
Sans trop chercher, essaie simplement de modifier comme ceci :
On error resume next
Range("N" & m).Value = Range("N" & m).Value + Range("N" & m + 1).Value
If err <> 0 Then msgbox "problème dans les valeurs de cellules" : exit
sub
Cordialement
Pascal
"ALF" a écrit dans le message de news:Bonjour,
j'ai une macro excel récupérée et qui a été construite à l'origine sur
excel
2003 via WINDOWS XP alors que mon environnement est wIndows 200 pro et
excel
2000.
apparemment la macro s'arrette à un moment avec le message suivant
:"erreur
d"éxécution 13: incompatibilité de type" et lorsque j'active le
debogage
,j'obtiend la ligne suivante selectionné en JAUNE:
Range("N" & m) = Range("N" & m) + Range("N" & m + 1)
et le resultat partiel obtenu sur le fichier dans les cellules de la
colonne N est le suivant:
263401,41278501,0299531,19183070,38537339,64 ????
Apparemment la macro n'a pas pu effectuer la somme des montants mais
par
contre a rajouté sur la meme ligne les différents montants les uns à la
suite
des autres!!...comme du texte alors que c'est censé etre des valeurs
"réèls
doubles"....
à l'origine les valeurs sont en format standard et doivent être
convertis
en
format réèl double...
j'ai l'impression qu'il y a un caractère parasite qui empêche d'activer
l'opération addition..
Pouvez vous m'aider à ce sujet???
Je vous laisse la macro en question :
Sub traitement_impayes()
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 String,
materiel As String
Date_jour = Date
Date_jour = Left(Date, 2) & Mid(Date, 4, 2) & Right(Date, 2)
fichier_resultat = Date_jour & "_resultat.txt"
On Error GoTo 1
Kill (fichier_resultat)
1
num_client = "04999"
' mise en forme fichier AVIP
menu_avip.Hide
MsgBox "Merci de choisir le fichier à traiter "
Application.FindFile
' Rows("1:1").Select
' Selection.Delete Shift:=xlUp
Columns("C:E").Select
Selection.Delete Shift:=xlToLeft
Columns("L:M").Select
Selection.Delete Shift:=xlToLeft
Columns("M:M").Select
Selection.Delete Shift:=xlToLeft
Columns("N:N").Select
Selection.Delete Shift:=xlToLeft
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
For j = 1 To nb_lignes
code_montant = Range("O" & j)
montant = CDbl(Range("N" & j))
Select Case code_montant
Case "C"
Range("N" & j) = -1 * montant
Case "D"
Range("N" & j) = montant
Case ""
Range("N" & j) = montant
End Select
Next j
nom_f = ActiveWorkbook.Name
ActiveWorkbook.SaveAs Filename:= _
dir & "en attente envoi" & "OK_" & nom_f, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:úlse, CreateBackup:úlse
nom_OK = ActiveWorkbook.Name
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("A1:N" & nb_lignes).Select
Selection.Sort Key1:=Range("B1"), Order1:=xlAscending,
Header:=xlGuess,
_
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
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"
Cells.Select
Selection.Copy
Windows("macro_gestion_AVIP.xls").Activate
Sheets("macro").Select
Cells.Select
ActiveSheet.Paste
i = 1
For Each macellule In maplage
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")
montant_formaté = montant_formaté * 100
montant = Str$(montant_formaté)
longueur = Len(montant)
partie_gauche = Left$(montant, longueur - 2)
partie_droite = Right$(montant, 2)
montant_final = partie_gauche & "," & partie_droite
montant = Mid$(montant_final, 2, Len(montant_final) - 1)
' MsgBox "resultat - montant final : " & montant & " longueur " &
Len(montant)
result = result & cadragedroite(montant)
Open fichier_resultat For Append As #1
Print #1, result
Close #1
Bonjour,par contre et c'est peut etre une piste,est ce normal que dans la
declaration on ai :"montant As String" alors que l'on veut en restitution
du
réèl double comme type de données....
En principe, non.
Essaie avec DIm montant as double
"ALF" a écrit dans le message de news:Re,
Ca ne marche pas avec la modif que tu as proposé et j'ai le massage
d'erreur
"probleme dans les valeurs de cellules"
Merci
--
ALFBonjour
Sans trop chercher, essaie simplement de modifier comme ceci :
On error resume next
Range("N" & m).Value = Range("N" & m).Value + Range("N" & m + 1).Value
If err <> 0 Then msgbox "problème dans les valeurs de cellules" : exit
sub
Cordialement
Pascal
"ALF" a écrit dans le message de news:Bonjour,
j'ai une macro excel récupérée et qui a été construite à l'origine sur
excel
2003 via WINDOWS XP alors que mon environnement est wIndows 200 pro et
excel
2000.
apparemment la macro s'arrette à un moment avec le message suivant
:"erreur
d"éxécution 13: incompatibilité de type" et lorsque j'active le
debogage
,j'obtiend la ligne suivante selectionné en JAUNE:
Range("N" & m) = Range("N" & m) + Range("N" & m + 1)
et le resultat partiel obtenu sur le fichier dans les cellules de la
colonne N est le suivant:
263401,41278501,0299531,19183070,38537339,64 ????
Apparemment la macro n'a pas pu effectuer la somme des montants mais
par
contre a rajouté sur la meme ligne les différents montants les uns à la
suite
des autres!!...comme du texte alors que c'est censé etre des valeurs
"réèls
doubles"....
à l'origine les valeurs sont en format standard et doivent être
convertis
en
format réèl double...
j'ai l'impression qu'il y a un caractère parasite qui empêche d'activer
l'opération addition..
Pouvez vous m'aider à ce sujet???
Je vous laisse la macro en question :
Sub traitement_impayes()
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 String,
materiel As String
Date_jour = Date
Date_jour = Left(Date, 2) & Mid(Date, 4, 2) & Right(Date, 2)
fichier_resultat = Date_jour & "_resultat.txt"
On Error GoTo 1
Kill (fichier_resultat)
1
num_client = "04999"
' mise en forme fichier AVIP
menu_avip.Hide
MsgBox "Merci de choisir le fichier à traiter "
Application.FindFile
' Rows("1:1").Select
' Selection.Delete Shift:=xlUp
Columns("C:E").Select
Selection.Delete Shift:=xlToLeft
Columns("L:M").Select
Selection.Delete Shift:=xlToLeft
Columns("M:M").Select
Selection.Delete Shift:=xlToLeft
Columns("N:N").Select
Selection.Delete Shift:=xlToLeft
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
For j = 1 To nb_lignes
code_montant = Range("O" & j)
montant = CDbl(Range("N" & j))
Select Case code_montant
Case "C"
Range("N" & j) = -1 * montant
Case "D"
Range("N" & j) = montant
Case ""
Range("N" & j) = montant
End Select
Next j
nom_f = ActiveWorkbook.Name
ActiveWorkbook.SaveAs Filename:= _
dir & "en attente envoi" & "OK_" & nom_f, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:úlse, CreateBackup:úlse
nom_OK = ActiveWorkbook.Name
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("A1:N" & nb_lignes).Select
Selection.Sort Key1:=Range("B1"), Order1:=xlAscending,
Header:=xlGuess,
_
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
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"
Cells.Select
Selection.Copy
Windows("macro_gestion_AVIP.xls").Activate
Sheets("macro").Select
Cells.Select
ActiveSheet.Paste
i = 1
For Each macellule In maplage
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"
Bonjour,
par contre et c'est peut etre une piste,est ce normal que dans la
declaration on ai :"montant As String" alors que l'on veut en restitution
du
réèl double comme type de données....
En principe, non.
Essaie avec DIm montant as double
"ALF" <ALF@discussions.microsoft.com> a écrit dans le message de news:
D0CA2404-0870-4E13-A4D5-E966661F0369@microsoft.com...
Re,
Ca ne marche pas avec la modif que tu as proposé et j'ai le massage
d'erreur
"probleme dans les valeurs de cellules"
Merci
--
ALF
Bonjour
Sans trop chercher, essaie simplement de modifier comme ceci :
On error resume next
Range("N" & m).Value = Range("N" & m).Value + Range("N" & m + 1).Value
If err <> 0 Then msgbox "problème dans les valeurs de cellules" : exit
sub
Cordialement
Pascal
"ALF" <ALF@discussions.microsoft.com> a écrit dans le message de news:
717C624F-ABC8-493F-97CE-0F7B74DD52D1@microsoft.com...
Bonjour,
j'ai une macro excel récupérée et qui a été construite à l'origine sur
excel
2003 via WINDOWS XP alors que mon environnement est wIndows 200 pro et
excel
2000.
apparemment la macro s'arrette à un moment avec le message suivant
:"erreur
d"éxécution 13: incompatibilité de type" et lorsque j'active le
debogage
,j'obtiend la ligne suivante selectionné en JAUNE:
Range("N" & m) = Range("N" & m) + Range("N" & m + 1)
et le resultat partiel obtenu sur le fichier dans les cellules de la
colonne N est le suivant:
263401,41278501,0299531,19183070,38537339,64 ????
Apparemment la macro n'a pas pu effectuer la somme des montants mais
par
contre a rajouté sur la meme ligne les différents montants les uns à la
suite
des autres!!...comme du texte alors que c'est censé etre des valeurs
"réèls
doubles"....
à l'origine les valeurs sont en format standard et doivent être
convertis
en
format réèl double...
j'ai l'impression qu'il y a un caractère parasite qui empêche d'activer
l'opération addition..
Pouvez vous m'aider à ce sujet???
Je vous laisse la macro en question :
Sub traitement_impayes()
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 String,
materiel As String
Date_jour = Date
Date_jour = Left(Date, 2) & Mid(Date, 4, 2) & Right(Date, 2)
fichier_resultat = Date_jour & "_resultat.txt"
On Error GoTo 1
Kill (fichier_resultat)
1
num_client = "04999"
' mise en forme fichier AVIP
menu_avip.Hide
MsgBox "Merci de choisir le fichier à traiter "
Application.FindFile
' Rows("1:1").Select
' Selection.Delete Shift:=xlUp
Columns("C:E").Select
Selection.Delete Shift:=xlToLeft
Columns("L:M").Select
Selection.Delete Shift:=xlToLeft
Columns("M:M").Select
Selection.Delete Shift:=xlToLeft
Columns("N:N").Select
Selection.Delete Shift:=xlToLeft
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
For j = 1 To nb_lignes
code_montant = Range("O" & j)
montant = CDbl(Range("N" & j))
Select Case code_montant
Case "C"
Range("N" & j) = -1 * montant
Case "D"
Range("N" & j) = montant
Case ""
Range("N" & j) = montant
End Select
Next j
nom_f = ActiveWorkbook.Name
ActiveWorkbook.SaveAs Filename:= _
dir & "en attente envoi" & "OK_" & nom_f, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:úlse, CreateBackup:úlse
nom_OK = ActiveWorkbook.Name
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("A1:N" & nb_lignes).Select
Selection.Sort Key1:=Range("B1"), Order1:=xlAscending,
Header:=xlGuess,
_
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
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"
Cells.Select
Selection.Copy
Windows("macro_gestion_AVIP.xls").Activate
Sheets("macro").Select
Cells.Select
ActiveSheet.Paste
i = 1
For Each macellule In maplage
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"
Bonjour,par contre et c'est peut etre une piste,est ce normal que dans la
declaration on ai :"montant As String" alors que l'on veut en restitution
du
réèl double comme type de données....
En principe, non.
Essaie avec DIm montant as double
"ALF" a écrit dans le message de news:Re,
Ca ne marche pas avec la modif que tu as proposé et j'ai le massage
d'erreur
"probleme dans les valeurs de cellules"
Merci
--
ALFBonjour
Sans trop chercher, essaie simplement de modifier comme ceci :
On error resume next
Range("N" & m).Value = Range("N" & m).Value + Range("N" & m + 1).Value
If err <> 0 Then msgbox "problème dans les valeurs de cellules" : exit
sub
Cordialement
Pascal
"ALF" a écrit dans le message de news:Bonjour,
j'ai une macro excel récupérée et qui a été construite à l'origine sur
excel
2003 via WINDOWS XP alors que mon environnement est wIndows 200 pro et
excel
2000.
apparemment la macro s'arrette à un moment avec le message suivant
:"erreur
d"éxécution 13: incompatibilité de type" et lorsque j'active le
debogage
,j'obtiend la ligne suivante selectionné en JAUNE:
Range("N" & m) = Range("N" & m) + Range("N" & m + 1)
et le resultat partiel obtenu sur le fichier dans les cellules de la
colonne N est le suivant:
263401,41278501,0299531,19183070,38537339,64 ????
Apparemment la macro n'a pas pu effectuer la somme des montants mais
par
contre a rajouté sur la meme ligne les différents montants les uns à la
suite
des autres!!...comme du texte alors que c'est censé etre des valeurs
"réèls
doubles"....
à l'origine les valeurs sont en format standard et doivent être
convertis
en
format réèl double...
j'ai l'impression qu'il y a un caractère parasite qui empêche d'activer
l'opération addition..
Pouvez vous m'aider à ce sujet???
Je vous laisse la macro en question :
Sub traitement_impayes()
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 String,
materiel As String
Date_jour = Date
Date_jour = Left(Date, 2) & Mid(Date, 4, 2) & Right(Date, 2)
fichier_resultat = Date_jour & "_resultat.txt"
On Error GoTo 1
Kill (fichier_resultat)
1
num_client = "04999"
' mise en forme fichier AVIP
menu_avip.Hide
MsgBox "Merci de choisir le fichier à traiter "
Application.FindFile
' Rows("1:1").Select
' Selection.Delete Shift:=xlUp
Columns("C:E").Select
Selection.Delete Shift:=xlToLeft
Columns("L:M").Select
Selection.Delete Shift:=xlToLeft
Columns("M:M").Select
Selection.Delete Shift:=xlToLeft
Columns("N:N").Select
Selection.Delete Shift:=xlToLeft
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
For j = 1 To nb_lignes
code_montant = Range("O" & j)
montant = CDbl(Range("N" & j))
Select Case code_montant
Case "C"
Range("N" & j) = -1 * montant
Case "D"
Range("N" & j) = montant
Case ""
Range("N" & j) = montant
End Select
Next j
nom_f = ActiveWorkbook.Name
ActiveWorkbook.SaveAs Filename:= _
dir & "en attente envoi" & "OK_" & nom_f, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:úlse, CreateBackup:úlse
nom_OK = ActiveWorkbook.Name
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("A1:N" & nb_lignes).Select
Selection.Sort Key1:=Range("B1"), Order1:=xlAscending,
Header:=xlGuess,
_
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
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"
Cells.Select
Selection.Copy
Windows("macro_gestion_AVIP.xls").Activate
Sheets("macro").Select
Cells.Select
ActiveSheet.Paste
i = 1
For Each macellule In maplage
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"
Bonjour,par contre et c'est peut etre une piste,est ce normal que dans la
declaration on ai :"montant As String" alors que l'on veut en restitution
du
réèl double comme type de données....
En principe, non.
Essaie avec DIm montant as double
"ALF" a écrit dans le message de news:Re,
Ca ne marche pas avec la modif que tu as proposé et j'ai le massage
d'erreur
"probleme dans les valeurs de cellules"
Merci
--
ALFBonjour
Sans trop chercher, essaie simplement de modifier comme ceci :
On error resume next
Range("N" & m).Value = Range("N" & m).Value + Range("N" & m + 1).Value
If err <> 0 Then msgbox "problème dans les valeurs de cellules" : exit
sub
Cordialement
Pascal
"ALF" a écrit dans le message de news:Bonjour,
j'ai une macro excel récupérée et qui a été construite à l'origine sur
excel
2003 via WINDOWS XP alors que mon environnement est wIndows 200 pro et
excel
2000.
apparemment la macro s'arrette à un moment avec le message suivant
:"erreur
d"éxécution 13: incompatibilité de type" et lorsque j'active le
debogage
,j'obtiend la ligne suivante selectionné en JAUNE:
Range("N" & m) = Range("N" & m) + Range("N" & m + 1)
et le resultat partiel obtenu sur le fichier dans les cellules de la
colonne N est le suivant:
263401,41278501,0299531,19183070,38537339,64 ????
Apparemment la macro n'a pas pu effectuer la somme des montants mais
par
contre a rajouté sur la meme ligne les différents montants les uns à la
suite
des autres!!...comme du texte alors que c'est censé etre des valeurs
"réèls
doubles"....
à l'origine les valeurs sont en format standard et doivent être
convertis
en
format réèl double...
j'ai l'impression qu'il y a un caractère parasite qui empêche d'activer
l'opération addition..
Pouvez vous m'aider à ce sujet???
Je vous laisse la macro en question :
Sub traitement_impayes()
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 String,
materiel As String
Date_jour = Date
Date_jour = Left(Date, 2) & Mid(Date, 4, 2) & Right(Date, 2)
fichier_resultat = Date_jour & "_resultat.txt"
On Error GoTo 1
Kill (fichier_resultat)
1
num_client = "04999"
' mise en forme fichier AVIP
menu_avip.Hide
MsgBox "Merci de choisir le fichier à traiter "
Application.FindFile
' Rows("1:1").Select
' Selection.Delete Shift:=xlUp
Columns("C:E").Select
Selection.Delete Shift:=xlToLeft
Columns("L:M").Select
Selection.Delete Shift:=xlToLeft
Columns("M:M").Select
Selection.Delete Shift:=xlToLeft
Columns("N:N").Select
Selection.Delete Shift:=xlToLeft
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
For j = 1 To nb_lignes
code_montant = Range("O" & j)
montant = CDbl(Range("N" & j))
Select Case code_montant
Case "C"
Range("N" & j) = -1 * montant
Case "D"
Range("N" & j) = montant
Case ""
Range("N" & j) = montant
End Select
Next j
nom_f = ActiveWorkbook.Name
ActiveWorkbook.SaveAs Filename:= _
dir & "en attente envoi" & "OK_" & nom_f, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:úlse, CreateBackup:úlse
nom_OK = ActiveWorkbook.Name
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("A1:N" & nb_lignes).Select
Selection.Sort Key1:=Range("B1"), Order1:=xlAscending,
Header:=xlGuess,
_
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
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"
Cells.Select
Selection.Copy
Windows("macro_gestion_AVIP.xls").Activate
Sheets("macro").Select
Cells.Select
ActiveSheet.Paste
i = 1
For Each macellule In maplage
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"
Bonjour,
par contre et c'est peut etre une piste,est ce normal que dans la
declaration on ai :"montant As String" alors que l'on veut en restitution
du
réèl double comme type de données....
En principe, non.
Essaie avec DIm montant as double
"ALF" <ALF@discussions.microsoft.com> a écrit dans le message de news:
D0CA2404-0870-4E13-A4D5-E966661F0369@microsoft.com...
Re,
Ca ne marche pas avec la modif que tu as proposé et j'ai le massage
d'erreur
"probleme dans les valeurs de cellules"
Merci
--
ALF
Bonjour
Sans trop chercher, essaie simplement de modifier comme ceci :
On error resume next
Range("N" & m).Value = Range("N" & m).Value + Range("N" & m + 1).Value
If err <> 0 Then msgbox "problème dans les valeurs de cellules" : exit
sub
Cordialement
Pascal
"ALF" <ALF@discussions.microsoft.com> a écrit dans le message de news:
717C624F-ABC8-493F-97CE-0F7B74DD52D1@microsoft.com...
Bonjour,
j'ai une macro excel récupérée et qui a été construite à l'origine sur
excel
2003 via WINDOWS XP alors que mon environnement est wIndows 200 pro et
excel
2000.
apparemment la macro s'arrette à un moment avec le message suivant
:"erreur
d"éxécution 13: incompatibilité de type" et lorsque j'active le
debogage
,j'obtiend la ligne suivante selectionné en JAUNE:
Range("N" & m) = Range("N" & m) + Range("N" & m + 1)
et le resultat partiel obtenu sur le fichier dans les cellules de la
colonne N est le suivant:
263401,41278501,0299531,19183070,38537339,64 ????
Apparemment la macro n'a pas pu effectuer la somme des montants mais
par
contre a rajouté sur la meme ligne les différents montants les uns à la
suite
des autres!!...comme du texte alors que c'est censé etre des valeurs
"réèls
doubles"....
à l'origine les valeurs sont en format standard et doivent être
convertis
en
format réèl double...
j'ai l'impression qu'il y a un caractère parasite qui empêche d'activer
l'opération addition..
Pouvez vous m'aider à ce sujet???
Je vous laisse la macro en question :
Sub traitement_impayes()
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 String,
materiel As String
Date_jour = Date
Date_jour = Left(Date, 2) & Mid(Date, 4, 2) & Right(Date, 2)
fichier_resultat = Date_jour & "_resultat.txt"
On Error GoTo 1
Kill (fichier_resultat)
1
num_client = "04999"
' mise en forme fichier AVIP
menu_avip.Hide
MsgBox "Merci de choisir le fichier à traiter "
Application.FindFile
' Rows("1:1").Select
' Selection.Delete Shift:=xlUp
Columns("C:E").Select
Selection.Delete Shift:=xlToLeft
Columns("L:M").Select
Selection.Delete Shift:=xlToLeft
Columns("M:M").Select
Selection.Delete Shift:=xlToLeft
Columns("N:N").Select
Selection.Delete Shift:=xlToLeft
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
For j = 1 To nb_lignes
code_montant = Range("O" & j)
montant = CDbl(Range("N" & j))
Select Case code_montant
Case "C"
Range("N" & j) = -1 * montant
Case "D"
Range("N" & j) = montant
Case ""
Range("N" & j) = montant
End Select
Next j
nom_f = ActiveWorkbook.Name
ActiveWorkbook.SaveAs Filename:= _
dir & "en attente envoi" & "OK_" & nom_f, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:úlse, CreateBackup:úlse
nom_OK = ActiveWorkbook.Name
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("A1:N" & nb_lignes).Select
Selection.Sort Key1:=Range("B1"), Order1:=xlAscending,
Header:=xlGuess,
_
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
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"
Cells.Select
Selection.Copy
Windows("macro_gestion_AVIP.xls").Activate
Sheets("macro").Select
Cells.Select
ActiveSheet.Paste
i = 1
For Each macellule In maplage
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"
Bonjour,par contre et c'est peut etre une piste,est ce normal que dans la
declaration on ai :"montant As String" alors que l'on veut en restitution
du
réèl double comme type de données....
En principe, non.
Essaie avec DIm montant as double
"ALF" a écrit dans le message de news:Re,
Ca ne marche pas avec la modif que tu as proposé et j'ai le massage
d'erreur
"probleme dans les valeurs de cellules"
Merci
--
ALFBonjour
Sans trop chercher, essaie simplement de modifier comme ceci :
On error resume next
Range("N" & m).Value = Range("N" & m).Value + Range("N" & m + 1).Value
If err <> 0 Then msgbox "problème dans les valeurs de cellules" : exit
sub
Cordialement
Pascal
"ALF" a écrit dans le message de news:Bonjour,
j'ai une macro excel récupérée et qui a été construite à l'origine sur
excel
2003 via WINDOWS XP alors que mon environnement est wIndows 200 pro et
excel
2000.
apparemment la macro s'arrette à un moment avec le message suivant
:"erreur
d"éxécution 13: incompatibilité de type" et lorsque j'active le
debogage
,j'obtiend la ligne suivante selectionné en JAUNE:
Range("N" & m) = Range("N" & m) + Range("N" & m + 1)
et le resultat partiel obtenu sur le fichier dans les cellules de la
colonne N est le suivant:
263401,41278501,0299531,19183070,38537339,64 ????
Apparemment la macro n'a pas pu effectuer la somme des montants mais
par
contre a rajouté sur la meme ligne les différents montants les uns à la
suite
des autres!!...comme du texte alors que c'est censé etre des valeurs
"réèls
doubles"....
à l'origine les valeurs sont en format standard et doivent être
convertis
en
format réèl double...
j'ai l'impression qu'il y a un caractère parasite qui empêche d'activer
l'opération addition..
Pouvez vous m'aider à ce sujet???
Je vous laisse la macro en question :
Sub traitement_impayes()
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 String,
materiel As String
Date_jour = Date
Date_jour = Left(Date, 2) & Mid(Date, 4, 2) & Right(Date, 2)
fichier_resultat = Date_jour & "_resultat.txt"
On Error GoTo 1
Kill (fichier_resultat)
1
num_client = "04999"
' mise en forme fichier AVIP
menu_avip.Hide
MsgBox "Merci de choisir le fichier à traiter "
Application.FindFile
' Rows("1:1").Select
' Selection.Delete Shift:=xlUp
Columns("C:E").Select
Selection.Delete Shift:=xlToLeft
Columns("L:M").Select
Selection.Delete Shift:=xlToLeft
Columns("M:M").Select
Selection.Delete Shift:=xlToLeft
Columns("N:N").Select
Selection.Delete Shift:=xlToLeft
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
For j = 1 To nb_lignes
code_montant = Range("O" & j)
montant = CDbl(Range("N" & j))
Select Case code_montant
Case "C"
Range("N" & j) = -1 * montant
Case "D"
Range("N" & j) = montant
Case ""
Range("N" & j) = montant
End Select
Next j
nom_f = ActiveWorkbook.Name
ActiveWorkbook.SaveAs Filename:= _
dir & "en attente envoi" & "OK_" & nom_f, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:úlse, CreateBackup:úlse
nom_OK = ActiveWorkbook.Name
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("A1:N" & nb_lignes).Select
Selection.Sort Key1:=Range("B1"), Order1:=xlAscending,
Header:=xlGuess,
_
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
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"
Cells.Select
Selection.Copy
Windows("macro_gestion_AVIP.xls").Activate
Sheets("macro").Select
Cells.Select
ActiveSheet.Paste
i = 1
For Each macellule In maplage
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"
Pouvez vous me dire à quoi correspond réèllement le type de donnée STRING
??et pourquoi la macro ne voulait pas ce type de données....
Pouvez vous me dire à quoi correspond réèllement le type de donnée STRING
??et pourquoi la macro ne voulait pas ce type de données....
Pouvez vous me dire à quoi correspond réèllement le type de donnée STRING
??et pourquoi la macro ne voulait pas ce type de données....