If reponse =3D False Then Exit Sub
Canal =3D FreeFile
Open reponse For Input As #Canal
Do While Not EOF(Canal)
Line Input #1, A$
B$ =3D Split(A$, " ")
If B$(0) =3D "OBJECT" Then
'ICI on doit aller vers les deux lignes en bas pour r=E9cup=E9r=
er nos donn=E9es
End If
Loop
Close #Canal
'-----------------------------------------------------------------
If reponse = False Then Exit Sub Canal = FreeFile Open reponse For Input As #Canal Do While Not EOF(Canal) Line Input #Canal, A$ b$ = Split(A$, " ") If b$(0) = "OBJECT" Then Line Input #Canal, A$ Line Input #Canal, A$ b$ = Split(A$, " ") For Each Item In b$ 'ici à toi de jouer Next Item End If Loop Close #Canal
Cordialement. Daniel
Bonsoir à tous,
J'aimerais dans un fichier, repérer le mot "OBJECT" pour lire ce qui est dans les deux lignes qui suivent en dessous.
A récupérer
-Le nom sous « OBJECT » (dans l’exemple GTY0A et JEW0A) -Les NCS, NSD, NTN, NBS sous le mot « CS » ainsi que leurs valeurs respectives
If reponse = False Then Exit Sub Canal = FreeFile Open reponse For Input As #Canal Do While Not EOF(Canal) Line Input #1, A$ B$ = Split(A$, " ") If B$(0) = "OBJECT" Then 'ICI on doit aller vers les deux lignes en bas pour récupérer nos données End If Loop Close #Canal '-----------------------------------------------------------------
If reponse = False Then Exit Sub
Canal = FreeFile
Open reponse For Input As #Canal
Do While Not EOF(Canal)
Line Input #Canal, A$
b$ = Split(A$, " ")
If b$(0) = "OBJECT" Then
Line Input #Canal, A$
Line Input #Canal, A$
b$ = Split(A$, " ")
For Each Item In b$
'ici à toi de jouer
Next Item
End If
Loop
Close #Canal
Cordialement.
Daniel
Bonsoir à tous,
J'aimerais dans un fichier, repérer le mot "OBJECT" pour lire ce qui est dans
les deux lignes qui suivent en dessous.
A récupérer
-Le nom sous « OBJECT » (dans l’exemple GTY0A et JEW0A)
-Les NCS, NSD, NTN, NBS sous le mot « CS » ainsi que leurs valeurs
respectives
If reponse = False Then Exit Sub
Canal = FreeFile
Open reponse For Input As #Canal
Do While Not EOF(Canal)
Line Input #1, A$
B$ = Split(A$, " ")
If B$(0) = "OBJECT" Then
'ICI on doit aller vers les deux lignes en bas pour récupérer nos
données End If
Loop
Close #Canal
'-----------------------------------------------------------------
If reponse = False Then Exit Sub Canal = FreeFile Open reponse For Input As #Canal Do While Not EOF(Canal) Line Input #Canal, A$ b$ = Split(A$, " ") If b$(0) = "OBJECT" Then Line Input #Canal, A$ Line Input #Canal, A$ b$ = Split(A$, " ") For Each Item In b$ 'ici à toi de jouer Next Item End If Loop Close #Canal
Cordialement. Daniel
Bonsoir à tous,
J'aimerais dans un fichier, repérer le mot "OBJECT" pour lire ce qui est dans les deux lignes qui suivent en dessous.
A récupérer
-Le nom sous « OBJECT » (dans l’exemple GTY0A et JEW0A) -Les NCS, NSD, NTN, NBS sous le mot « CS » ainsi que leurs valeurs respectives
If reponse = False Then Exit Sub Canal = FreeFile Open reponse For Input As #Canal Do While Not EOF(Canal) Line Input #1, A$ B$ = Split(A$, " ") If B$(0) = "OBJECT" Then 'ICI on doit aller vers les deux lignes en bas pour récupérer nos données End If Loop Close #Canal '-----------------------------------------------------------------
Merci d'avance.
Apitos
Bonjour Daniel,
Voila une autre tentative, mais j'ai du mal à supprimer les éléments vides du tableau B :
C'est pas le fichier données, ça. Ce dont j'ai besoin, c'est le fichi er texte ou csv en entrée.
C'est bien le fichier sans extension à traiter.
Il est issu d'un log de système
Bon, entre temps j'ai essayé le traitement sur le fichier originel, mais j'ai eu des lignes qu'elles ne devront pas être présentes dans le rés ultat du traitement.
Alors voila le fichier de données sans extension et le fichier Excel, don t lequel jai utilisé plusieurs tests de if else pour résoudre mon pr oblème.
C'est pas le fichier données, ça. Ce dont j'ai besoin, c'est le fichi er
texte ou csv en entrée.
C'est bien le fichier sans extension à traiter.
Il est issu d'un log de système
Bon, entre temps j'ai essayé le traitement sur le fichier originel, mais j'ai eu des lignes qu'elles ne devront pas être présentes dans le rés ultat du traitement.
Alors voila le fichier de données sans extension et le fichier Excel, don t lequel jai utilisé plusieurs tests de if else pour résoudre mon pr oblème.
C'est pas le fichier données, ça. Ce dont j'ai besoin, c'est le fichi er texte ou csv en entrée.
C'est bien le fichier sans extension à traiter.
Il est issu d'un log de système
Bon, entre temps j'ai essayé le traitement sur le fichier originel, mais j'ai eu des lignes qu'elles ne devront pas être présentes dans le rés ultat du traitement.
Alors voila le fichier de données sans extension et le fichier Excel, don t lequel jai utilisé plusieurs tests de if else pour résoudre mon pr oblème.
Essaie cette macro. Elles fonctionne pour le fichier texte que tu as fourni. Sans garantie pour un autre. Sub Ouvrefich() Dim B$() ', Item As Object Dim i As Byte, LastLg As Long Dim Name As String Dim NCS As String, NSD As String, NTN As String, NBS As String
If reponse = False Then Exit Sub Canal = FreeFile Open reponse For Input As #Canal [A1].Value = "Objet" [B1].Value = "NCS" [C1].Value = "NSD" [D1].Value = "NTN" [E1].Value = "NBS" Range("A2:E" & [A65000].End(xlUp).Row + 1).ClearContents
Do While Not EOF(Canal) Line Input #Canal, A$
If Len(Trim(A$)) > 0 Then '-- Si la ligne est non vide 'MsgBox "Line : " & a$ B$ = Split(Trim(A$), " ")
If UBound(B$) - 1 > 0 Then '-- Si on a un tableau B If UBound(B$) >= 4 Then If B$(4) = "CS" Then Name = B$(0) Do Until B$(0) = "NCS" Line Input #Canal, A$ B$ = Split(Trim(A$), " ") Loop ' la ligne pour récupérer le nom d'objet Line Input #Canal, A$ B$ = Split(Trim(A$), " ") If B$(0) = "WO" Then Line Input #Canal, A$ B$ = Split(Trim(A$), " ") End If LastLg = [B65000].End(xlUp).Row + 1 Cells(LastLg, 1) = Name If B$(0) <> "" Then Cells(LastLg, 2) = B$(0) If B$(6) <> "" Then Cells(LastLg, 3) = B$(6) If B$(11) <> "" Then Cells(LastLg, 4) = B$(11) If B$(17) <> "" Then Cells(LastLg, 5) = B$(17) End If End If End If End If Loop Close #Canal
End Sub
Essaie cette macro. Elles fonctionne pour le fichier texte que tu as
fourni. Sans garantie pour un autre.
Sub Ouvrefich()
Dim B$() ', Item As Object
Dim i As Byte, LastLg As Long
Dim Name As String
Dim NCS As String, NSD As String, NTN As String, NBS As String
If reponse = False Then Exit Sub
Canal = FreeFile
Open reponse For Input As #Canal
[A1].Value = "Objet"
[B1].Value = "NCS"
[C1].Value = "NSD"
[D1].Value = "NTN"
[E1].Value = "NBS"
Range("A2:E" & [A65000].End(xlUp).Row + 1).ClearContents
Do While Not EOF(Canal)
Line Input #Canal, A$
If Len(Trim(A$)) > 0 Then '-- Si la ligne est non vide
'MsgBox "Line : " & a$
B$ = Split(Trim(A$), " ")
If UBound(B$) - 1 > 0 Then '-- Si on a un tableau B
If UBound(B$) >= 4 Then
If B$(4) = "CS" Then
Name = B$(0)
Do Until B$(0) = "NCS"
Line Input #Canal, A$
B$ = Split(Trim(A$), " ")
Loop ' la ligne pour récupérer le nom
d'objet
Line Input #Canal, A$
B$ = Split(Trim(A$), " ")
If B$(0) = "WO" Then
Line Input #Canal, A$
B$ = Split(Trim(A$), " ")
End If
LastLg = [B65000].End(xlUp).Row + 1
Cells(LastLg, 1) = Name
If B$(0) <> "" Then Cells(LastLg, 2) = B$(0)
If B$(6) <> "" Then Cells(LastLg, 3) = B$(6)
If B$(11) <> "" Then Cells(LastLg, 4) = B$(11)
If B$(17) <> "" Then Cells(LastLg, 5) = B$(17)
End If
End If
End If
End If
Loop
Close #Canal
Essaie cette macro. Elles fonctionne pour le fichier texte que tu as fourni. Sans garantie pour un autre. Sub Ouvrefich() Dim B$() ', Item As Object Dim i As Byte, LastLg As Long Dim Name As String Dim NCS As String, NSD As String, NTN As String, NBS As String
If reponse = False Then Exit Sub Canal = FreeFile Open reponse For Input As #Canal [A1].Value = "Objet" [B1].Value = "NCS" [C1].Value = "NSD" [D1].Value = "NTN" [E1].Value = "NBS" Range("A2:E" & [A65000].End(xlUp).Row + 1).ClearContents
Do While Not EOF(Canal) Line Input #Canal, A$
If Len(Trim(A$)) > 0 Then '-- Si la ligne est non vide 'MsgBox "Line : " & a$ B$ = Split(Trim(A$), " ")
If UBound(B$) - 1 > 0 Then '-- Si on a un tableau B If UBound(B$) >= 4 Then If B$(4) = "CS" Then Name = B$(0) Do Until B$(0) = "NCS" Line Input #Canal, A$ B$ = Split(Trim(A$), " ") Loop ' la ligne pour récupérer le nom d'objet Line Input #Canal, A$ B$ = Split(Trim(A$), " ") If B$(0) = "WO" Then Line Input #Canal, A$ B$ = Split(Trim(A$), " ") End If LastLg = [B65000].End(xlUp).Row + 1 Cells(LastLg, 1) = Name If B$(0) <> "" Then Cells(LastLg, 2) = B$(0) If B$(6) <> "" Then Cells(LastLg, 3) = B$(6) If B$(11) <> "" Then Cells(LastLg, 4) = B$(11) If B$(17) <> "" Then Cells(LastLg, 5) = B$(17) End If End If End If End If Loop Close #Canal
End Sub
Apitos
Merci Daniel,
Ca marche mais pour le RAMOD, ca ne ramène que la première valeur NCS à savoir 43.
Les trois autres valeurs (NSDC, NTNC et NBS"), ne sont pas extr aites.
Merci Daniel,
Ca marche mais pour le RAMOD, ca ne ramène que la première valeur NCS à savoir 43.
Les trois autres valeurs (NSD=43, NTN=43 et NBS=22), ne sont pas extr aites.
Bizarre, regarde le classeur joint; est-ce qu'on n'aurait pas le même fichier SQ7 ? http://cjoint.com/?BExkM126aUf Daniel
Merci Daniel,
Ca marche mais pour le RAMOD, ca ne ramène que la première valeur NCS à savoir 43.
Les trois autres valeurs (NSDC, NTNC et NBS"), ne sont pas extraites.
Apitos
Bonjour Daniel,
Oui, effectivement le problème était dans le fichier SQ7.
Je viens de m'apercevoir qu'il y avait des espaces devant les valeurs num ériques.
Cest pour ça, que la macro nextrairait que des vides au lieu des va leurs.
Mais avec cette boucle, tous les valeurs seront repris même sil y a de s espaces de superflu dans la ligne.
'--------------------------- '-- Récupération des éléments non vides -- du tableau B$ dans un nouveau tableau BB$
i = 0: j = 0 For Each Item In B$ If Len(Trim(Item)) > 0 Then ReDim Preserve BB$(i) BB$(i) = B$(j) i = i + 1 End If j = j + 1 Next Item '---------------------------
Merci Daniel.
Bonjour Daniel,
Oui, effectivement le problème était dans le fichier SQ7.
Je viens de m'apercevoir qu'il y avait des espaces devant les valeurs num ériques.
Cest pour ça, que la macro nextrairait que des vides au lieu des va leurs.
Mais avec cette boucle, tous les valeurs seront repris même sil y a de s espaces de superflu dans la ligne.
'---------------------------
'-- Récupération des éléments non vides
-- du tableau B$ dans un nouveau tableau BB$
i = 0: j = 0
For Each Item In B$
If Len(Trim(Item)) > 0 Then
ReDim Preserve BB$(i)
BB$(i) = B$(j)
i = i + 1
End If
j = j + 1
Next Item
'---------------------------
Oui, effectivement le problème était dans le fichier SQ7.
Je viens de m'apercevoir qu'il y avait des espaces devant les valeurs num ériques.
Cest pour ça, que la macro nextrairait que des vides au lieu des va leurs.
Mais avec cette boucle, tous les valeurs seront repris même sil y a de s espaces de superflu dans la ligne.
'--------------------------- '-- Récupération des éléments non vides -- du tableau B$ dans un nouveau tableau BB$
i = 0: j = 0 For Each Item In B$ If Len(Trim(Item)) > 0 Then ReDim Preserve BB$(i) BB$(i) = B$(j) i = i + 1 End If j = j + 1 Next Item '---------------------------