for each fic_file in collec_file
If Right(fic_file.Name, 4) = ".dat"
for each fic_file in collec_file
If Right(fic_file.Name, 4) = ".dat"
for each fic_file in collec_file
If Right(fic_file.Name, 4) = ".dat"
Bonjour !
Juste par curiosité :
- comment se fait la conversion d'une majuscule accentuée, en minuscule ?
Avec d'autres langages, j'ai des comportement curieux, variables selon le
code-page utilisé (c-à-dire la même routine retourne des résultats pouvant
être différents, sur des machines différentes)
- comment se fait la conversion, si l'extension contient des caractères
unicode ?
Retrouver les minuscules unicode, c'est... d'autres méthodes.
@+
MCI
Bonjour !
Juste par curiosité :
- comment se fait la conversion d'une majuscule accentuée, en minuscule ?
Avec d'autres langages, j'ai des comportement curieux, variables selon le
code-page utilisé (c-à-dire la même routine retourne des résultats pouvant
être différents, sur des machines différentes)
- comment se fait la conversion, si l'extension contient des caractères
unicode ?
Retrouver les minuscules unicode, c'est... d'autres méthodes.
@+
MCI
Bonjour !
Juste par curiosité :
- comment se fait la conversion d'une majuscule accentuée, en minuscule ?
Avec d'autres langages, j'ai des comportement curieux, variables selon le
code-page utilisé (c-à-dire la même routine retourne des résultats pouvant
être différents, sur des machines différentes)
- comment se fait la conversion, si l'extension contient des caractères
unicode ?
Retrouver les minuscules unicode, c'est... d'autres méthodes.
@+
MCI
Bonjour !
Juste par curiosité :
- comment se fait la conversion d'une majuscule accentuée, en
minuscule ? Avec d'autres langages, j'ai des comportement curieux,
variables selon le code-page utilisé (c-à-dire la même routine
retourne des résultats pouvant être différents, sur des machines
différentes)
- comment se fait la conversion, si l'extension
contient des caractères unicode ? Retrouver les minuscules unicode,
c'est... d'autres méthodes.
Bonjour !
Juste par curiosité :
- comment se fait la conversion d'une majuscule accentuée, en
minuscule ? Avec d'autres langages, j'ai des comportement curieux,
variables selon le code-page utilisé (c-à-dire la même routine
retourne des résultats pouvant être différents, sur des machines
différentes)
- comment se fait la conversion, si l'extension
contient des caractères unicode ? Retrouver les minuscules unicode,
c'est... d'autres méthodes.
Bonjour !
Juste par curiosité :
- comment se fait la conversion d'une majuscule accentuée, en
minuscule ? Avec d'autres langages, j'ai des comportement curieux,
variables selon le code-page utilisé (c-à-dire la même routine
retourne des résultats pouvant être différents, sur des machines
différentes)
- comment se fait la conversion, si l'extension
contient des caractères unicode ? Retrouver les minuscules unicode,
c'est... d'autres méthodes.
Bonjour !for each fic_file in collec_file
If Right(fic_file.Name, 4) = ".dat"
Là, j'étais sûr de voir cette réponse ! Je ne l'avais pas suggéré,
pour ne pas avoir l'air condescendant ;-)
Sinon, AAxx.dAt ne sera pas pris en compte...
Inutile de réponse, un LCASE peut régler le problème. C'est juste
pour le (bad) fun.
@+
MCI
Bonjour !
for each fic_file in collec_file
If Right(fic_file.Name, 4) = ".dat"
Là, j'étais sûr de voir cette réponse ! Je ne l'avais pas suggéré,
pour ne pas avoir l'air condescendant ;-)
Sinon, AAxx.dAt ne sera pas pris en compte...
Inutile de réponse, un LCASE peut régler le problème. C'est juste
pour le (bad) fun.
@+
MCI
Bonjour !for each fic_file in collec_file
If Right(fic_file.Name, 4) = ".dat"
Là, j'étais sûr de voir cette réponse ! Je ne l'avais pas suggéré,
pour ne pas avoir l'air condescendant ;-)
Sinon, AAxx.dAt ne sera pas pris en compte...
Inutile de réponse, un LCASE peut régler le problème. C'est juste
pour le (bad) fun.
@+
MCI
cela deroute (dégoute ?) les personnes qui posent une question
cela deroute (dégoute ?) les personnes qui posent une question
cela deroute (dégoute ?) les personnes qui posent une question
---DGI972--- wrote:Le 22/02/2006, Georges a supposé :Bonjour,
Si vous faites
v_type=inputBox("Donnez le type de fichier à traiter (AA, BB ou CC)
....
for each fic_file in collec_file
If Right(fic_file.Name, 3) = "dat" and left(fic_file.Name,
2)=v_typeThen Do
...
Cordialement
Georges
"---DGI972---" <gilles.dermigny@*NO SPAM* laposte.net> a écrit dans
le message de news:---DGI972--- wrote:Bonjour messieurs,
Il me manque une routine en vbs:
C:TOTOTATAAA
C:TOTOTATABB
C:TOTOTATACC
Dans le sous répertoire AA
j'ai des fichiers AAxx.001,AAxx.002,AAxx.003 et AAxx.dat
Dans le sous répertoire BB
j'ai des fichiers BBxx.001,BBxx.002,BBxx.003 et BBxx.dat
etc..
je voudrais lire uniquement les *.dat dans tous les sous
répertoire de TOTO du genre:
Set fso = CreateObject("Scripting.fileSystemObject")
Set fsofolder = fso.GetFolder("c:TOTO")
Set collec_file = fsofolder.files
for each fic_file in collec_file
DO
lire chaque ligne de chaque fichier dat
end
merci d'avance pour un début de code trouvé sous le coude.
for each fic_file in collec_file
If Right(fic_file.Name, 3) = "dat" Then
Do
Ou alors executer dans un shell la commande dir o:n /b /s
C:TOTO*.dat > fichier.lst
Puis lire ce fichier qui contient la liste de tous les fichiers
.dat des sous repertoires ligne à ligne
Super, merci
Je peux vous demander une petite alternative ?
Si je pose une question avant du genre quel type de fichier voulez
vous traiter: les AA BB ou CC ?
commment traiter que les AAxx.dat ?
Merci
Super je rajoute cela à ma bibliothèque personnelle
Voici mon bout de code avec les routines demandées, mais je bute sur
une erreur Instruction attendue (voir à la fin).
Le but est d'extraire des zones dans des fichiers dat
C'est fichier ce trouve dans le répertoire C:DATAPACKAGE
et il y a 4 types de fichier dat à traiter indépendement:
TCH_AJxxx.dat
TCH_DIxxx.dat
TIP_DOxxx.dat
TIP_RIxxx.dat
Je pose la question quel traitement ?
Si c'est 1 c'est le ou les fichiers TCH_AJxxx.dat qu'il faut traiter
Je prépare les colonnes et mon fichier cvs
Je filtre les fichier avec l'extension dat et le f-type=TCH_AJ
J'extrait des zones selon l'identifiant du début de chaque lignes que
je recopie dans mon cvs.
Voici le code:
Option Explicit
Const ForReading = 1, ForWriting = 2
Dim fso, fsofolder, TRIB, collec_file, fic_file, f_type, vbCancel,
objShell, fileIn, fileOut, COLO, strIn, Sline,CE
Set fso = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")
TRIB=InputBox("Voulez vous lancer le traitement des ETATs ?"& vbCrLf
&"Tapez le Nom de l'état pour lequel vous voulez générer
L'impression." & vbCrLf & vbCrLf & "Taper :" & vbCrLf & vbCrLf & "1
pour les AJ " & vbCrLf & "2 pour les DI " & vbCrLf & "3 pour DO " &
vbCrLf & "4 pour les RI"& vbCrLf,"EASY2XLS","1")
If vbCancel = 2 Then Wscript.quit
If TRIB= "" Then Wscript.quit
If TRIB <> 1 or 2 or 3 or 4 then Wscript.quit 'oh c'est pas jolie
If TRIB=1 Then f_type = "TCH_AJ" 'la aussi c'est pas jolie
If TRIB=2 Then f_type = "TCH_DI"
If TRIB=3 Then f_type = "TIP_DO"
If TRIB=4 Then f_type = "TIP_RI"
COLO="Code Enregistrement;Type de traitement;Nom du lot;Sequence
Lot;Numéro Image" 'Entête du fichier csv Non des colonnes excel
Set fileOut = fso.OpenTextFile("C:RECAP.CSV", ForWriting , True)
fileout.WriteLine COL 'Fabrication des colonnes
Set fsofolder = fso.GetFolder("C:DATAPACKAGE")
Set collec_file = fsofolder.Files
for each fic_file in collec_file
If Right(fic_file.Name, 3) = "dat" and left(fic_file.Name, 5) >> f_type Then
Do
Set fileIn = fso.OpenTextFile(fic_file, True)
Do While Not fileIn.AtEndOfStream
SLine = fileIn.ReadLine
CE=Mid(SLine,1,2) 'CE = Code enregistrement
If CE= "50" Then
strIn=Mid(SLine,1,2)'CE = 50 Cheque Code enregistrement
strIn=strIn & ";" & Mid(SLine,3,2)
strIn=strIn & ";" & Mid(SLine,5,2)
strIn=strIn & ";" & Mid(SLine,7,11)
fileOut.WriteLine strIn
ElseIf CE="60" Then
strIn=Mid(SLine,1,2)
strIn=strIn & ";" & Mid(SLine,3,2)
strIn=strIn & ";" & Mid(SLine,10,2)
strIn=strIn & ";" & Mid(SLine,20,11)
fileOut.WriteLine strIn
ElseIf CE="65" Then
strIn=Mid(SLine,1,2)'CE = 50 Cheque Code enregistrement
strIn=strIn & ";" & Mid(SLine,8,2)
strIn=strIn & ";" & Mid(SLine,8,2)
strIn=strIn & ";" & Mid(SLine,88,11)
fileOut.WriteLine strIn
Else
fileOut.Close
End If
Loop
End If ' <<<ERREUR Instruction attendue
Next
Set fileIn = Nothing
Set fileOut = Nothing
Si quelqu'un peut me donner un coup de pouce SVP ?
J'ai essayé d'en refaire un bout ;-)
Non testé ;-(
Option Explicit
Const ForReading = 1, ForWriting = 2
Dim fso, fsofolder, collec_file, fic_file, f_type
Dim objShell, fileIn, fileOut, strIn, Sline, CE
Function Choix_etat()
Choix_etat = InputBox("Voulez vous lancer le traitement des ETATs ?" &
vbCrLf & "Tapez le N° de l'état pour lequel vous voulez générer
l'impression." & vbCrLf & vbCrLf & "Taper :" & vbCrLf & vbCrLf & "1> pour
les AJ " & vbCrLf & "2 pour les DI " & vbCrLf & "3 pour DO " & vbCrLf & "4
pour les RI" & vbCrLf, "EASY2XLS", "1")
Choix_etat = Trim(Choix_etat)
End Function
Select Case Choix_etat()
Case "1" f_type = "TCH_AJ"
Case "2" f_type = "TCH_DI"
Case "3" f_type = "TIP_DO"
Case "4" f_type = "TIP_RI"
Case Else
WScript.Echo "Traitement annulé !" ' Prévenir l'utilisateur de
l'annulation du script
WScript.Quit
End Select
Set fso = CreateObject("Scripting.FileSystemObject")
Set fileOut = fso.OpenTextFile("C:RECAP.CSV", ForWriting, True)
fileOut.WriteLine "Code enregistrement;Type de traitement;Nom du lot;Sequence
lot;Numéro Image"
Set fsofolder = fso.GetFolder("C:DATAPACKAGE")
Set collec_file = fsofolder.Files
For Each fic_file In collec_file
If Right(fic_file.Name, 3) = "dat" And Left(fic_file.Name, 6) = f_type
Then
Set fileIn = fso.OpenTextFile(fic_file, ForReading)
Do While Not fileIn.AtEndOfStream
SLine = Trim(fileIn.ReadLine)
CE= Left(SLine, 2) 'CE = Code enregistrement
If CE = "50" Then
strIn = CE
strIn = strIn & ";" & Mid(SLine, 3, 2)
strIn = strIn & ";" & Mid(SLine, 5, 2)
strIn = strIn & ";" & Mid(SLine, 7, 11)
ElseIf CE = "60" Then
strIn = CE
strIn = strIn & ";" & Mid(SLine, 3, 2)
strIn = strIn & ";" & Mid(SLine, 10, 2)
strIn = strIn & ";" & Mid(SLine, 20, 11)
ElseIf CE = "65" Then
strIn = CE
strIn = strIn & ";" & Mid(SLine, 8, 2)
strIn = strIn & ";" & Mid(SLine, 8, 2) ' ? étrange ?
strIn = strIn & ";" & Mid(SLine, 88, 11)
End If
Select Case CE
Case "50", "60", "65" fileOut.WriteLine strIn
End Select
Loop
End If
Next
fileIn.Close
fileOut.Close
Set fileIn = Nothing
Set fileOut = Nothing
---DGI972--- wrote:
Le 22/02/2006, Georges a supposé :
Bonjour,
Si vous faites
v_type=inputBox("Donnez le type de fichier à traiter (AA, BB ou CC)
....
for each fic_file in collec_file
If Right(fic_file.Name, 3) = "dat" and left(fic_file.Name,
2)=v_typeThen Do
...
Cordialement
Georges
"---DGI972---" <gilles.dermigny@*NO SPAM* laposte.net> a écrit dans
le message de news: mn.b16b7d62b73d8139.33384@NOSPAMlaposte.net...
---DGI972--- wrote:
Bonjour messieurs,
Il me manque une routine en vbs:
C:TOTOTATAAA
C:TOTOTATABB
C:TOTOTATACC
Dans le sous répertoire AA
j'ai des fichiers AAxx.001,AAxx.002,AAxx.003 et AAxx.dat
Dans le sous répertoire BB
j'ai des fichiers BBxx.001,BBxx.002,BBxx.003 et BBxx.dat
etc..
je voudrais lire uniquement les *.dat dans tous les sous
répertoire de TOTO du genre:
Set fso = CreateObject("Scripting.fileSystemObject")
Set fsofolder = fso.GetFolder("c:TOTO")
Set collec_file = fsofolder.files
for each fic_file in collec_file
DO
lire chaque ligne de chaque fichier dat
end
merci d'avance pour un début de code trouvé sous le coude.
for each fic_file in collec_file
If Right(fic_file.Name, 3) = "dat" Then
Do
Ou alors executer dans un shell la commande dir o:n /b /s
C:TOTO*.dat > fichier.lst
Puis lire ce fichier qui contient la liste de tous les fichiers
.dat des sous repertoires ligne à ligne
Super, merci
Je peux vous demander une petite alternative ?
Si je pose une question avant du genre quel type de fichier voulez
vous traiter: les AA BB ou CC ?
commment traiter que les AAxx.dat ?
Merci
Super je rajoute cela à ma bibliothèque personnelle
Voici mon bout de code avec les routines demandées, mais je bute sur
une erreur Instruction attendue (voir à la fin).
Le but est d'extraire des zones dans des fichiers dat
C'est fichier ce trouve dans le répertoire C:DATAPACKAGE
et il y a 4 types de fichier dat à traiter indépendement:
TCH_AJxxx.dat
TCH_DIxxx.dat
TIP_DOxxx.dat
TIP_RIxxx.dat
Je pose la question quel traitement ?
Si c'est 1 c'est le ou les fichiers TCH_AJxxx.dat qu'il faut traiter
Je prépare les colonnes et mon fichier cvs
Je filtre les fichier avec l'extension dat et le f-type=TCH_AJ
J'extrait des zones selon l'identifiant du début de chaque lignes que
je recopie dans mon cvs.
Voici le code:
Option Explicit
Const ForReading = 1, ForWriting = 2
Dim fso, fsofolder, TRIB, collec_file, fic_file, f_type, vbCancel,
objShell, fileIn, fileOut, COLO, strIn, Sline,CE
Set fso = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")
TRIB=InputBox("Voulez vous lancer le traitement des ETATs ?"& vbCrLf
&"Tapez le Nom de l'état pour lequel vous voulez générer
L'impression." & vbCrLf & vbCrLf & "Taper :" & vbCrLf & vbCrLf & "1
pour les AJ " & vbCrLf & "2 pour les DI " & vbCrLf & "3 pour DO " &
vbCrLf & "4 pour les RI"& vbCrLf,"EASY2XLS","1")
If vbCancel = 2 Then Wscript.quit
If TRIB= "" Then Wscript.quit
If TRIB <> 1 or 2 or 3 or 4 then Wscript.quit 'oh c'est pas jolie
If TRIB=1 Then f_type = "TCH_AJ" 'la aussi c'est pas jolie
If TRIB=2 Then f_type = "TCH_DI"
If TRIB=3 Then f_type = "TIP_DO"
If TRIB=4 Then f_type = "TIP_RI"
COLO="Code Enregistrement;Type de traitement;Nom du lot;Sequence
Lot;Numéro Image" 'Entête du fichier csv Non des colonnes excel
Set fileOut = fso.OpenTextFile("C:RECAP.CSV", ForWriting , True)
fileout.WriteLine COL 'Fabrication des colonnes
Set fsofolder = fso.GetFolder("C:DATAPACKAGE")
Set collec_file = fsofolder.Files
for each fic_file in collec_file
If Right(fic_file.Name, 3) = "dat" and left(fic_file.Name, 5) >> f_type Then
Do
Set fileIn = fso.OpenTextFile(fic_file, True)
Do While Not fileIn.AtEndOfStream
SLine = fileIn.ReadLine
CE=Mid(SLine,1,2) 'CE = Code enregistrement
If CE= "50" Then
strIn=Mid(SLine,1,2)'CE = 50 Cheque Code enregistrement
strIn=strIn & ";" & Mid(SLine,3,2)
strIn=strIn & ";" & Mid(SLine,5,2)
strIn=strIn & ";" & Mid(SLine,7,11)
fileOut.WriteLine strIn
ElseIf CE="60" Then
strIn=Mid(SLine,1,2)
strIn=strIn & ";" & Mid(SLine,3,2)
strIn=strIn & ";" & Mid(SLine,10,2)
strIn=strIn & ";" & Mid(SLine,20,11)
fileOut.WriteLine strIn
ElseIf CE="65" Then
strIn=Mid(SLine,1,2)'CE = 50 Cheque Code enregistrement
strIn=strIn & ";" & Mid(SLine,8,2)
strIn=strIn & ";" & Mid(SLine,8,2)
strIn=strIn & ";" & Mid(SLine,88,11)
fileOut.WriteLine strIn
Else
fileOut.Close
End If
Loop
End If ' <<<ERREUR Instruction attendue
Next
Set fileIn = Nothing
Set fileOut = Nothing
Si quelqu'un peut me donner un coup de pouce SVP ?
J'ai essayé d'en refaire un bout ;-)
Non testé ;-(
Option Explicit
Const ForReading = 1, ForWriting = 2
Dim fso, fsofolder, collec_file, fic_file, f_type
Dim objShell, fileIn, fileOut, strIn, Sline, CE
Function Choix_etat()
Choix_etat = InputBox("Voulez vous lancer le traitement des ETATs ?" &
vbCrLf & "Tapez le N° de l'état pour lequel vous voulez générer
l'impression." & vbCrLf & vbCrLf & "Taper :" & vbCrLf & vbCrLf & "1> pour
les AJ " & vbCrLf & "2 pour les DI " & vbCrLf & "3 pour DO " & vbCrLf & "4
pour les RI" & vbCrLf, "EASY2XLS", "1")
Choix_etat = Trim(Choix_etat)
End Function
Select Case Choix_etat()
Case "1" f_type = "TCH_AJ"
Case "2" f_type = "TCH_DI"
Case "3" f_type = "TIP_DO"
Case "4" f_type = "TIP_RI"
Case Else
WScript.Echo "Traitement annulé !" ' Prévenir l'utilisateur de
l'annulation du script
WScript.Quit
End Select
Set fso = CreateObject("Scripting.FileSystemObject")
Set fileOut = fso.OpenTextFile("C:RECAP.CSV", ForWriting, True)
fileOut.WriteLine "Code enregistrement;Type de traitement;Nom du lot;Sequence
lot;Numéro Image"
Set fsofolder = fso.GetFolder("C:DATAPACKAGE")
Set collec_file = fsofolder.Files
For Each fic_file In collec_file
If Right(fic_file.Name, 3) = "dat" And Left(fic_file.Name, 6) = f_type
Then
Set fileIn = fso.OpenTextFile(fic_file, ForReading)
Do While Not fileIn.AtEndOfStream
SLine = Trim(fileIn.ReadLine)
CE= Left(SLine, 2) 'CE = Code enregistrement
If CE = "50" Then
strIn = CE
strIn = strIn & ";" & Mid(SLine, 3, 2)
strIn = strIn & ";" & Mid(SLine, 5, 2)
strIn = strIn & ";" & Mid(SLine, 7, 11)
ElseIf CE = "60" Then
strIn = CE
strIn = strIn & ";" & Mid(SLine, 3, 2)
strIn = strIn & ";" & Mid(SLine, 10, 2)
strIn = strIn & ";" & Mid(SLine, 20, 11)
ElseIf CE = "65" Then
strIn = CE
strIn = strIn & ";" & Mid(SLine, 8, 2)
strIn = strIn & ";" & Mid(SLine, 8, 2) ' ? étrange ?
strIn = strIn & ";" & Mid(SLine, 88, 11)
End If
Select Case CE
Case "50", "60", "65" fileOut.WriteLine strIn
End Select
Loop
End If
Next
fileIn.Close
fileOut.Close
Set fileIn = Nothing
Set fileOut = Nothing
---DGI972--- wrote:Le 22/02/2006, Georges a supposé :Bonjour,
Si vous faites
v_type=inputBox("Donnez le type de fichier à traiter (AA, BB ou CC)
....
for each fic_file in collec_file
If Right(fic_file.Name, 3) = "dat" and left(fic_file.Name,
2)=v_typeThen Do
...
Cordialement
Georges
"---DGI972---" <gilles.dermigny@*NO SPAM* laposte.net> a écrit dans
le message de news:---DGI972--- wrote:Bonjour messieurs,
Il me manque une routine en vbs:
C:TOTOTATAAA
C:TOTOTATABB
C:TOTOTATACC
Dans le sous répertoire AA
j'ai des fichiers AAxx.001,AAxx.002,AAxx.003 et AAxx.dat
Dans le sous répertoire BB
j'ai des fichiers BBxx.001,BBxx.002,BBxx.003 et BBxx.dat
etc..
je voudrais lire uniquement les *.dat dans tous les sous
répertoire de TOTO du genre:
Set fso = CreateObject("Scripting.fileSystemObject")
Set fsofolder = fso.GetFolder("c:TOTO")
Set collec_file = fsofolder.files
for each fic_file in collec_file
DO
lire chaque ligne de chaque fichier dat
end
merci d'avance pour un début de code trouvé sous le coude.
for each fic_file in collec_file
If Right(fic_file.Name, 3) = "dat" Then
Do
Ou alors executer dans un shell la commande dir o:n /b /s
C:TOTO*.dat > fichier.lst
Puis lire ce fichier qui contient la liste de tous les fichiers
.dat des sous repertoires ligne à ligne
Super, merci
Je peux vous demander une petite alternative ?
Si je pose une question avant du genre quel type de fichier voulez
vous traiter: les AA BB ou CC ?
commment traiter que les AAxx.dat ?
Merci
Super je rajoute cela à ma bibliothèque personnelle
Voici mon bout de code avec les routines demandées, mais je bute sur
une erreur Instruction attendue (voir à la fin).
Le but est d'extraire des zones dans des fichiers dat
C'est fichier ce trouve dans le répertoire C:DATAPACKAGE
et il y a 4 types de fichier dat à traiter indépendement:
TCH_AJxxx.dat
TCH_DIxxx.dat
TIP_DOxxx.dat
TIP_RIxxx.dat
Je pose la question quel traitement ?
Si c'est 1 c'est le ou les fichiers TCH_AJxxx.dat qu'il faut traiter
Je prépare les colonnes et mon fichier cvs
Je filtre les fichier avec l'extension dat et le f-type=TCH_AJ
J'extrait des zones selon l'identifiant du début de chaque lignes que
je recopie dans mon cvs.
Voici le code:
Option Explicit
Const ForReading = 1, ForWriting = 2
Dim fso, fsofolder, TRIB, collec_file, fic_file, f_type, vbCancel,
objShell, fileIn, fileOut, COLO, strIn, Sline,CE
Set fso = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")
TRIB=InputBox("Voulez vous lancer le traitement des ETATs ?"& vbCrLf
&"Tapez le Nom de l'état pour lequel vous voulez générer
L'impression." & vbCrLf & vbCrLf & "Taper :" & vbCrLf & vbCrLf & "1
pour les AJ " & vbCrLf & "2 pour les DI " & vbCrLf & "3 pour DO " &
vbCrLf & "4 pour les RI"& vbCrLf,"EASY2XLS","1")
If vbCancel = 2 Then Wscript.quit
If TRIB= "" Then Wscript.quit
If TRIB <> 1 or 2 or 3 or 4 then Wscript.quit 'oh c'est pas jolie
If TRIB=1 Then f_type = "TCH_AJ" 'la aussi c'est pas jolie
If TRIB=2 Then f_type = "TCH_DI"
If TRIB=3 Then f_type = "TIP_DO"
If TRIB=4 Then f_type = "TIP_RI"
COLO="Code Enregistrement;Type de traitement;Nom du lot;Sequence
Lot;Numéro Image" 'Entête du fichier csv Non des colonnes excel
Set fileOut = fso.OpenTextFile("C:RECAP.CSV", ForWriting , True)
fileout.WriteLine COL 'Fabrication des colonnes
Set fsofolder = fso.GetFolder("C:DATAPACKAGE")
Set collec_file = fsofolder.Files
for each fic_file in collec_file
If Right(fic_file.Name, 3) = "dat" and left(fic_file.Name, 5) >> f_type Then
Do
Set fileIn = fso.OpenTextFile(fic_file, True)
Do While Not fileIn.AtEndOfStream
SLine = fileIn.ReadLine
CE=Mid(SLine,1,2) 'CE = Code enregistrement
If CE= "50" Then
strIn=Mid(SLine,1,2)'CE = 50 Cheque Code enregistrement
strIn=strIn & ";" & Mid(SLine,3,2)
strIn=strIn & ";" & Mid(SLine,5,2)
strIn=strIn & ";" & Mid(SLine,7,11)
fileOut.WriteLine strIn
ElseIf CE="60" Then
strIn=Mid(SLine,1,2)
strIn=strIn & ";" & Mid(SLine,3,2)
strIn=strIn & ";" & Mid(SLine,10,2)
strIn=strIn & ";" & Mid(SLine,20,11)
fileOut.WriteLine strIn
ElseIf CE="65" Then
strIn=Mid(SLine,1,2)'CE = 50 Cheque Code enregistrement
strIn=strIn & ";" & Mid(SLine,8,2)
strIn=strIn & ";" & Mid(SLine,8,2)
strIn=strIn & ";" & Mid(SLine,88,11)
fileOut.WriteLine strIn
Else
fileOut.Close
End If
Loop
End If ' <<<ERREUR Instruction attendue
Next
Set fileIn = Nothing
Set fileOut = Nothing
Si quelqu'un peut me donner un coup de pouce SVP ?
J'ai essayé d'en refaire un bout ;-)
Non testé ;-(
Option Explicit
Const ForReading = 1, ForWriting = 2
Dim fso, fsofolder, collec_file, fic_file, f_type
Dim objShell, fileIn, fileOut, strIn, Sline, CE
Function Choix_etat()
Choix_etat = InputBox("Voulez vous lancer le traitement des ETATs ?" &
vbCrLf & "Tapez le N° de l'état pour lequel vous voulez générer
l'impression." & vbCrLf & vbCrLf & "Taper :" & vbCrLf & vbCrLf & "1> pour
les AJ " & vbCrLf & "2 pour les DI " & vbCrLf & "3 pour DO " & vbCrLf & "4
pour les RI" & vbCrLf, "EASY2XLS", "1")
Choix_etat = Trim(Choix_etat)
End Function
Select Case Choix_etat()
Case "1" f_type = "TCH_AJ"
Case "2" f_type = "TCH_DI"
Case "3" f_type = "TIP_DO"
Case "4" f_type = "TIP_RI"
Case Else
WScript.Echo "Traitement annulé !" ' Prévenir l'utilisateur de
l'annulation du script
WScript.Quit
End Select
Set fso = CreateObject("Scripting.FileSystemObject")
Set fileOut = fso.OpenTextFile("C:RECAP.CSV", ForWriting, True)
fileOut.WriteLine "Code enregistrement;Type de traitement;Nom du lot;Sequence
lot;Numéro Image"
Set fsofolder = fso.GetFolder("C:DATAPACKAGE")
Set collec_file = fsofolder.Files
For Each fic_file In collec_file
If Right(fic_file.Name, 3) = "dat" And Left(fic_file.Name, 6) = f_type
Then
Set fileIn = fso.OpenTextFile(fic_file, ForReading)
Do While Not fileIn.AtEndOfStream
SLine = Trim(fileIn.ReadLine)
CE= Left(SLine, 2) 'CE = Code enregistrement
If CE = "50" Then
strIn = CE
strIn = strIn & ";" & Mid(SLine, 3, 2)
strIn = strIn & ";" & Mid(SLine, 5, 2)
strIn = strIn & ";" & Mid(SLine, 7, 11)
ElseIf CE = "60" Then
strIn = CE
strIn = strIn & ";" & Mid(SLine, 3, 2)
strIn = strIn & ";" & Mid(SLine, 10, 2)
strIn = strIn & ";" & Mid(SLine, 20, 11)
ElseIf CE = "65" Then
strIn = CE
strIn = strIn & ";" & Mid(SLine, 8, 2)
strIn = strIn & ";" & Mid(SLine, 8, 2) ' ? étrange ?
strIn = strIn & ";" & Mid(SLine, 88, 11)
End If
Select Case CE
Case "50", "60", "65" fileOut.WriteLine strIn
End Select
Loop
End If
Next
fileIn.Close
fileOut.Close
Set fileIn = Nothing
Set fileOut = Nothing
Dans : news:%Bonjour !
Bonjour,Juste par curiosité :
- comment se fait la conversion d'une majuscule accentuée, en
minuscule ? Avec d'autres langages, j'ai des comportement curieux,
variables selon le code-page utilisé (c-à-dire la même routine
retourne des résultats pouvant être différents, sur des machines
différentes)
MsgBox Lcase("É")
La conversion se fait bien : É donne é
Le jeu de caractère utilisé est celui de windows.
Mais cela vient sans doute de l'enregistrement du vbs voir plus bas.
Je n'ai pas testé avec tous les caractères accentués.- comment se fait la conversion, si l'extension
contient des caractères unicode ? Retrouver les minuscules unicode,
c'est... d'autres méthodes.
Je ne sais pas trop dans ce cas. Tout ce que je peux dire c'est qu'un essai
avec un caractère accentué de code supérieur à 255 fonctionne bien (il n'y a
pas ambiguïté comme avec le É qui a le même code en 1252 et en Unicode).
MsgBox Lcase(ChrW(264))
ou
MsgBox LCase("Ĉ") (à condition d'enregistrer en Unicode bien sûr)
donne bien ĉ (264 est le code Unicode de Ĉ)
Cela semble se confirmer avec quelques autres essais.
Dans : news:%23prkZzROGHA.2300@TK2MSFTNGP15.phx.gbl
Bonjour !
Bonjour,
Juste par curiosité :
- comment se fait la conversion d'une majuscule accentuée, en
minuscule ? Avec d'autres langages, j'ai des comportement curieux,
variables selon le code-page utilisé (c-à-dire la même routine
retourne des résultats pouvant être différents, sur des machines
différentes)
MsgBox Lcase("É")
La conversion se fait bien : É donne é
Le jeu de caractère utilisé est celui de windows.
Mais cela vient sans doute de l'enregistrement du vbs voir plus bas.
Je n'ai pas testé avec tous les caractères accentués.
- comment se fait la conversion, si l'extension
contient des caractères unicode ? Retrouver les minuscules unicode,
c'est... d'autres méthodes.
Je ne sais pas trop dans ce cas. Tout ce que je peux dire c'est qu'un essai
avec un caractère accentué de code supérieur à 255 fonctionne bien (il n'y a
pas ambiguïté comme avec le É qui a le même code en 1252 et en Unicode).
MsgBox Lcase(ChrW(264))
ou
MsgBox LCase("Ĉ") (à condition d'enregistrer en Unicode bien sûr)
donne bien ĉ (264 est le code Unicode de Ĉ)
Cela semble se confirmer avec quelques autres essais.
Dans : news:%Bonjour !
Bonjour,Juste par curiosité :
- comment se fait la conversion d'une majuscule accentuée, en
minuscule ? Avec d'autres langages, j'ai des comportement curieux,
variables selon le code-page utilisé (c-à-dire la même routine
retourne des résultats pouvant être différents, sur des machines
différentes)
MsgBox Lcase("É")
La conversion se fait bien : É donne é
Le jeu de caractère utilisé est celui de windows.
Mais cela vient sans doute de l'enregistrement du vbs voir plus bas.
Je n'ai pas testé avec tous les caractères accentués.- comment se fait la conversion, si l'extension
contient des caractères unicode ? Retrouver les minuscules unicode,
c'est... d'autres méthodes.
Je ne sais pas trop dans ce cas. Tout ce que je peux dire c'est qu'un essai
avec un caractère accentué de code supérieur à 255 fonctionne bien (il n'y a
pas ambiguïté comme avec le É qui a le même code en 1252 et en Unicode).
MsgBox Lcase(ChrW(264))
ou
MsgBox LCase("Ĉ") (à condition d'enregistrer en Unicode bien sûr)
donne bien ĉ (264 est le code Unicode de Ĉ)
Cela semble se confirmer avec quelques autres essais.
Pas cool je me bat avec la routine
Set fso = CreateObject("Scripting.FileSystemObject")
Set fsofolder = fso.GetFolder("C:EASYMIXDATAPACKAGE")
Set collec_file = fsofolder.Files
For Each fic_file In collec_file
If Right(fic_file.Name, 3) = "dat" And Left(fic_file.Name, 6) > f_type Then
fic_file.Copy ("C:TIP" & f_type & ".dat")
'Function 0bin(fich_file)
End If
Next
c'est pas récurcif cette routine.
Tous les sous répertoires ne sont pas scrutés avec "f-type"*.dat
cela fonctionne plus ou moins lorsqu'il y a un fichier dans PACKAGE.
je suis preneur de la version tous les répertoires et sous répertoires
Pas cool je me bat avec la routine
Set fso = CreateObject("Scripting.FileSystemObject")
Set fsofolder = fso.GetFolder("C:EASYMIXDATAPACKAGE")
Set collec_file = fsofolder.Files
For Each fic_file In collec_file
If Right(fic_file.Name, 3) = "dat" And Left(fic_file.Name, 6) > f_type Then
fic_file.Copy ("C:TIP" & f_type & ".dat")
'Function 0bin(fich_file)
End If
Next
c'est pas récurcif cette routine.
Tous les sous répertoires ne sont pas scrutés avec "f-type"*.dat
cela fonctionne plus ou moins lorsqu'il y a un fichier dans PACKAGE.
je suis preneur de la version tous les répertoires et sous répertoires
Pas cool je me bat avec la routine
Set fso = CreateObject("Scripting.FileSystemObject")
Set fsofolder = fso.GetFolder("C:EASYMIXDATAPACKAGE")
Set collec_file = fsofolder.Files
For Each fic_file In collec_file
If Right(fic_file.Name, 3) = "dat" And Left(fic_file.Name, 6) > f_type Then
fic_file.Copy ("C:TIP" & f_type & ".dat")
'Function 0bin(fich_file)
End If
Next
c'est pas récurcif cette routine.
Tous les sous répertoires ne sont pas scrutés avec "f-type"*.dat
cela fonctionne plus ou moins lorsqu'il y a un fichier dans PACKAGE.
je suis preneur de la version tous les répertoires et sous répertoires
Dans : news:,
---DGI972--- disait :Pas cool je me bat avec la routine
Set fso = CreateObject("Scripting.FileSystemObject")
Set fsofolder = fso.GetFolder("C:EASYMIXDATAPACKAGE")
Set collec_file = fsofolder.Files
For Each fic_file In collec_file
If Right(fic_file.Name, 3) = "dat" And Left(fic_file.Name, 6) >> f_type Then
fic_file.Copy ("C:TIP" & f_type & ".dat")
'Function 0bin(fich_file)
End If
Next
c'est pas récurcif cette routine.
Tu n'as pas cela dans tes tablettes ? ;-)Tous les sous répertoires ne sont pas scrutés avec "f-type"*.dat
cela fonctionne plus ou moins lorsqu'il y a un fichier dans PACKAGE.
je suis preneur de la version tous les répertoires et sous répertoires
Il faut que tu crées un Sub pour pouvoir réaliser ton traitement récursif.
Un début d'algo non testé : la procédure Traitement prend en paramètre un
répertoire.
Sub Traitement(oFolder)
For Each oFile In oFolder.Files
'Ici tu traites les fichiers du répertoire oFolder
'........
Next
For Each oSubFolder in oFolder.SubFolders
'Ici tu appelles le même traitement pour
'tous les sous-répertoires de oFolder
Traitement oSubFolder
Next
End Sub
Il suffit ensuite d'initialiser le traitement avec ton répertoire racine.
Traitement fso.GetFolder("C:EASYMIXDATAPACKAGE")
Bonne continuation !
Dans : news:mn.42477d63be5ea443.33554@NOSPAMlaposte.net,
---DGI972--- disait :
Pas cool je me bat avec la routine
Set fso = CreateObject("Scripting.FileSystemObject")
Set fsofolder = fso.GetFolder("C:EASYMIXDATAPACKAGE")
Set collec_file = fsofolder.Files
For Each fic_file In collec_file
If Right(fic_file.Name, 3) = "dat" And Left(fic_file.Name, 6) >> f_type Then
fic_file.Copy ("C:TIP" & f_type & ".dat")
'Function 0bin(fich_file)
End If
Next
c'est pas récurcif cette routine.
Tu n'as pas cela dans tes tablettes ? ;-)
Tous les sous répertoires ne sont pas scrutés avec "f-type"*.dat
cela fonctionne plus ou moins lorsqu'il y a un fichier dans PACKAGE.
je suis preneur de la version tous les répertoires et sous répertoires
Il faut que tu crées un Sub pour pouvoir réaliser ton traitement récursif.
Un début d'algo non testé : la procédure Traitement prend en paramètre un
répertoire.
Sub Traitement(oFolder)
For Each oFile In oFolder.Files
'Ici tu traites les fichiers du répertoire oFolder
'........
Next
For Each oSubFolder in oFolder.SubFolders
'Ici tu appelles le même traitement pour
'tous les sous-répertoires de oFolder
Traitement oSubFolder
Next
End Sub
Il suffit ensuite d'initialiser le traitement avec ton répertoire racine.
Traitement fso.GetFolder("C:EASYMIXDATAPACKAGE")
Bonne continuation !
Dans : news:,
---DGI972--- disait :Pas cool je me bat avec la routine
Set fso = CreateObject("Scripting.FileSystemObject")
Set fsofolder = fso.GetFolder("C:EASYMIXDATAPACKAGE")
Set collec_file = fsofolder.Files
For Each fic_file In collec_file
If Right(fic_file.Name, 3) = "dat" And Left(fic_file.Name, 6) >> f_type Then
fic_file.Copy ("C:TIP" & f_type & ".dat")
'Function 0bin(fich_file)
End If
Next
c'est pas récurcif cette routine.
Tu n'as pas cela dans tes tablettes ? ;-)Tous les sous répertoires ne sont pas scrutés avec "f-type"*.dat
cela fonctionne plus ou moins lorsqu'il y a un fichier dans PACKAGE.
je suis preneur de la version tous les répertoires et sous répertoires
Il faut que tu crées un Sub pour pouvoir réaliser ton traitement récursif.
Un début d'algo non testé : la procédure Traitement prend en paramètre un
répertoire.
Sub Traitement(oFolder)
For Each oFile In oFolder.Files
'Ici tu traites les fichiers du répertoire oFolder
'........
Next
For Each oSubFolder in oFolder.SubFolders
'Ici tu appelles le même traitement pour
'tous les sous-répertoires de oFolder
Traitement oSubFolder
Next
End Sub
Il suffit ensuite d'initialiser le traitement avec ton répertoire racine.
Traitement fso.GetFolder("C:EASYMIXDATAPACKAGE")
Bonne continuation !
Sub Traitement(oFolder)
For Each oFile In oFolder.Files
If Right(oFile.Name, 3) = "dat" And Left(oFile.Name, 6) > f_type Then
o_File.Copy ("C:TIP" & f_type & ".dat")
End If
Next
For Each oSubFolder in oFolder.SubFolders
Traitement oSubFolder
Next
End Sub
Traitement fso.GetFolder("C:EASYMIXDATAPACKAGE")
Sub Traitement(oFolder)
For Each oFile In oFolder.Files
If Right(oFile.Name, 3) = "dat" And Left(oFile.Name, 6) > f_type Then
o_File.Copy ("C:TIP" & f_type & ".dat")
End If
Next
For Each oSubFolder in oFolder.SubFolders
Traitement oSubFolder
Next
End Sub
Traitement fso.GetFolder("C:EASYMIXDATAPACKAGE")
Sub Traitement(oFolder)
For Each oFile In oFolder.Files
If Right(oFile.Name, 3) = "dat" And Left(oFile.Name, 6) > f_type Then
o_File.Copy ("C:TIP" & f_type & ".dat")
End If
Next
For Each oSubFolder in oFolder.SubFolders
Traitement oSubFolder
Next
End Sub
Traitement fso.GetFolder("C:EASYMIXDATAPACKAGE")