Macro "rapatrie" mauvais format
Bonjour le forum,
J'ai un petit souci. J'ai une macro qui va chercher des donner dans différents classeurs et les range dans un classeur "Relance". En colonnes I et J, je veux que les données rapatriées soient en format comptabilité sans symbole. Mais dès que j'exécute la macro, les colonnes sont formatées en monétaire avec un symbole F. Dans la macro, ces données sont définies comme Currency.
Est-ce que je dois ajouter une ligne pour spécifier le format voulu ? Et si oui, comment faire ?
Aurélien.
Bonjour
Mets ton code en ligne ce sera plus facile de comprendre ce qui est à faire
Amicalement
Bonjour Dan,
Ci-dessous mon code, et en PJ le tableau où sont rapatriées les données avec les colonnes I et J qui sont formatées en monétaire avec symbole F au lieu de comptabilité sans symbole.
Sub a()
Dim Référence As String, Fichier_traité As String, Feuille_traitée As String, DerLigFeuille_traitée As Integer, DerLigA_Relance As Integer
Dim i As Integer, j As Integer, k As Integer, n As Integer, m As Integer, Date_limite As Date
Dim a As String, b As Date, c As String, d As String, e As String, f As String, g As Currency, h As Currency
Application.ScreenUpdating = False
Call Effacer
Date_limite = Sheets("Données").Range("C2") 'Date = aujourd'hui + 2 mois
For n = 1 To 2 ' car 2 chemins possibles
If n = 1 Then
m = Sheets("Données").Range("A" & Rows.Count).End(xlUp).Row
Else
m = Sheets("Données").Range("B" & Rows.Count).End(xlUp).Row
End If
For i = 3 To m 'Nombre de fichiers listés en A et B
Référence = Sheets("Données").Range("A2")
If n = 1 Then
Fichier_traité = Sheets("Données").Range("A" & i).Value
Workbooks.Open Filename:="C:\Documents and Settings\leblanca.POPULATION3\Bureau\Test Relance\V3\" & Référence & Fichier_traité
Else
Fichier_traité = Sheets("Données").Range("B" & i).Value
Workbooks.Open Filename:="C:\Documents and Settings\leblanca.POPULATION3\Bureau\Test Relance\V3\Sous-dossier\" & Référence & Fichier_traité
End If
For j = 1 To Sheets.Count 'Nombre de feuilles dans le fichier
Sheets(j).Activate
Feuille_traitée = Sheets(j).Name
DerLigFeuille_traitée = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
For k = 14 To DerLigFeuille_traitée 'Nombre de lignes à traiter
Range("A" & k).Select
If ActiveSheet.Range("C1").Value <> Feuille_traitée Then 'Indique la condition des feuilles à ne pas traiter
Exit For
End If
If ActiveCell.Offset(0, 1) <> "" And ActiveCell.Offset(0, 1) < Date_limite And ActiveCell.Offset(0, 9) >= 0 And ActiveCell.Offset(0, 9) <> ActiveCell.Offset(0, 8) Then 'Indique les conditions de la recherche
a = ActiveCell.Offset(0, 0) 'No de commande (colonne A)
b = ActiveCell.Offset(0, 1) 'Date (colonne B)
c = ActiveCell.Offset(0, 2) 'Fournisseur (colonne C)
d = ActiveCell.Offset(0, 3) 'Désignation (colonne D)
e = ActiveCell.Offset(0, 4) 'Désignation (colonne E)
f = ActiveCell.Offset(0, 5) 'Désignation (colonne F)
g = ActiveCell.Offset(0, 8) 'Engagé (colonne I)
h = ActiveCell.Offset(0, 9) 'Liquidé (colonne J)
Windows("Relances.xls").Activate
DerLigA_Relance = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
Range("A" & DerLigA_Relance + 1) = Fichier_traité
Range("B" & DerLigA_Relance + 1) = Feuille_traitée
Range("C" & DerLigA_Relance + 1) = a 'No de commande
Range("D" & DerLigA_Relance + 1) = b 'Date
Range("E" & DerLigA_Relance + 1) = c 'Fournisseur
Range("F" & DerLigA_Relance + 1) = d 'Désignation
Range("G" & DerLigA_Relance + 1) = e 'Désignation
Range("H" & DerLigA_Relance + 1) = f 'Désignation
Range("I" & DerLigA_Relance + 1) = g 'Engagé
Range("J" & DerLigA_Relance + 1) = h 'Liquidé
Windows(Référence & Fichier_traité & ".xls").Activate
End If
Next 'k
Next 'j
ActiveWorkbook.Close SaveChanges:=False
Next 'i
Next 'n
ActiveWindow.SmallScroll Down:=-10000
Range("A1").Select
End SubMerci de ton aide.
Aurélien.
Re,
Essaie en rajoutant ces deux lignes
Range("I" & DerLigA_Relance + 1).NumberFormat = "#,##0.00"
Range("J" & DerLigA_Relance + 1).NumberFormat = "#,##0.00"Maintenant en voyant le code tu aurais pu éviter d'utiliser les variables a, b, c, etc... un code du genre :
If ActiveCell.Offset(0, 1) <> "" And _
ActiveCell.Offset(0, 1) < Date_limite And _
ActiveCell.Offset(0, 9) >= 0 And _
ActiveCell.Offset(0, 9) <> ActiveCell.Offset(0, 8) Then
With Workbook("Relances.xls")
DerLigA_Relance = Sheets("Relances").Range("A" & Rows.Count).End(xlUp).Row
.Range("A" & DerLigA_Relance + 1) = Fichier_traité
.Range("B" & DerLigA_Relance + 1) = Feuille_traitée
.Range("C" & DerLigA_Relance + 1) = ActiveCell.Offset(0, 0) 'No de commande
.Range("D" & DerLigA_Relance + 1) = ActiveCell.Offset(0, 1) 'Date
.Range("E" & DerLigA_Relance + 1) = ActiveCell.Offset(0, 2) 'Fournisseur
.....
End withA voir avec ton application
Amicalement
Merci beaucoup Dan, ça fonctionne parfaitement pour le format. Moins pour le 2ème code, mais j'ai fait ça en vitesse. Je regratterai ça de plus près prochainement. Pour l'instant je fais avec celui que j'ai qui fonctionne bien.
Aurélien.