Bonjour,
Je ne comprends pas ce que vous voulez dire, les samedis et dimanches sont en caractères gras pour mieux les distinguer, Que manque-t-il? Montrez un exemple de ce que vous attendez.
Pièce jointe 481557
Cdlt
Bonjour,
Je ne comprends pas ce que vous voulez dire, les samedis et dimanches sont en caractères gras pour mieux les distinguer, Que manque-t-il? Montrez un exemple de ce que vous attendez.
Pièce jointe 481557
Cdlt
Bonjour a trouvé le mystère vendredi le écrit en italien donc ça marche
l me rend les samedis et les dimanches il n'y a pas de 01 à l'avant mais je le vois l'insérer à la main
0120190301 FE070000
20190302 R000000
20190303 R000000
Bonjour,
Si vous voulez "01" devant les samedis et les dimanches
Bien sûr remplacez "Vendredi" par "Venerdi"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98 Option Compare Text Sub Copiare() Dim DerLig_F1 As Long, DerLig_F2 As Long, i As Long, j As Long, L As Long Dim ROL As Long, ORD As Long, FE As Long Dim f1 As Worksheet, f2 As Worksheet Dim Matr As String Application.ScreenUpdating = False Set f1 = Sheets("Foglio2") Set f2 = Sheets("Foglio3") f2.Cells.Clear DerLig_F1 = f1.[A10000].End(xlUp).Row f1.Range(Cells(1, "A"), Cells(DerLig_F1, "C")).Copy Destination:=f2.Cells(1, "A") Matr = Cells(1, "A") For i = 2 To DerLig_F1 If f2.Cells(i, "A") = Matr Then f2.Cells(i, "A") = "" Else Matr = Cells(i, "A") End If Next f2.Select 'Formule pour récupérer le jour Range("D1:D" & DerLig_F1).FormulaR1C1 = "=IF(RC[-1]<>"""",DATE(MID(RC[-2],3,4),MID(RC[-2],7,2),RIGHT(RC[-2],2))*1,"""")" Columns("D:D").NumberFormat = "[$-F800]dddd, mmmm dd, yyyy" Columns(2).NumberFormat = "@" For i = DerLig_F1 + 1 To 2 Step -1 If Format(Cells(i - 1, "D"), "dddd") = "vendredi" Then If Cells(i, "B") <> "" Then Rows(i & ":" & i + 1).Insert Shift:=xlDown Cells(i, "D") = Cells(i - 1, "D") + 1 Cells(i, "B") = Format("01" & Year(Cells(i, "D")) & Format(Month(Cells(i, "D")), "00") & Format(Day(Cells(i, "D")), "@"), "@") Cells(i + 1, "D") = (Cells(i, "D") + 1) * 1 Cells(i + 1, "B") = Format("01" & Year(Cells(i + 1, "D")) & Format(Month(Cells(i + 1, "D")), "00") & Format(Day(Cells(i + 1, "D")), "00"), "@") Range(Cells(i, "C"), Cells(i + 1, "C")) = "R000000" With Range(Cells(i, "B"), Cells(i + 1, "C")).Font .Name = "Calibri" .Size = 11 .ColorIndex = 1 End With End If Next i DerLig_F2 = [B10000].End(xlUp).Row For i = DerLig_F2 To 2 Step -1 ROL = 0 ORD = 0 FE = 0 L = i For j = L To 1 Step -1 Select Case Left(Cells(L, "C"), 1) Case Is = "R" ROL = ROL + Right(Cells(L, "C"), 6) * 1 Case Is = "O" ORD = ORD + Right(Cells(L, "C"), 6) * 1 Case Is = "F" FE = FE + Right(Cells(L, "C"), 6) * 1 End Select If Cells(L, "A") <> "" Then Exit For L = L - 1 Next j If i <> DerLig_F2 Then Rows(i + 2 & ":" & i + 4).Insert Shift:=xlDown If i = DerLig_F2 Then Cells(i + 1, "B") = "ROL" Cells(i + 1, "C") = ROL Cells(i + 2, "B") = "ORD" Cells(i + 2, "C") = ORD Cells(i + 3, "B") = "FE" Cells(i + 3, "C") = FE Else Cells(i + 2, "B") = "ROL" Cells(i + 2, "C") = ROL Cells(i + 3, "B") = "ORD" Cells(i + 3, "C") = ORD Cells(i + 4, "B") = "FE" Cells(i + 4, "C") = FE End If i = L - 1 Next i For i = 1 To DerLig_F2 If Cells(i, "A") <> "" Then Matr = Cells(i, "A") Rows(i).Insert Shift:=xlDown Cells(i, "B") = Matr With Cells(i, "B").Font .Name = "Calibri" .Size = 11 .ColorIndex = 3 End With i = i + 1 End If Next Range("A:A,D:D").Delete Shift:=xlToLeft End Sub
Cdlt
Bonjour
et possible d'insérer avant les initiales ROL ORD FE 99AAAMM
(exemple 99201903 ROL 99201903 FE Ecc 99201903 ORD)
et avant les heures H
AVANT
0120190329 O070000
0120190330 R000000
0120190331 R000000
ROL 90000
ORD 1330000
FE 70000
APRES
0120190329 O070000
0120190330 R000000
0120190331 R000000
99201903ROL H90000
99201903ORD 1330000
99201903FE H70000
Bonjour,
Voilà avec la modification demandée
le fichier:
Pièce jointe 485024
le code:
Cdlt
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98 Option Compare Text Sub Copiare() Dim DerLig_F1 As Long, DerLig_F2 As Long, i As Long, j As Long, L As Long Dim ROL As Long, ORD As Long, FE As Long Dim f1 As Worksheet, f2 As Worksheet Dim Matr As String Application.ScreenUpdating = False Set f1 = Sheets("Foglio2") Set f2 = Sheets("Foglio3") f2.Cells.Clear DerLig_F1 = f1.[A10000].End(xlUp).Row f1.Range(Cells(1, "A"), Cells(DerLig_F1, "C")).Copy Destination:=f2.Cells(1, "A") Matr = Cells(1, "A") For i = 2 To DerLig_F1 If f2.Cells(i, "A") = Matr Then f2.Cells(i, "A") = "" Else Matr = Cells(i, "A") End If Next f2.Select 'Formule pour récupérer le jour Range("D1:D" & DerLig_F1).FormulaR1C1 = "=IF(RC[-1]<>"""",DATE(MID(RC[-2],3,4),MID(RC[-2],7,2),RIGHT(RC[-2],2))*1,"""")" Columns("D:D").NumberFormat = "[$-F800]dddd, mmmm dd, yyyy" Columns(2).NumberFormat = "@" For i = DerLig_F1 + 1 To 2 Step -1 If Format(Cells(i - 1, "D"), "dddd") = "vendredi" Then If Cells(i, "B") <> "" Then Rows(i & ":" & i + 1).Insert Shift:=xlDown Cells(i, "D") = Cells(i - 1, "D") + 1 Cells(i, "B") = Format("01" & Year(Cells(i, "D")) & Format(Month(Cells(i, "D")), "00") & Format(Day(Cells(i, "D")), "@"), "@") Cells(i + 1, "D") = (Cells(i, "D") + 1) * 1 Cells(i + 1, "B") = Format("01" & Year(Cells(i + 1, "D")) & Format(Month(Cells(i + 1, "D")), "00") & Format(Day(Cells(i + 1, "D")), "00"), "@") Range(Cells(i, "C"), Cells(i + 1, "C")) = "R000000" With Range(Cells(i, "B"), Cells(i + 1, "C")).Font .Name = "Calibri" .Size = 11 .ColorIndex = 1 End With End If Next i DerLig_F2 = [B10000].End(xlUp).Row For i = DerLig_F2 To 2 Step -1 ROL = 0 ORD = 0 FE = 0 L = i For j = L To 1 Step -1 Select Case Left(Cells(L, "C"), 1) Case Is = "R" ROL = ROL + Right(Cells(L, "C"), 6) * 1 Case Is = "O" ORD = ORD + Right(Cells(L, "C"), 6) * 1 Case Is = "F" FE = FE + Right(Cells(L, "C"), 6) * 1 End Select If Cells(L, "A") <> "" Then Exit For L = L - 1 Next j If i <> DerLig_F2 Then Rows(i + 2 & ":" & i + 4).Insert Shift:=xlDown If i = DerLig_F2 Then Cells(i + 1, "B") = "99" & Mid(Cells(i, "B"), 3, 6) & "ROL" Cells(i + 1, "C") = "H" & ROL Cells(i + 2, "B") = "99" & Mid(Cells(i, "B"), 3, 6) & "ORD" Cells(i + 2, "C") = "H" & ORD Cells(i + 3, "B") = "99" & Mid(Cells(i, "B"), 3, 6) & "FE" Cells(i + 3, "C") = "H" & FE Else Cells(i + 2, "B") = "99" & Mid(Cells(i, "B"), 3, 6) & "ROL" Cells(i + 2, "C") = "H" & ROL Cells(i + 3, "B") = "99" & Mid(Cells(i, "B"), 3, 6) & "ORD" Cells(i + 3, "C") = "H" & ORD Cells(i + 4, "B") = "99" & Mid(Cells(i, "B"), 3, 6) & "FE" Cells(i + 4, "C") = "H" & FE End If i = L - 1 Next i For i = 1 To DerLig_F2 If Cells(i, "A") <> "" Then Matr = Cells(i, "A") Rows(i).Insert Shift:=xlDown Cells(i, "B") = Matr With Cells(i, "B").Font .Name = "Calibri" .Size = 11 .ColorIndex = 3 End With i = i + 1 End If Next Range("A:A,D:D").Delete Shift:=xlToLeft End Sub
Bonsoir Arturo
Dans le bureau où je travaille, ils m'ont demandé de transformer la feuille de fichier Excel 3
en un fichier txt auquel je joins le fichier. Le fichier doit être formaté pour que vous puissiez voir
si d'autres informations sont nécessaires, demandez-moi ce qu'il est possible de faire.
Bonjour,
Je n'ai pas tout repris, simplement rajouté un bout de code à la fin du code existant pour faire ce que vous demandez.
il ne vous reste plus qu'à faire une copie du résultat obtenu et l'enregistrer au format TXT qui vous convient.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 'Formules pour retravailler le résultat obtenu précédemment Range("D1:D" & DerLig_F2).FormulaR1C1 = "=IF(RC2="""",RC1,IF(OR(RIGHT(RC1,2)={""RL"";""FE""}),LEFT(RC1,LEN(RC1)-2),IF(RIGHT(RC1,3)=""ORD"",LEFT(RC1,LEN(RC1)-3),RC1)))" Range("E1:E" & DerLig_F2).FormulaR1C1 = "=IF(OR(LEFT(RC2,2)={""FE"";""RL""}),LEFT(RC2,2),IF(OR(RIGHT(RC1,2)={""RL"";""FE""}),RIGHT(RC1,2),IF(RIGHT(RC1,3)=""ORD"",""ORD"","""")))" Range("F1:F" & DerLig_F2).FormulaR1C1 = "=IF(RC2="""","""",IF(OR(LEFT(RC2,2)={""FE"";""RL""}),RIGHT(RC2,LEN(RC2)-2),RC2))" Columns("D:F").NumberFormat = "@" Range("D1:F" & DerLig_F2).Value = Range("D1:F" & DerLig_F2).Value 'Suppression des 3 premières colonnes Columns("A:C").Delete Shift:=xlToLeft
le fichier:
Pièce jointe 495960
Cdlt
Bonsoir ARTURO, si je copie le fichier xls, il n’est pas formaté car le fichier FOGPRE.TXT devrait être
les lettres FE MAL RL(il peut y avoir d'autres abréviations)
doivent figurer dans la colonne 23, les heures respectives 07000 02000 dans la colonne 33, les autres heures, le cheinizone avec R et O dans la colonne 33; colonne 30
Ce fichier doit être fait tous les mois
Je ne sais pas si j'ai réussi à m'expliquer
Bonjour,
si je copie le fichier xls, il n’est pas formaté car le fichier FOGPRE.TXT devrait être devrait-être QUOI?
les lettres FE MAL RL(il peut y avoir d'autres abréviations) Combien y en a t-il? Quelles sont -elles?
les autres heures, le cheinizone avec R et O dans la colonne 33; colonne 30 pas compris
Pourquoi parlez-vous maintenant de ces colonnes 23, 30, 33?
Si vous changez les règles sans arrêt, redéposez 2 fichiers en exemple (avant et après traitement), avec toutes les conditions possibles (lettres et emplacements réels dans les colonnes).
Cdlt
Bonjour
Le fichier txt de fogpre doit être formaté de cette façon, je vous donne l'exemple du premier numéro de série (00FIA 000001)
La distance ou les espaces entre les dates et les abréviations (FE RL MAL, etc.) est égale à 21 et entre les abréviations et l’horaire (070000) 8
0120190301----------->FE-------->070000
La distance ou les espaces entre les dates et les abréviations commençant par R ou O 32
0120190315----------------------->O070000
0120190316----------------------->R000000
La distance ou les espaces entre les dates(99201903) et les abréviations 21 et entre les abréviations et le total des heures(h009000000) 8
99201903---------------->RL------->H009000000
99201903---------------->ORD----->H133000000
99201903---------------->FE------->H007000000
99201903---------------->MAL----->H007000000
Bonjour,
Avec les modifications
le fichier
Pièce jointe 497060
Le code
Vous pouvez agir sur le nombre d'espaces en modifiant les valeurs dans la zone rouge dans le code ci-dessus
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124 Option Compare Text Sub Copiare() Dim DerLig_F1 As Long, DerLig_F2 As Long, i As Long, j As Long, L As Long Dim ROL As Long, ORD As Long, FE As Long Dim f1 As Worksheet, f2 As Worksheet Dim Matr As String Application.ScreenUpdating = False Set f1 = Sheets("Foglio2") Set f2 = Sheets("Foglio3") f2.Cells.Clear DerLig_F1 = f1.[A10000].End(xlUp).Row f1.Range(Cells(1, "A"), Cells(DerLig_F1, "C")).Copy Destination:=f2.Cells(1, "A") Matr = Cells(1, "A") For i = 2 To DerLig_F1 If f2.Cells(i, "A") = Matr Then f2.Cells(i, "A") = "" Else Matr = Cells(i, "A") End If Next f2.Select 'Formule pour récupérer le jour Range("D1:D" & DerLig_F1).FormulaR1C1 = "=IF(RC[-1]<>"""",DATE(MID(RC[-2],3,4),MID(RC[-2],7,2),RIGHT(RC[-2],2))*1,"""")" Columns("D:D").NumberFormat = "[$-F800]dddd, mmmm dd, yyyy" Columns(2).NumberFormat = "@" For i = DerLig_F1 + 1 To 2 Step -1 If Format(Cells(i - 1, "D"), "dddd") = "vendredi" Then If Cells(i, "B") <> "" Then Rows(i & ":" & i + 1).Insert Shift:=xlDown Cells(i, "D") = Cells(i - 1, "D") + 1 Cells(i, "B") = Format("01" & Year(Cells(i, "D")) & Format(Month(Cells(i, "D")), "00") & Format(Day(Cells(i, "D")), "@"), "@") Cells(i + 1, "D") = (Cells(i, "D") + 1) * 1 Cells(i + 1, "B") = Format("01" & Year(Cells(i + 1, "D")) & Format(Month(Cells(i + 1, "D")), "00") & Format(Day(Cells(i + 1, "D")), "00"), "@") Range(Cells(i, "C"), Cells(i + 1, "C")) = "R000000" With Range(Cells(i, "B"), Cells(i + 1, "C")).Font .Name = "Calibri" .Size = 11 .ColorIndex = 1 End With End If Next i DerLig_F2 = [B10000].End(xlUp).Row For i = DerLig_F2 To 2 Step -1 ROL = 0 ORD = 0 MAL = 0 FE = 0 L = i For j = L To 1 Step -1 Select Case Left(Cells(L, "C"), 1) Case Is = "R" ROL = ROL + Right(Cells(L, "C"), 6) * 1 Case Is = "O" ORD = ORD + Right(Cells(L, "C"), 6) * 1 Case Is = "M" MAL = MAL + Right(Cells(L, "C"), 6) * 1 Case Is = "F" FE = FE + Right(Cells(L, "C"), 6) * 1 End Select If Cells(L, "A") <> "" Then Exit For L = L - 1 Next j If i <> DerLig_F2 Then Rows(i + 2 & ":" & i + 5).Insert Shift:=xlDown If i = DerLig_F2 Then Cells(i + 1, "B") = "99" & Mid(Cells(i, "B"), 3, 6) & "ROL" Cells(i + 1, "C") = "H" & ROL Cells(i + 2, "B") = "99" & Mid(Cells(i, "B"), 3, 6) & "ORD" Cells(i + 2, "C") = "H" & ORD Cells(i + 3, "B") = "99" & Mid(Cells(i, "B"), 3, 6) & "MAL" Cells(i + 3, "C") = "H" & MAL Cells(i + 4, "B") = "99" & Mid(Cells(i, "B"), 3, 6) & "FE" Cells(i + 4, "C") = "H" & FE Else Cells(i + 2, "B") = "99" & Mid(Cells(i, "B"), 3, 6) & "ROL" Cells(i + 2, "C") = "H" & ROL Cells(i + 3, "B") = "99" & Mid(Cells(i, "B"), 3, 6) & "ORD" Cells(i + 3, "C") = "H" & ORD Cells(i + 4, "B") = "99" & Mid(Cells(i, "B"), 3, 6) & "MAL" Cells(i + 4, "C") = "H" & MAL Cells(i + 5, "B") = "99" & Mid(Cells(i, "B"), 3, 6) & "FE" Cells(i + 5, "C") = "H" & FE End If i = L - 1 Next i DerLig_F2 = [B10000].End(xlUp).Row For i = 1 To DerLig_F2 If Cells(i, "A") <> "" Then Matr = Cells(i, "A") Rows(i).Insert Shift:=xlDown Cells(i, "B") = Matr With Cells(i, "B").Font .Name = "Calibri" .Size = 11 .ColorIndex = 3 End With i = i + 1 End If Next Range("A:A,D:D").Delete Shift:=xlToLeft 'nombre d'espaces devant l'abréviation NbAv = 21 'Nombre d'espaces derrière l'abréviation NbAp = 8 'Nombre d'espaces entre les dates et les abréviations commençant par R ou O Nbda = 32 'Formules pour retravailler le résultat obtenu précédemment DerLig_F2 = [B10000].End(xlUp).Row Range("D1:D" & DerLig_F2).FormulaR1C1 = "=IF(RC2="""",RC1,IF(OR(RIGHT(RC1,2)={""RL"";""FE""}),LEFT(RC1,LEN(RC1)-2),IF(OR(RIGHT(RC1,3)={""ORD"";""MAL"";""ROL""}),LEFT(RC1,LEN(RC1)-3),RC1)))" Range("E1:E" & DerLig_F2).FormulaR1C1 = "=IF(OR(LEFT(RC2,2)={""FE"";""RL""}),REPT("" ""," & NbAv & "-LEN(RC[-1])-1)&LEFT(RC2,2)&REPT("" ""," & NbAp - 2 & ")," & Chr(10) & "IF(AND(LEFT(RC[-1],2)=""99"",OR(RIGHT(RC1,2)={""RL"";""FE""})),REPT("" ""," & NbAv & "-LEN(RC[-1])-1)&RIGHT(RC1,2)&REPT("" ""," & NbAp - 3 & ")," & Chr(10) & "IF(OR(RIGHT(RC1,3)={""ORD"";""MAL"";""ROL""}),REPT("" ""," & NbAv & "-LEN(RC[-1])-1)&RIGHT(RC1,3)&REPT("" "",5),REPT("" ""," & Nbda & "-LEN(RC[-1])))))" Range("F1:F" & DerLig_F2).FormulaR1C1 = "=IF(RC2="""","""",IF(OR(LEFT(RC2,2)={""FE"";""RL""}),RIGHT(RC2,LEN(RC2)-2),RC2))" Columns("D:F").NumberFormat = "@" Range("D1:F" & DerLig_F2).Value = Range("D1:F" & DerLig_F2).Value 'Suppression des 3 premières colonnes Columns("A:C").Delete Shift:=xlToLeft End Sub
Cdlt
Bonsoir Artur
J'ai essayé mais je n'arrive pas à obtenir tout le formatage. Les seuls que j'ai réussi à obtenir sont ceux où il y a la date (0120190301 et les initiales FE ou RL
dans le fichier txt, les heures commençant par O ou R passent à la colonne 35(au lieu de 32)
0120190315 O070000
0120190316 R070000
les abréviations doivent commencer à la colonne 21 et les heures à la colonne 30
99201903 ROL H6500000
99201903 ORD H1260000
Bonjour,
dans le fichier txt, les heures commençant par O ou R passent à la colonne 35(au lieu de 32)
0120190315 O070000
0120190316 R070000
Pourtant je mets les bonnes valeurs, c'est probablement lors du passage en txt qu'il doit y avoir un décalage. Si au lieu d'avoir 32 vous obtenez 35, eh bien à la ligne " Nbda = 32", remplacez la valeur 32 par 29.
Pour le reste
les abréviations doivent commencer à la colonne 21 et les heures à la colonne 30
99201903 ROL H6500000
99201903 ORD H1260000 Si le décalage n'est pas bon, appliquez le même principe sur les valeurs dans le code, à cet emplacement.
Si ça ne marche pas, donnez-moi les valeurs que vous obtenez.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 'nombre d'espaces devant l'abréviation NbAv = 21 'Nombre d'espaces derrière l'abréviation NbAp = 8 'Nombre d'espaces entre les dates et les abréviations commençant par R ou O Nbda = 32
Cdlt
Bonjour Arturo
a joint le fichier txt que je reçois en sauvegardant la feuille xls au format text et je joins le fichier txt FOGPRE que je voudrais obtenir, car vous pouvez voir que les formats sont différents
Je ne comprends pas où est le problème
Bonjour,
Comment voulez-vous que je vous aide, les 2 fichiers textes comportent des données différentes, et je ne peux pas comparer avec le fichier excel d'origine.
Envoyez-moi 3 fichiers qui traitent la même période
1)-le fichier Excel avant transformation. le fichier doit être suffisamment complet et doit contenir les références ROL, ORD, MAL RL et FE (si cela n'existe pas, fabriquez en un avec tous les cas de figures possibles)
2)-le fichier texte que vous obtenez après transformation
3)-le fichier texte que vous souhaiteriez obtenir
Cdlt
Bonsoir
J'attache le fichier excel contenant 3 feuilles:
feuille LAV où se trouvent les données d'origine
feuille3 où sont les données traitées manuellement (colonne concaténée A et B Example IFABER 55 = 00IFABER 00000055, Colonne C Je transforme les dates 03/06/2019 = 0120190601
puis concaténer les colonnes E F Example O 8 =O080000; ST 1 =ST010000;MA7 8 =MA7080000
feuille txt où des données ont été créées avec la macro,
puis j'attache le fichier txt que je devrais obtenir
Bonjour,
Décidément il y a quelque chose qui ne tourne pas rond dans cette affaire.
Je passe mon temps à reprendre ce que j'ai fait pour coller au résultat que vous envoyez au format texte.
il y a des nouveautés inexpliquées, exemples:
-A chaque changement de "AZ" , vous créez en colonne C de la "feuille 3" la valeur "FES080000", qui disparaît du fichier texte(on ne sait pas pourquoi), j'ai donc supprimé cette valeur.
-Dans les demandes précédentes, il était demandé de faire le total des valeurs marquées "Rxxxxxx" et d'afficher ce total sous la forme "ROLxxxxxx", or maintenant je constate que ces "Rxxxxx" sont ignorés et que seuls les valeurs marquées "RLxxxxx" sont comptabilisées. Que faut-il comprendre?
-Exception à la constatation précédente: Dans le fichier texte, pour le "AZ 55", il n'y a qu'un seul RL à 80000, avec un sous-total de 160000(voir réclamation suivante concernant les sous-totaux), alors que dans la "feuille 3" il y a la présence d'un "R080000", donc j'en conclus que cette valeur a été comptabilisée, mais pas retranscrite dans le fichier texte, alors que dans les autres cas les "R080000" ne sont pas comptés (allez comprendre).
-Pourquoi les sous-totaux affichent des valeurs 100 fois plus élevées? Chez moi: 80000*20 = 1600000 et pas 160000000
-Dans le fichier texte, à "AZ 134", il apparaît des "012019608", "012019609" qui n'existent pas dans la feuille3, d'ou sortent ces valeurs?
Enfin, plus j'essaie de comprendre et moins je comprends. Devant un tel manque de rigueur je ne peux pas continuer dans ces conditions, désolé.
Je vous livre quand même le fichier avec les dernières modifications, mais par manque de précisions et de clarté je suis obligé de m'arrêter là.
Pièce jointe 499095
Cdlt
Bonjour Arturo J'explique que j'étais inexact
fichier xlsm (dans cet exemple et le mois de juin) il y a 3 feuilles
ORIGINALE
où sont les données que je reçois
LAV
Les donnes que je travaille manuellement
colonnes concaténées A et B pour qu’elles deviennent 00IFABER 00000055
colonnes concaténées E et F pour ,la colonne E sont les abréviations et la colonne F sont les heures O 8 = O080000 ;ST 1 = ST010000; RL 8 = RL080000
la date doit devenir année mois et jour précédés de 0 et 1 0120190603
txt
dans la fiche txt se trouvent les données prêtes à être transformées en fichier txt qui doit s’appeler FOGPRE
00IFABER 00000055 =société + numéro de série dépendant
0120190601 = date
R000000 = les jours de repos coïncident avec les samedis et les dimanches
O080000 = heures de travail
ST010000 ; RL080000 =heures d'absence
à la fin il y a le résumé des heures précédé par da 99201906RL = 99 + AAAAMM + initiales absentes
H008000000
H011000000
H160000000
les heures doivent être précédées de H et 2 zéros si les heures ne dépassent pas le dixième, un zéro à partir du dixième et sans zéro à partir de cent
à partir de cette feuille, je dois générer le fichier txt FOGPRE avec le formatage que je vous ai dit dans le post précédent
Bonjour,
Je n'ai repris que la partie concernant la conversion en fichier texte.
Tout d'abord j'ai fait une copie de la feuille "Txt" que j'ai renommée "Copie txt", ceci afin de pouvoir recommencer autant de fois que nécessaire(il suffit de recopier le contenu de "Copie txt" dans "Txt").
En cliquant sur le bouton "Copiare ---> TXT", cela reconditionne le contenu de la feuille "Txt" et l'enregistre la sous "FOGPRE.txt",
remplacez "votre chemin" par l'emplacement où doit aller le fichier FOGPRE.txt".
le code (dans modulo4)
le fichier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Option Compare Text Sub Copiare_Txt() Dim DerLig_F1 As Long Dim f1 As Worksheet Application.ScreenUpdating = False Application.DisplayAlerts = False Set f1 = Sheets("Txt") 'nombre d'espaces devant l'abréviation NbAv = 22 'Nombre d'espaces derrière l'abréviation NbAp = 8 'Nombre d'espaces entre les dates et les abréviations commençant par R ou O Nbda = 32 'Formules pour retravailler le résultat obtenu précédemment DerLig_F1 = f1.[B10000].End(xlUp).Row f1.Range("D1:D" & DerLig_F1).FormulaR1C1 = "=IF(RC2="""",RC1,IF(OR(RIGHT(RC1,2)={""RL"";""FE""}),LEFT(RC1,LEN(RC1)-2),IF(OR(RIGHT(RC1,3)={""ORD"";""MAL"";""ROL""}),LEFT(RC1,LEN(RC1)-3),RC1)))" f1.Range("E1:E" & DerLig_F1).FormulaR1C1 = "=IF(OR(LEFT(RC2,2)={""FE"";""RL""}),REPT("" ""," & NbAv & "-LEN(RC[-1])-1)&LEFT(RC2,2)&REPT("" ""," & NbAp - 2 & ")," & Chr(10) & "IF(AND(LEFT(RC[-1],2)=""99"",OR(RIGHT(RC1,2)={""RL"";""FE""})),REPT("" ""," & NbAv & "-LEN(RC[-1])-1)&RIGHT(RC1,2)&REPT("" ""," & NbAp - 3 & ")," & Chr(10) & "IF(OR(RIGHT(RC1,3)={""ORD"";""MAL"";""ROL""}),REPT("" ""," & NbAv & "-LEN(RC[-1])-1)&RIGHT(RC1,3)&REPT("" "",5),REPT("" ""," & Nbda & "-LEN(RC[-1])))))" f1.Range("F1:F" & DerLig_F1).FormulaR1C1 = "=IF(RC2="""","""",IF(OR(LEFT(RC2,2)={""FE"";""RL""}),RIGHT(RC2,LEN(RC2)-2),RC2))" f1.Columns("D:F").NumberFormat = "@" f1.Range("G1:G" & DerLig_F1).FormulaR1C1 = "=RC[-3]&RC[-2]&RC[-1]" f1.Range("D1:G" & DerLig_F1).Value = Range("D1:G" & DerLig_F1).Value 'Suppression des 6 premières colonnes f1.Columns("A:F").Delete Shift:=xlToLeft Chemin = "C:\votre chemin\" NomFichier = "FOGPRE" ActiveSheet.Copy ActiveWorkbook.SaveAs Filename:=Chemin & NomFichier & ".txt", FileFormat:=xlText, CreateBackup:=False End Sub
Pièce jointe 500908
Cdlt
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager