Bonjour à tous
Je voudrais sur un fichier txt récupérer un certain nombre de
renseignements.(3 premiers )
Le fichier en lui même comporte actuellement 74580 lignes (évolutive) sous
cette forme
10174312|Oxxxxxx|Eyyy|MG|25/10/1971|27/11/2003|27/11/2002|carte saphir
valable jusqu'au 03/02/2005
13445647|Hxxxx|Dyyyyy|LAP|21/04/1950|16/09/2004|22/12/1995|
9947824|Mxxxxx|Uyyyyt|LJR|17/07/1987|17/07/2001|21/02/1997|Prochaine carte
payante. - 15/01/1999. - NEH. - JG
Apparemment 8 zones avec comme séparateur "|"
1-numéro
2-nom
3-prénom
4-localisation
5-date
6-date
7-date
8-observation
Ma question......
Est-il possible d'obliger Excel se prendre comme séparateur de liste
momentanément le signe"|" en VBA ?
Actuellement je fait cela pour récupérer les infos.
Je n'ai besoin que des 3 première infos 1, 2, et 3
'--------------------------------
Private Sub CommandButton1_Click()
Dim numeros As String, nom As String, prenom As String
ad_cel = Mid(Selection.Address, 2, 1) & Right(Selection.Address, 1)
res = InputBox("Recherche de lecteur par son numéro," & Chr$(10) & "pour
la
cellule: " & ad_cel, "Recherche")
x = Len(res)
If res = "" Then Exit Sub
Sheets("Attente").Visible = True
Worksheets("attente").Activate ' feuille d'attente
Open "d:FICHTEST.txt" For Input As #1
Do While Not EOF(1)
' Lit les données dans 1 variable.
Line Input #1, numero
If Left(numero, x) = res Then
For i = 1 To Len(numero)
If Mid(numero, i, 1) = "|" Then
num = Mid(numero, 1, i - 1)
Exit For
End If
Next i
For j = i + 1 To Len(numero)
If Mid(numero, j, 1) = "|" Then
nom = Mid(numero, i + 1, j - i - 1)
Exit For
End If
Next j
For k = j + 1 To Len(numero)
If Mid(numero, k, 1) = "|" Then
prenom = Mid(numero, j + 1, k - j - 1)
Exit For
End If
Next k
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
rep = MsgBox("le n°: " & num & " correspond au lecteur " & Chr$(10) &
"Nom: " & nom & Chr$(10) & "Prénom: " & prenom & Chr$(10) & Chr$(10) &
"Voulez-vous l'attribuer à la cellule (" & ad_cel & ") selectionnée ?", 4,
"Recherche de lecteur")
If rep = 6 Then
Selection = nom & " " & prenom & Chr$(10) & num
End If
Exit Sub
End If
Loop
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
msg = MsgBox("Le lecteur dont le n° est : " & res & Chr$(10) & "n'existe
pas. ", 0, "Fin de la recherche")
End Sub
'-----------------------
J'ai aussi essayé avec ' Input #1 ' , pour récupérer les infos les unes
après le autres, sans succès, car dans la section 8- observation , il est
permis tous les caractères. Ce qui me provoque un décalage dès que une
virgule ou un point virgule est rencontrés.
Je cherche une solution pour améliorer ce code ou un autre code tenant
compte de ce "|" sans en affecter Excel dans les autres applications.
Il m'est interdit de modifier ce fichier qui est généré par un autre
logiciel.
Ouf je ne sais pas si cela est très clair.....
Merci
JJ
Bonjour à tous
Je voudrais sur un fichier txt récupérer un certain nombre de
renseignements.(3 premiers )
Le fichier en lui même comporte actuellement 74580 lignes (évolutive) sous
cette forme
10174312|Oxxxxxx|Eyyy|MG|25/10/1971|27/11/2003|27/11/2002|carte saphir
valable jusqu'au 03/02/2005
13445647|Hxxxx|Dyyyyy|LAP|21/04/1950|16/09/2004|22/12/1995|
9947824|Mxxxxx|Uyyyyt|LJR|17/07/1987|17/07/2001|21/02/1997|Prochaine carte
payante. - 15/01/1999. - NEH. - JG
Apparemment 8 zones avec comme séparateur "|"
1-numéro
2-nom
3-prénom
4-localisation
5-date
6-date
7-date
8-observation
Ma question......
Est-il possible d'obliger Excel se prendre comme séparateur de liste
momentanément le signe"|" en VBA ?
Actuellement je fait cela pour récupérer les infos.
Je n'ai besoin que des 3 première infos 1, 2, et 3
'--------------------------------
Private Sub CommandButton1_Click()
Dim numeros As String, nom As String, prenom As String
ad_cel = Mid(Selection.Address, 2, 1) & Right(Selection.Address, 1)
res = InputBox("Recherche de lecteur par son numéro," & Chr$(10) & "pour
la
cellule: " & ad_cel, "Recherche")
x = Len(res)
If res = "" Then Exit Sub
Sheets("Attente").Visible = True
Worksheets("attente").Activate ' feuille d'attente
Open "d:FICHTEST.txt" For Input As #1
Do While Not EOF(1)
' Lit les données dans 1 variable.
Line Input #1, numero
If Left(numero, x) = res Then
For i = 1 To Len(numero)
If Mid(numero, i, 1) = "|" Then
num = Mid(numero, 1, i - 1)
Exit For
End If
Next i
For j = i + 1 To Len(numero)
If Mid(numero, j, 1) = "|" Then
nom = Mid(numero, i + 1, j - i - 1)
Exit For
End If
Next j
For k = j + 1 To Len(numero)
If Mid(numero, k, 1) = "|" Then
prenom = Mid(numero, j + 1, k - j - 1)
Exit For
End If
Next k
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
rep = MsgBox("le n°: " & num & " correspond au lecteur " & Chr$(10) &
"Nom: " & nom & Chr$(10) & "Prénom: " & prenom & Chr$(10) & Chr$(10) &
"Voulez-vous l'attribuer à la cellule (" & ad_cel & ") selectionnée ?", 4,
"Recherche de lecteur")
If rep = 6 Then
Selection = nom & " " & prenom & Chr$(10) & num
End If
Exit Sub
End If
Loop
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
msg = MsgBox("Le lecteur dont le n° est : " & res & Chr$(10) & "n'existe
pas. ", 0, "Fin de la recherche")
End Sub
'-----------------------
J'ai aussi essayé avec ' Input #1 ' , pour récupérer les infos les unes
après le autres, sans succès, car dans la section 8- observation , il est
permis tous les caractères. Ce qui me provoque un décalage dès que une
virgule ou un point virgule est rencontrés.
Je cherche une solution pour améliorer ce code ou un autre code tenant
compte de ce "|" sans en affecter Excel dans les autres applications.
Il m'est interdit de modifier ce fichier qui est généré par un autre
logiciel.
Ouf je ne sais pas si cela est très clair.....
Merci
JJ
Bonjour à tous
Je voudrais sur un fichier txt récupérer un certain nombre de
renseignements.(3 premiers )
Le fichier en lui même comporte actuellement 74580 lignes (évolutive) sous
cette forme
10174312|Oxxxxxx|Eyyy|MG|25/10/1971|27/11/2003|27/11/2002|carte saphir
valable jusqu'au 03/02/2005
13445647|Hxxxx|Dyyyyy|LAP|21/04/1950|16/09/2004|22/12/1995|
9947824|Mxxxxx|Uyyyyt|LJR|17/07/1987|17/07/2001|21/02/1997|Prochaine carte
payante. - 15/01/1999. - NEH. - JG
Apparemment 8 zones avec comme séparateur "|"
1-numéro
2-nom
3-prénom
4-localisation
5-date
6-date
7-date
8-observation
Ma question......
Est-il possible d'obliger Excel se prendre comme séparateur de liste
momentanément le signe"|" en VBA ?
Actuellement je fait cela pour récupérer les infos.
Je n'ai besoin que des 3 première infos 1, 2, et 3
'--------------------------------
Private Sub CommandButton1_Click()
Dim numeros As String, nom As String, prenom As String
ad_cel = Mid(Selection.Address, 2, 1) & Right(Selection.Address, 1)
res = InputBox("Recherche de lecteur par son numéro," & Chr$(10) & "pour
la
cellule: " & ad_cel, "Recherche")
x = Len(res)
If res = "" Then Exit Sub
Sheets("Attente").Visible = True
Worksheets("attente").Activate ' feuille d'attente
Open "d:FICHTEST.txt" For Input As #1
Do While Not EOF(1)
' Lit les données dans 1 variable.
Line Input #1, numero
If Left(numero, x) = res Then
For i = 1 To Len(numero)
If Mid(numero, i, 1) = "|" Then
num = Mid(numero, 1, i - 1)
Exit For
End If
Next i
For j = i + 1 To Len(numero)
If Mid(numero, j, 1) = "|" Then
nom = Mid(numero, i + 1, j - i - 1)
Exit For
End If
Next j
For k = j + 1 To Len(numero)
If Mid(numero, k, 1) = "|" Then
prenom = Mid(numero, j + 1, k - j - 1)
Exit For
End If
Next k
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
rep = MsgBox("le n°: " & num & " correspond au lecteur " & Chr$(10) &
"Nom: " & nom & Chr$(10) & "Prénom: " & prenom & Chr$(10) & Chr$(10) &
"Voulez-vous l'attribuer à la cellule (" & ad_cel & ") selectionnée ?", 4,
"Recherche de lecteur")
If rep = 6 Then
Selection = nom & " " & prenom & Chr$(10) & num
End If
Exit Sub
End If
Loop
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
msg = MsgBox("Le lecteur dont le n° est : " & res & Chr$(10) & "n'existe
pas. ", 0, "Fin de la recherche")
End Sub
'-----------------------
J'ai aussi essayé avec ' Input #1 ' , pour récupérer les infos les unes
après le autres, sans succès, car dans la section 8- observation , il est
permis tous les caractères. Ce qui me provoque un décalage dès que une
virgule ou un point virgule est rencontrés.
Je cherche une solution pour améliorer ce code ou un autre code tenant
compte de ce "|" sans en affecter Excel dans les autres applications.
Il m'est interdit de modifier ce fichier qui est généré par un autre
logiciel.
Ouf je ne sais pas si cela est très clair.....
Merci
JJ
Bonjour à tous
Je voudrais sur un fichier txt récupérer un certain nombre de
renseignements.(3 premiers )
Le fichier en lui même comporte actuellement 74580 lignes (évolutive) sous
cette forme
10174312|Oxxxxxx|Eyyy|MG|25/10/1971|27/11/2003|27/11/2002|carte saphir
valable jusqu'au 03/02/2005
13445647|Hxxxx|Dyyyyy|LAP|21/04/1950|16/09/2004|22/12/1995|
9947824|Mxxxxx|Uyyyyt|LJR|17/07/1987|17/07/2001|21/02/1997|Prochaine carte
payante. - 15/01/1999. - NEH. - JG
Apparemment 8 zones avec comme séparateur "|"
1-numéro
2-nom
3-prénom
4-localisation
5-date
6-date
7-date
8-observation
Ma question......
Est-il possible d'obliger Excel se prendre comme séparateur de liste
momentanément le signe"|" en VBA ?
Actuellement je fait cela pour récupérer les infos.
Je n'ai besoin que des 3 première infos 1, 2, et 3
'--------------------------------
Private Sub CommandButton1_Click()
Dim numeros As String, nom As String, prenom As String
ad_cel = Mid(Selection.Address, 2, 1) & Right(Selection.Address, 1)
res = InputBox("Recherche de lecteur par son numéro," & Chr$(10) & "pour
la
cellule: " & ad_cel, "Recherche")
x = Len(res)
If res = "" Then Exit Sub
Sheets("Attente").Visible = True
Worksheets("attente").Activate ' feuille d'attente
Open "d:FICHTEST.txt" For Input As #1
Do While Not EOF(1)
' Lit les données dans 1 variable.
Line Input #1, numero
If Left(numero, x) = res Then
For i = 1 To Len(numero)
If Mid(numero, i, 1) = "|" Then
num = Mid(numero, 1, i - 1)
Exit For
End If
Next i
For j = i + 1 To Len(numero)
If Mid(numero, j, 1) = "|" Then
nom = Mid(numero, i + 1, j - i - 1)
Exit For
End If
Next j
For k = j + 1 To Len(numero)
If Mid(numero, k, 1) = "|" Then
prenom = Mid(numero, j + 1, k - j - 1)
Exit For
End If
Next k
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
rep = MsgBox("le n°: " & num & " correspond au lecteur " & Chr$(10) &
"Nom: " & nom & Chr$(10) & "Prénom: " & prenom & Chr$(10) & Chr$(10) &
"Voulez-vous l'attribuer à la cellule (" & ad_cel & ") selectionnée ?", 4,
"Recherche de lecteur")
If rep = 6 Then
Selection = nom & " " & prenom & Chr$(10) & num
End If
Exit Sub
End If
Loop
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
msg = MsgBox("Le lecteur dont le n° est : " & res & Chr$(10) & "n'existe
pas. ", 0, "Fin de la recherche")
End Sub
'-----------------------
J'ai aussi essayé avec ' Input #1 ' , pour récupérer les infos les unes
après le autres, sans succès, car dans la section 8- observation , il est
permis tous les caractères. Ce qui me provoque un décalage dès que une
virgule ou un point virgule est rencontrés.
Je cherche une solution pour améliorer ce code ou un autre code tenant
compte de ce "|" sans en affecter Excel dans les autres applications.
Il m'est interdit de modifier ce fichier qui est généré par un autre
logiciel.
Ouf je ne sais pas si cela est très clair.....
Merci
JJ
Bonjour à tous
Je voudrais sur un fichier txt récupérer un certain nombre de
renseignements.(3 premiers )
Le fichier en lui même comporte actuellement 74580 lignes (évolutive) sous
cette forme
10174312|Oxxxxxx|Eyyy|MG|25/10/1971|27/11/2003|27/11/2002|carte saphir
valable jusqu'au 03/02/2005
13445647|Hxxxx|Dyyyyy|LAP|21/04/1950|16/09/2004|22/12/1995|
9947824|Mxxxxx|Uyyyyt|LJR|17/07/1987|17/07/2001|21/02/1997|Prochaine carte
payante. - 15/01/1999. - NEH. - JG
Apparemment 8 zones avec comme séparateur "|"
1-numéro
2-nom
3-prénom
4-localisation
5-date
6-date
7-date
8-observation
Ma question......
Est-il possible d'obliger Excel se prendre comme séparateur de liste
momentanément le signe"|" en VBA ?
Actuellement je fait cela pour récupérer les infos.
Je n'ai besoin que des 3 première infos 1, 2, et 3
'--------------------------------
Private Sub CommandButton1_Click()
Dim numeros As String, nom As String, prenom As String
ad_cel = Mid(Selection.Address, 2, 1) & Right(Selection.Address, 1)
res = InputBox("Recherche de lecteur par son numéro," & Chr$(10) & "pour
la
cellule: " & ad_cel, "Recherche")
x = Len(res)
If res = "" Then Exit Sub
Sheets("Attente").Visible = True
Worksheets("attente").Activate ' feuille d'attente
Open "d:FICHTEST.txt" For Input As #1
Do While Not EOF(1)
' Lit les données dans 1 variable.
Line Input #1, numero
If Left(numero, x) = res Then
For i = 1 To Len(numero)
If Mid(numero, i, 1) = "|" Then
num = Mid(numero, 1, i - 1)
Exit For
End If
Next i
For j = i + 1 To Len(numero)
If Mid(numero, j, 1) = "|" Then
nom = Mid(numero, i + 1, j - i - 1)
Exit For
End If
Next j
For k = j + 1 To Len(numero)
If Mid(numero, k, 1) = "|" Then
prenom = Mid(numero, j + 1, k - j - 1)
Exit For
End If
Next k
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
rep = MsgBox("le n°: " & num & " correspond au lecteur " & Chr$(10) &
"Nom: " & nom & Chr$(10) & "Prénom: " & prenom & Chr$(10) & Chr$(10) &
"Voulez-vous l'attribuer à la cellule (" & ad_cel & ") selectionnée ?", 4,
"Recherche de lecteur")
If rep = 6 Then
Selection = nom & " " & prenom & Chr$(10) & num
End If
Exit Sub
End If
Loop
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
msg = MsgBox("Le lecteur dont le n° est : " & res & Chr$(10) & "n'existe
pas. ", 0, "Fin de la recherche")
End Sub
'-----------------------
J'ai aussi essayé avec ' Input #1 ' , pour récupérer les infos les unes
après le autres, sans succès, car dans la section 8- observation , il est
permis tous les caractères. Ce qui me provoque un décalage dès que une
virgule ou un point virgule est rencontrés.
Je cherche une solution pour améliorer ce code ou un autre code tenant
compte de ce "|" sans en affecter Excel dans les autres applications.
Il m'est interdit de modifier ce fichier qui est généré par un autre
logiciel.
Ouf je ne sais pas si cela est très clair.....
Merci
JJ
Bonjour à tous
Je voudrais sur un fichier txt récupérer un certain nombre de
renseignements.(3 premiers )
Le fichier en lui même comporte actuellement 74580 lignes (évolutive) sous
cette forme
10174312|Oxxxxxx|Eyyy|MG|25/10/1971|27/11/2003|27/11/2002|carte saphir
valable jusqu'au 03/02/2005
13445647|Hxxxx|Dyyyyy|LAP|21/04/1950|16/09/2004|22/12/1995|
9947824|Mxxxxx|Uyyyyt|LJR|17/07/1987|17/07/2001|21/02/1997|Prochaine carte
payante. - 15/01/1999. - NEH. - JG
Apparemment 8 zones avec comme séparateur "|"
1-numéro
2-nom
3-prénom
4-localisation
5-date
6-date
7-date
8-observation
Ma question......
Est-il possible d'obliger Excel se prendre comme séparateur de liste
momentanément le signe"|" en VBA ?
Actuellement je fait cela pour récupérer les infos.
Je n'ai besoin que des 3 première infos 1, 2, et 3
'--------------------------------
Private Sub CommandButton1_Click()
Dim numeros As String, nom As String, prenom As String
ad_cel = Mid(Selection.Address, 2, 1) & Right(Selection.Address, 1)
res = InputBox("Recherche de lecteur par son numéro," & Chr$(10) & "pour
la
cellule: " & ad_cel, "Recherche")
x = Len(res)
If res = "" Then Exit Sub
Sheets("Attente").Visible = True
Worksheets("attente").Activate ' feuille d'attente
Open "d:FICHTEST.txt" For Input As #1
Do While Not EOF(1)
' Lit les données dans 1 variable.
Line Input #1, numero
If Left(numero, x) = res Then
For i = 1 To Len(numero)
If Mid(numero, i, 1) = "|" Then
num = Mid(numero, 1, i - 1)
Exit For
End If
Next i
For j = i + 1 To Len(numero)
If Mid(numero, j, 1) = "|" Then
nom = Mid(numero, i + 1, j - i - 1)
Exit For
End If
Next j
For k = j + 1 To Len(numero)
If Mid(numero, k, 1) = "|" Then
prenom = Mid(numero, j + 1, k - j - 1)
Exit For
End If
Next k
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
rep = MsgBox("le n°: " & num & " correspond au lecteur " & Chr$(10) &
"Nom: " & nom & Chr$(10) & "Prénom: " & prenom & Chr$(10) & Chr$(10) &
"Voulez-vous l'attribuer à la cellule (" & ad_cel & ") selectionnée ?", 4,
"Recherche de lecteur")
If rep = 6 Then
Selection = nom & " " & prenom & Chr$(10) & num
End If
Exit Sub
End If
Loop
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
msg = MsgBox("Le lecteur dont le n° est : " & res & Chr$(10) & "n'existe
pas. ", 0, "Fin de la recherche")
End Sub
'-----------------------
J'ai aussi essayé avec ' Input #1 ' , pour récupérer les infos les unes
après le autres, sans succès, car dans la section 8- observation , il est
permis tous les caractères. Ce qui me provoque un décalage dès que une
virgule ou un point virgule est rencontrés.
Je cherche une solution pour améliorer ce code ou un autre code tenant
compte de ce "|" sans en affecter Excel dans les autres applications.
Il m'est interdit de modifier ce fichier qui est généré par un autre
logiciel.
Ouf je ne sais pas si cela est très clair.....
Merci
JJ
Salut
logiquement, en utilisant l'enregistreur de macro, tu aurais quelque chose
comme cela
ChDir "D:temp"
Workbooks.OpenText Filename:="D:temptoto.txt", Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote,
_
ConsecutiveDelimiter:úlse, Tab:=True, Semicolon:úlse,
Comma:úlse _
, Space:úlse, Other:=True, OtherChar:="|",
FieldInfo:=Array(Array(1, 1 _
), Array(2, 1), Array(3, 1), Array(4, 9), Array(5, 9), Array(6,
9),
Array(7, 9), Array(8, 9))
a+
rural thierry
"Jacky" a écrit dans le message de news:Bonjour à tous
Je voudrais sur un fichier txt récupérer un certain nombre de
renseignements.(3 premiers )
Le fichier en lui même comporte actuellement 74580 lignes (évolutive)
sous
cette forme
10174312|Oxxxxxx|Eyyy|MG|25/10/1971|27/11/2003|27/11/2002|carte saphir
valable jusqu'au 03/02/2005
13445647|Hxxxx|Dyyyyy|LAP|21/04/1950|16/09/2004|22/12/1995|
9947824|Mxxxxx|Uyyyyt|LJR|17/07/1987|17/07/2001|21/02/1997|Prochaine
carte
payante. - 15/01/1999. - NEH. - JG
Apparemment 8 zones avec comme séparateur "|"
1-numéro
2-nom
3-prénom
4-localisation
5-date
6-date
7-date
8-observation
Ma question......
Est-il possible d'obliger Excel se prendre comme séparateur de liste
momentanément le signe"|" en VBA ?
Actuellement je fait cela pour récupérer les infos.
Je n'ai besoin que des 3 première infos 1, 2, et 3
'--------------------------------
Private Sub CommandButton1_Click()
Dim numeros As String, nom As String, prenom As String
ad_cel = Mid(Selection.Address, 2, 1) & Right(Selection.Address, 1)
res = InputBox("Recherche de lecteur par son numéro," & Chr$(10) & "pour
lacellule: " & ad_cel, "Recherche")
x = Len(res)
If res = "" Then Exit Sub
Sheets("Attente").Visible = True
Worksheets("attente").Activate ' feuille d'attente
Open "d:FICHTEST.txt" For Input As #1
Do While Not EOF(1)
' Lit les données dans 1 variable.
Line Input #1, numero
If Left(numero, x) = res Then
For i = 1 To Len(numero)
If Mid(numero, i, 1) = "|" Then
num = Mid(numero, 1, i - 1)
Exit For
End If
Next i
For j = i + 1 To Len(numero)
If Mid(numero, j, 1) = "|" Then
nom = Mid(numero, i + 1, j - i - 1)
Exit For
End If
Next j
For k = j + 1 To Len(numero)
If Mid(numero, k, 1) = "|" Then
prenom = Mid(numero, j + 1, k - j - 1)
Exit For
End If
Next k
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
rep = MsgBox("le n°: " & num & " correspond au lecteur " & Chr$(10)
&
"Nom: " & nom & Chr$(10) & "Prénom: " & prenom & Chr$(10) & Chr$(10) &
"Voulez-vous l'attribuer à la cellule (" & ad_cel & ") selectionnée ?",
4,
"Recherche de lecteur")
If rep = 6 Then
Selection = nom & " " & prenom & Chr$(10) & num
End If
Exit Sub
End If
Loop
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
msg = MsgBox("Le lecteur dont le n° est : " & res & Chr$(10) & "n'existe
pas. ", 0, "Fin de la recherche")
End Sub
'-----------------------
J'ai aussi essayé avec ' Input #1 ' , pour récupérer les infos les unes
après le autres, sans succès, car dans la section 8- observation , il
est
permis tous les caractères. Ce qui me provoque un décalage dès que une
virgule ou un point virgule est rencontrés.
Je cherche une solution pour améliorer ce code ou un autre code tenant
compte de ce "|" sans en affecter Excel dans les autres applications.
Il m'est interdit de modifier ce fichier qui est généré par un autre
logiciel.
Ouf je ne sais pas si cela est très clair.....
Merci
JJ
Salut
logiquement, en utilisant l'enregistreur de macro, tu aurais quelque chose
comme cela
ChDir "D:temp"
Workbooks.OpenText Filename:="D:temptoto.txt", Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote,
_
ConsecutiveDelimiter:úlse, Tab:=True, Semicolon:úlse,
Comma:úlse _
, Space:úlse, Other:=True, OtherChar:="|",
FieldInfo:=Array(Array(1, 1 _
), Array(2, 1), Array(3, 1), Array(4, 9), Array(5, 9), Array(6,
9),
Array(7, 9), Array(8, 9))
a+
rural thierry
"Jacky" <Jackyenlevez.jaeg@wanadoo.fr> a écrit dans le message de news:
epje8s4JEHA.1388@TK2MSFTNGP09.phx.gbl...
Bonjour à tous
Je voudrais sur un fichier txt récupérer un certain nombre de
renseignements.(3 premiers )
Le fichier en lui même comporte actuellement 74580 lignes (évolutive)
sous
cette forme
10174312|Oxxxxxx|Eyyy|MG|25/10/1971|27/11/2003|27/11/2002|carte saphir
valable jusqu'au 03/02/2005
13445647|Hxxxx|Dyyyyy|LAP|21/04/1950|16/09/2004|22/12/1995|
9947824|Mxxxxx|Uyyyyt|LJR|17/07/1987|17/07/2001|21/02/1997|Prochaine
carte
payante. - 15/01/1999. - NEH. - JG
Apparemment 8 zones avec comme séparateur "|"
1-numéro
2-nom
3-prénom
4-localisation
5-date
6-date
7-date
8-observation
Ma question......
Est-il possible d'obliger Excel se prendre comme séparateur de liste
momentanément le signe"|" en VBA ?
Actuellement je fait cela pour récupérer les infos.
Je n'ai besoin que des 3 première infos 1, 2, et 3
'--------------------------------
Private Sub CommandButton1_Click()
Dim numeros As String, nom As String, prenom As String
ad_cel = Mid(Selection.Address, 2, 1) & Right(Selection.Address, 1)
res = InputBox("Recherche de lecteur par son numéro," & Chr$(10) & "pour
la
cellule: " & ad_cel, "Recherche")
x = Len(res)
If res = "" Then Exit Sub
Sheets("Attente").Visible = True
Worksheets("attente").Activate ' feuille d'attente
Open "d:FICHTEST.txt" For Input As #1
Do While Not EOF(1)
' Lit les données dans 1 variable.
Line Input #1, numero
If Left(numero, x) = res Then
For i = 1 To Len(numero)
If Mid(numero, i, 1) = "|" Then
num = Mid(numero, 1, i - 1)
Exit For
End If
Next i
For j = i + 1 To Len(numero)
If Mid(numero, j, 1) = "|" Then
nom = Mid(numero, i + 1, j - i - 1)
Exit For
End If
Next j
For k = j + 1 To Len(numero)
If Mid(numero, k, 1) = "|" Then
prenom = Mid(numero, j + 1, k - j - 1)
Exit For
End If
Next k
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
rep = MsgBox("le n°: " & num & " correspond au lecteur " & Chr$(10)
&
"Nom: " & nom & Chr$(10) & "Prénom: " & prenom & Chr$(10) & Chr$(10) &
"Voulez-vous l'attribuer à la cellule (" & ad_cel & ") selectionnée ?",
4,
"Recherche de lecteur")
If rep = 6 Then
Selection = nom & " " & prenom & Chr$(10) & num
End If
Exit Sub
End If
Loop
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
msg = MsgBox("Le lecteur dont le n° est : " & res & Chr$(10) & "n'existe
pas. ", 0, "Fin de la recherche")
End Sub
'-----------------------
J'ai aussi essayé avec ' Input #1 ' , pour récupérer les infos les unes
après le autres, sans succès, car dans la section 8- observation , il
est
permis tous les caractères. Ce qui me provoque un décalage dès que une
virgule ou un point virgule est rencontrés.
Je cherche une solution pour améliorer ce code ou un autre code tenant
compte de ce "|" sans en affecter Excel dans les autres applications.
Il m'est interdit de modifier ce fichier qui est généré par un autre
logiciel.
Ouf je ne sais pas si cela est très clair.....
Merci
JJ
Salut
logiquement, en utilisant l'enregistreur de macro, tu aurais quelque chose
comme cela
ChDir "D:temp"
Workbooks.OpenText Filename:="D:temptoto.txt", Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote,
_
ConsecutiveDelimiter:úlse, Tab:=True, Semicolon:úlse,
Comma:úlse _
, Space:úlse, Other:=True, OtherChar:="|",
FieldInfo:=Array(Array(1, 1 _
), Array(2, 1), Array(3, 1), Array(4, 9), Array(5, 9), Array(6,
9),
Array(7, 9), Array(8, 9))
a+
rural thierry
"Jacky" a écrit dans le message de news:Bonjour à tous
Je voudrais sur un fichier txt récupérer un certain nombre de
renseignements.(3 premiers )
Le fichier en lui même comporte actuellement 74580 lignes (évolutive)
sous
cette forme
10174312|Oxxxxxx|Eyyy|MG|25/10/1971|27/11/2003|27/11/2002|carte saphir
valable jusqu'au 03/02/2005
13445647|Hxxxx|Dyyyyy|LAP|21/04/1950|16/09/2004|22/12/1995|
9947824|Mxxxxx|Uyyyyt|LJR|17/07/1987|17/07/2001|21/02/1997|Prochaine
carte
payante. - 15/01/1999. - NEH. - JG
Apparemment 8 zones avec comme séparateur "|"
1-numéro
2-nom
3-prénom
4-localisation
5-date
6-date
7-date
8-observation
Ma question......
Est-il possible d'obliger Excel se prendre comme séparateur de liste
momentanément le signe"|" en VBA ?
Actuellement je fait cela pour récupérer les infos.
Je n'ai besoin que des 3 première infos 1, 2, et 3
'--------------------------------
Private Sub CommandButton1_Click()
Dim numeros As String, nom As String, prenom As String
ad_cel = Mid(Selection.Address, 2, 1) & Right(Selection.Address, 1)
res = InputBox("Recherche de lecteur par son numéro," & Chr$(10) & "pour
lacellule: " & ad_cel, "Recherche")
x = Len(res)
If res = "" Then Exit Sub
Sheets("Attente").Visible = True
Worksheets("attente").Activate ' feuille d'attente
Open "d:FICHTEST.txt" For Input As #1
Do While Not EOF(1)
' Lit les données dans 1 variable.
Line Input #1, numero
If Left(numero, x) = res Then
For i = 1 To Len(numero)
If Mid(numero, i, 1) = "|" Then
num = Mid(numero, 1, i - 1)
Exit For
End If
Next i
For j = i + 1 To Len(numero)
If Mid(numero, j, 1) = "|" Then
nom = Mid(numero, i + 1, j - i - 1)
Exit For
End If
Next j
For k = j + 1 To Len(numero)
If Mid(numero, k, 1) = "|" Then
prenom = Mid(numero, j + 1, k - j - 1)
Exit For
End If
Next k
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
rep = MsgBox("le n°: " & num & " correspond au lecteur " & Chr$(10)
&
"Nom: " & nom & Chr$(10) & "Prénom: " & prenom & Chr$(10) & Chr$(10) &
"Voulez-vous l'attribuer à la cellule (" & ad_cel & ") selectionnée ?",
4,
"Recherche de lecteur")
If rep = 6 Then
Selection = nom & " " & prenom & Chr$(10) & num
End If
Exit Sub
End If
Loop
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
msg = MsgBox("Le lecteur dont le n° est : " & res & Chr$(10) & "n'existe
pas. ", 0, "Fin de la recherche")
End Sub
'-----------------------
J'ai aussi essayé avec ' Input #1 ' , pour récupérer les infos les unes
après le autres, sans succès, car dans la section 8- observation , il
est
permis tous les caractères. Ce qui me provoque un décalage dès que une
virgule ou un point virgule est rencontrés.
Je cherche une solution pour améliorer ce code ou un autre code tenant
compte de ce "|" sans en affecter Excel dans les autres applications.
Il m'est interdit de modifier ce fichier qui est généré par un autre
logiciel.
Ouf je ne sais pas si cela est très clair.....
Merci
JJ
Salut,
sans modifier le fichier source on peut, en VBA, en faire une copie et
remplacer les | par autre chose (TAB par exemple)
puis utiliser cette copie modifiée
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" a écrit dans le message de news:Bonjour à tous
Je voudrais sur un fichier txt récupérer un certain nombre de
renseignements.(3 premiers )
Le fichier en lui même comporte actuellement 74580 lignes (évolutive)
sous
cette forme
10174312|Oxxxxxx|Eyyy|MG|25/10/1971|27/11/2003|27/11/2002|carte saphir
valable jusqu'au 03/02/2005
13445647|Hxxxx|Dyyyyy|LAP|21/04/1950|16/09/2004|22/12/1995|
9947824|Mxxxxx|Uyyyyt|LJR|17/07/1987|17/07/2001|21/02/1997|Prochaine
carte
payante. - 15/01/1999. - NEH. - JG
Apparemment 8 zones avec comme séparateur "|"
1-numéro
2-nom
3-prénom
4-localisation
5-date
6-date
7-date
8-observation
Ma question......
Est-il possible d'obliger Excel se prendre comme séparateur de liste
momentanément le signe"|" en VBA ?
Actuellement je fait cela pour récupérer les infos.
Je n'ai besoin que des 3 première infos 1, 2, et 3
'--------------------------------
Private Sub CommandButton1_Click()
Dim numeros As String, nom As String, prenom As String
ad_cel = Mid(Selection.Address, 2, 1) & Right(Selection.Address, 1)
res = InputBox("Recherche de lecteur par son numéro," & Chr$(10) & "pour
lacellule: " & ad_cel, "Recherche")
x = Len(res)
If res = "" Then Exit Sub
Sheets("Attente").Visible = True
Worksheets("attente").Activate ' feuille d'attente
Open "d:FICHTEST.txt" For Input As #1
Do While Not EOF(1)
' Lit les données dans 1 variable.
Line Input #1, numero
If Left(numero, x) = res Then
For i = 1 To Len(numero)
If Mid(numero, i, 1) = "|" Then
num = Mid(numero, 1, i - 1)
Exit For
End If
Next i
For j = i + 1 To Len(numero)
If Mid(numero, j, 1) = "|" Then
nom = Mid(numero, i + 1, j - i - 1)
Exit For
End If
Next j
For k = j + 1 To Len(numero)
If Mid(numero, k, 1) = "|" Then
prenom = Mid(numero, j + 1, k - j - 1)
Exit For
End If
Next k
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
rep = MsgBox("le n°: " & num & " correspond au lecteur " & Chr$(10)
&
"Nom: " & nom & Chr$(10) & "Prénom: " & prenom & Chr$(10) & Chr$(10) &
"Voulez-vous l'attribuer à la cellule (" & ad_cel & ") selectionnée ?",
4,
"Recherche de lecteur")
If rep = 6 Then
Selection = nom & " " & prenom & Chr$(10) & num
End If
Exit Sub
End If
Loop
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
msg = MsgBox("Le lecteur dont le n° est : " & res & Chr$(10) & "n'existe
pas. ", 0, "Fin de la recherche")
End Sub
'-----------------------
J'ai aussi essayé avec ' Input #1 ' , pour récupérer les infos les unes
après le autres, sans succès, car dans la section 8- observation , il
est
permis tous les caractères. Ce qui me provoque un décalage dès que une
virgule ou un point virgule est rencontrés.
Je cherche une solution pour améliorer ce code ou un autre code tenant
compte de ce "|" sans en affecter Excel dans les autres applications.
Il m'est interdit de modifier ce fichier qui est généré par un autre
logiciel.
Ouf je ne sais pas si cela est très clair.....
Merci
JJ
Salut,
sans modifier le fichier source on peut, en VBA, en faire une copie et
remplacer les | par autre chose (TAB par exemple)
puis utiliser cette copie modifiée
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" <Jackyenlevez.jaeg@wanadoo.fr> a écrit dans le message de news:
epje8s4JEHA.1388@TK2MSFTNGP09.phx.gbl...
Bonjour à tous
Je voudrais sur un fichier txt récupérer un certain nombre de
renseignements.(3 premiers )
Le fichier en lui même comporte actuellement 74580 lignes (évolutive)
sous
cette forme
10174312|Oxxxxxx|Eyyy|MG|25/10/1971|27/11/2003|27/11/2002|carte saphir
valable jusqu'au 03/02/2005
13445647|Hxxxx|Dyyyyy|LAP|21/04/1950|16/09/2004|22/12/1995|
9947824|Mxxxxx|Uyyyyt|LJR|17/07/1987|17/07/2001|21/02/1997|Prochaine
carte
payante. - 15/01/1999. - NEH. - JG
Apparemment 8 zones avec comme séparateur "|"
1-numéro
2-nom
3-prénom
4-localisation
5-date
6-date
7-date
8-observation
Ma question......
Est-il possible d'obliger Excel se prendre comme séparateur de liste
momentanément le signe"|" en VBA ?
Actuellement je fait cela pour récupérer les infos.
Je n'ai besoin que des 3 première infos 1, 2, et 3
'--------------------------------
Private Sub CommandButton1_Click()
Dim numeros As String, nom As String, prenom As String
ad_cel = Mid(Selection.Address, 2, 1) & Right(Selection.Address, 1)
res = InputBox("Recherche de lecteur par son numéro," & Chr$(10) & "pour
la
cellule: " & ad_cel, "Recherche")
x = Len(res)
If res = "" Then Exit Sub
Sheets("Attente").Visible = True
Worksheets("attente").Activate ' feuille d'attente
Open "d:FICHTEST.txt" For Input As #1
Do While Not EOF(1)
' Lit les données dans 1 variable.
Line Input #1, numero
If Left(numero, x) = res Then
For i = 1 To Len(numero)
If Mid(numero, i, 1) = "|" Then
num = Mid(numero, 1, i - 1)
Exit For
End If
Next i
For j = i + 1 To Len(numero)
If Mid(numero, j, 1) = "|" Then
nom = Mid(numero, i + 1, j - i - 1)
Exit For
End If
Next j
For k = j + 1 To Len(numero)
If Mid(numero, k, 1) = "|" Then
prenom = Mid(numero, j + 1, k - j - 1)
Exit For
End If
Next k
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
rep = MsgBox("le n°: " & num & " correspond au lecteur " & Chr$(10)
&
"Nom: " & nom & Chr$(10) & "Prénom: " & prenom & Chr$(10) & Chr$(10) &
"Voulez-vous l'attribuer à la cellule (" & ad_cel & ") selectionnée ?",
4,
"Recherche de lecteur")
If rep = 6 Then
Selection = nom & " " & prenom & Chr$(10) & num
End If
Exit Sub
End If
Loop
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
msg = MsgBox("Le lecteur dont le n° est : " & res & Chr$(10) & "n'existe
pas. ", 0, "Fin de la recherche")
End Sub
'-----------------------
J'ai aussi essayé avec ' Input #1 ' , pour récupérer les infos les unes
après le autres, sans succès, car dans la section 8- observation , il
est
permis tous les caractères. Ce qui me provoque un décalage dès que une
virgule ou un point virgule est rencontrés.
Je cherche une solution pour améliorer ce code ou un autre code tenant
compte de ce "|" sans en affecter Excel dans les autres applications.
Il m'est interdit de modifier ce fichier qui est généré par un autre
logiciel.
Ouf je ne sais pas si cela est très clair.....
Merci
JJ
Salut,
sans modifier le fichier source on peut, en VBA, en faire une copie et
remplacer les | par autre chose (TAB par exemple)
puis utiliser cette copie modifiée
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" a écrit dans le message de news:Bonjour à tous
Je voudrais sur un fichier txt récupérer un certain nombre de
renseignements.(3 premiers )
Le fichier en lui même comporte actuellement 74580 lignes (évolutive)
sous
cette forme
10174312|Oxxxxxx|Eyyy|MG|25/10/1971|27/11/2003|27/11/2002|carte saphir
valable jusqu'au 03/02/2005
13445647|Hxxxx|Dyyyyy|LAP|21/04/1950|16/09/2004|22/12/1995|
9947824|Mxxxxx|Uyyyyt|LJR|17/07/1987|17/07/2001|21/02/1997|Prochaine
carte
payante. - 15/01/1999. - NEH. - JG
Apparemment 8 zones avec comme séparateur "|"
1-numéro
2-nom
3-prénom
4-localisation
5-date
6-date
7-date
8-observation
Ma question......
Est-il possible d'obliger Excel se prendre comme séparateur de liste
momentanément le signe"|" en VBA ?
Actuellement je fait cela pour récupérer les infos.
Je n'ai besoin que des 3 première infos 1, 2, et 3
'--------------------------------
Private Sub CommandButton1_Click()
Dim numeros As String, nom As String, prenom As String
ad_cel = Mid(Selection.Address, 2, 1) & Right(Selection.Address, 1)
res = InputBox("Recherche de lecteur par son numéro," & Chr$(10) & "pour
lacellule: " & ad_cel, "Recherche")
x = Len(res)
If res = "" Then Exit Sub
Sheets("Attente").Visible = True
Worksheets("attente").Activate ' feuille d'attente
Open "d:FICHTEST.txt" For Input As #1
Do While Not EOF(1)
' Lit les données dans 1 variable.
Line Input #1, numero
If Left(numero, x) = res Then
For i = 1 To Len(numero)
If Mid(numero, i, 1) = "|" Then
num = Mid(numero, 1, i - 1)
Exit For
End If
Next i
For j = i + 1 To Len(numero)
If Mid(numero, j, 1) = "|" Then
nom = Mid(numero, i + 1, j - i - 1)
Exit For
End If
Next j
For k = j + 1 To Len(numero)
If Mid(numero, k, 1) = "|" Then
prenom = Mid(numero, j + 1, k - j - 1)
Exit For
End If
Next k
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
rep = MsgBox("le n°: " & num & " correspond au lecteur " & Chr$(10)
&
"Nom: " & nom & Chr$(10) & "Prénom: " & prenom & Chr$(10) & Chr$(10) &
"Voulez-vous l'attribuer à la cellule (" & ad_cel & ") selectionnée ?",
4,
"Recherche de lecteur")
If rep = 6 Then
Selection = nom & " " & prenom & Chr$(10) & num
End If
Exit Sub
End If
Loop
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
msg = MsgBox("Le lecteur dont le n° est : " & res & Chr$(10) & "n'existe
pas. ", 0, "Fin de la recherche")
End Sub
'-----------------------
J'ai aussi essayé avec ' Input #1 ' , pour récupérer les infos les unes
après le autres, sans succès, car dans la section 8- observation , il
est
permis tous les caractères. Ce qui me provoque un décalage dès que une
virgule ou un point virgule est rencontrés.
Je cherche une solution pour améliorer ce code ou un autre code tenant
compte de ce "|" sans en affecter Excel dans les autres applications.
Il m'est interdit de modifier ce fichier qui est généré par un autre
logiciel.
Ouf je ne sais pas si cela est très clair.....
Merci
JJ
Salut Pascal
Oui, bien sur, malheureusement ce fichier est en traitement constant sur
une
centaine de Pc et très évolutif.
je doit donc le consulter à l'endroit ou il se trouve à n'importe quel
moment de la journée.
Et cela ne résout pas mon problème de virgule ou autre qui me provoque le
décalage avec input#1.
Je doit faire une recherche très rapide soit par le n°, soit par le nom.
Je trouve ma méthode un peu (beaucoup) archaïque, c'était pour cela que je
me suis adressé au forum.
Je pense qu'il y a plus pro et plus rapide que mon code.
Cela dit , mon code trouve le dernier enregistrement en 3 seconde en
recherche par le n°, avec une copie du fichier sur mon PC. Je ne sais pas
encore combien de temps il mettra pour une recherche sur le serveur.
Autre(s) solution(s) peut-être?
Salutations
JJ
"Pascal Engelmajer" a écrit dans le
message news: u#Salut,
sans modifier le fichier source on peut, en VBA, en faire une copie et
remplacer les | par autre chose (TAB par exemple)
puis utiliser cette copie modifiée
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" a écrit dans le message de news:Bonjour à tous
Je voudrais sur un fichier txt récupérer un certain nombre de
renseignements.(3 premiers )
Le fichier en lui même comporte actuellement 74580 lignes (évolutive)
souscette forme
10174312|Oxxxxxx|Eyyy|MG|25/10/1971|27/11/2003|27/11/2002|carte saphir
valable jusqu'au 03/02/2005
13445647|Hxxxx|Dyyyyy|LAP|21/04/1950|16/09/2004|22/12/1995|
9947824|Mxxxxx|Uyyyyt|LJR|17/07/1987|17/07/2001|21/02/1997|Prochaine
cartepayante. - 15/01/1999. - NEH. - JG
Apparemment 8 zones avec comme séparateur "|"
1-numéro
2-nom
3-prénom
4-localisation
5-date
6-date
7-date
8-observation
Ma question......
Est-il possible d'obliger Excel se prendre comme séparateur de liste
momentanément le signe"|" en VBA ?
Actuellement je fait cela pour récupérer les infos.
Je n'ai besoin que des 3 première infos 1, 2, et 3
'--------------------------------
Private Sub CommandButton1_Click()
Dim numeros As String, nom As String, prenom As String
ad_cel = Mid(Selection.Address, 2, 1) & Right(Selection.Address, 1)
res = InputBox("Recherche de lecteur par son numéro," & Chr$(10) &
"pour
lacellule: " & ad_cel, "Recherche")
x = Len(res)
If res = "" Then Exit Sub
Sheets("Attente").Visible = True
Worksheets("attente").Activate ' feuille d'attente
Open "d:FICHTEST.txt" For Input As #1
Do While Not EOF(1)
' Lit les données dans 1 variable.
Line Input #1, numero
If Left(numero, x) = res Then
For i = 1 To Len(numero)
If Mid(numero, i, 1) = "|" Then
num = Mid(numero, 1, i - 1)
Exit For
End If
Next i
For j = i + 1 To Len(numero)
If Mid(numero, j, 1) = "|" Then
nom = Mid(numero, i + 1, j - i - 1)
Exit For
End If
Next j
For k = j + 1 To Len(numero)
If Mid(numero, k, 1) = "|" Then
prenom = Mid(numero, j + 1, k - j - 1)
Exit For
End If
Next k
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
rep = MsgBox("le n°: " & num & " correspond au lecteur " &
Chr$(10)
&"Nom: " & nom & Chr$(10) & "Prénom: " & prenom & Chr$(10) & Chr$(10) &
"Voulez-vous l'attribuer à la cellule (" & ad_cel & ") selectionnée
?",
4,"Recherche de lecteur")
If rep = 6 Then
Selection = nom & " " & prenom & Chr$(10) & num
End If
Exit Sub
End If
Loop
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
msg = MsgBox("Le lecteur dont le n° est : " & res & Chr$(10) &
"n'existe
pas. ", 0, "Fin de la recherche")
End Sub
'-----------------------
J'ai aussi essayé avec ' Input #1 ' , pour récupérer les infos les
unes
après le autres, sans succès, car dans la section 8- observation , il
estpermis tous les caractères. Ce qui me provoque un décalage dès que une
virgule ou un point virgule est rencontrés.
Je cherche une solution pour améliorer ce code ou un autre code tenant
compte de ce "|" sans en affecter Excel dans les autres applications.
Il m'est interdit de modifier ce fichier qui est généré par un autre
logiciel.
Ouf je ne sais pas si cela est très clair.....
Merci
JJ
Salut Pascal
Oui, bien sur, malheureusement ce fichier est en traitement constant sur
une
centaine de Pc et très évolutif.
je doit donc le consulter à l'endroit ou il se trouve à n'importe quel
moment de la journée.
Et cela ne résout pas mon problème de virgule ou autre qui me provoque le
décalage avec input#1.
Je doit faire une recherche très rapide soit par le n°, soit par le nom.
Je trouve ma méthode un peu (beaucoup) archaïque, c'était pour cela que je
me suis adressé au forum.
Je pense qu'il y a plus pro et plus rapide que mon code.
Cela dit , mon code trouve le dernier enregistrement en 3 seconde en
recherche par le n°, avec une copie du fichier sur mon PC. Je ne sais pas
encore combien de temps il mettra pour une recherche sur le serveur.
Autre(s) solution(s) peut-être?
Salutations
JJ
"Pascal Engelmajer" <pascal.engelmajer@ilyapa_spam.net> a écrit dans le
message news: u#OQdM5JEHA.556@tk2msftngp13.phx.gbl...
Salut,
sans modifier le fichier source on peut, en VBA, en faire une copie et
remplacer les | par autre chose (TAB par exemple)
puis utiliser cette copie modifiée
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" <Jackyenlevez.jaeg@wanadoo.fr> a écrit dans le message de news:
epje8s4JEHA.1388@TK2MSFTNGP09.phx.gbl...
Bonjour à tous
Je voudrais sur un fichier txt récupérer un certain nombre de
renseignements.(3 premiers )
Le fichier en lui même comporte actuellement 74580 lignes (évolutive)
sous
cette forme
10174312|Oxxxxxx|Eyyy|MG|25/10/1971|27/11/2003|27/11/2002|carte saphir
valable jusqu'au 03/02/2005
13445647|Hxxxx|Dyyyyy|LAP|21/04/1950|16/09/2004|22/12/1995|
9947824|Mxxxxx|Uyyyyt|LJR|17/07/1987|17/07/2001|21/02/1997|Prochaine
carte
payante. - 15/01/1999. - NEH. - JG
Apparemment 8 zones avec comme séparateur "|"
1-numéro
2-nom
3-prénom
4-localisation
5-date
6-date
7-date
8-observation
Ma question......
Est-il possible d'obliger Excel se prendre comme séparateur de liste
momentanément le signe"|" en VBA ?
Actuellement je fait cela pour récupérer les infos.
Je n'ai besoin que des 3 première infos 1, 2, et 3
'--------------------------------
Private Sub CommandButton1_Click()
Dim numeros As String, nom As String, prenom As String
ad_cel = Mid(Selection.Address, 2, 1) & Right(Selection.Address, 1)
res = InputBox("Recherche de lecteur par son numéro," & Chr$(10) &
"pour
la
cellule: " & ad_cel, "Recherche")
x = Len(res)
If res = "" Then Exit Sub
Sheets("Attente").Visible = True
Worksheets("attente").Activate ' feuille d'attente
Open "d:FICHTEST.txt" For Input As #1
Do While Not EOF(1)
' Lit les données dans 1 variable.
Line Input #1, numero
If Left(numero, x) = res Then
For i = 1 To Len(numero)
If Mid(numero, i, 1) = "|" Then
num = Mid(numero, 1, i - 1)
Exit For
End If
Next i
For j = i + 1 To Len(numero)
If Mid(numero, j, 1) = "|" Then
nom = Mid(numero, i + 1, j - i - 1)
Exit For
End If
Next j
For k = j + 1 To Len(numero)
If Mid(numero, k, 1) = "|" Then
prenom = Mid(numero, j + 1, k - j - 1)
Exit For
End If
Next k
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
rep = MsgBox("le n°: " & num & " correspond au lecteur " &
Chr$(10)
&
"Nom: " & nom & Chr$(10) & "Prénom: " & prenom & Chr$(10) & Chr$(10) &
"Voulez-vous l'attribuer à la cellule (" & ad_cel & ") selectionnée
?",
4,
"Recherche de lecteur")
If rep = 6 Then
Selection = nom & " " & prenom & Chr$(10) & num
End If
Exit Sub
End If
Loop
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
msg = MsgBox("Le lecteur dont le n° est : " & res & Chr$(10) &
"n'existe
pas. ", 0, "Fin de la recherche")
End Sub
'-----------------------
J'ai aussi essayé avec ' Input #1 ' , pour récupérer les infos les
unes
après le autres, sans succès, car dans la section 8- observation , il
est
permis tous les caractères. Ce qui me provoque un décalage dès que une
virgule ou un point virgule est rencontrés.
Je cherche une solution pour améliorer ce code ou un autre code tenant
compte de ce "|" sans en affecter Excel dans les autres applications.
Il m'est interdit de modifier ce fichier qui est généré par un autre
logiciel.
Ouf je ne sais pas si cela est très clair.....
Merci
JJ
Salut Pascal
Oui, bien sur, malheureusement ce fichier est en traitement constant sur
une
centaine de Pc et très évolutif.
je doit donc le consulter à l'endroit ou il se trouve à n'importe quel
moment de la journée.
Et cela ne résout pas mon problème de virgule ou autre qui me provoque le
décalage avec input#1.
Je doit faire une recherche très rapide soit par le n°, soit par le nom.
Je trouve ma méthode un peu (beaucoup) archaïque, c'était pour cela que je
me suis adressé au forum.
Je pense qu'il y a plus pro et plus rapide que mon code.
Cela dit , mon code trouve le dernier enregistrement en 3 seconde en
recherche par le n°, avec une copie du fichier sur mon PC. Je ne sais pas
encore combien de temps il mettra pour une recherche sur le serveur.
Autre(s) solution(s) peut-être?
Salutations
JJ
"Pascal Engelmajer" a écrit dans le
message news: u#Salut,
sans modifier le fichier source on peut, en VBA, en faire une copie et
remplacer les | par autre chose (TAB par exemple)
puis utiliser cette copie modifiée
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" a écrit dans le message de news:Bonjour à tous
Je voudrais sur un fichier txt récupérer un certain nombre de
renseignements.(3 premiers )
Le fichier en lui même comporte actuellement 74580 lignes (évolutive)
souscette forme
10174312|Oxxxxxx|Eyyy|MG|25/10/1971|27/11/2003|27/11/2002|carte saphir
valable jusqu'au 03/02/2005
13445647|Hxxxx|Dyyyyy|LAP|21/04/1950|16/09/2004|22/12/1995|
9947824|Mxxxxx|Uyyyyt|LJR|17/07/1987|17/07/2001|21/02/1997|Prochaine
cartepayante. - 15/01/1999. - NEH. - JG
Apparemment 8 zones avec comme séparateur "|"
1-numéro
2-nom
3-prénom
4-localisation
5-date
6-date
7-date
8-observation
Ma question......
Est-il possible d'obliger Excel se prendre comme séparateur de liste
momentanément le signe"|" en VBA ?
Actuellement je fait cela pour récupérer les infos.
Je n'ai besoin que des 3 première infos 1, 2, et 3
'--------------------------------
Private Sub CommandButton1_Click()
Dim numeros As String, nom As String, prenom As String
ad_cel = Mid(Selection.Address, 2, 1) & Right(Selection.Address, 1)
res = InputBox("Recherche de lecteur par son numéro," & Chr$(10) &
"pour
lacellule: " & ad_cel, "Recherche")
x = Len(res)
If res = "" Then Exit Sub
Sheets("Attente").Visible = True
Worksheets("attente").Activate ' feuille d'attente
Open "d:FICHTEST.txt" For Input As #1
Do While Not EOF(1)
' Lit les données dans 1 variable.
Line Input #1, numero
If Left(numero, x) = res Then
For i = 1 To Len(numero)
If Mid(numero, i, 1) = "|" Then
num = Mid(numero, 1, i - 1)
Exit For
End If
Next i
For j = i + 1 To Len(numero)
If Mid(numero, j, 1) = "|" Then
nom = Mid(numero, i + 1, j - i - 1)
Exit For
End If
Next j
For k = j + 1 To Len(numero)
If Mid(numero, k, 1) = "|" Then
prenom = Mid(numero, j + 1, k - j - 1)
Exit For
End If
Next k
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
rep = MsgBox("le n°: " & num & " correspond au lecteur " &
Chr$(10)
&"Nom: " & nom & Chr$(10) & "Prénom: " & prenom & Chr$(10) & Chr$(10) &
"Voulez-vous l'attribuer à la cellule (" & ad_cel & ") selectionnée
?",
4,"Recherche de lecteur")
If rep = 6 Then
Selection = nom & " " & prenom & Chr$(10) & num
End If
Exit Sub
End If
Loop
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
msg = MsgBox("Le lecteur dont le n° est : " & res & Chr$(10) &
"n'existe
pas. ", 0, "Fin de la recherche")
End Sub
'-----------------------
J'ai aussi essayé avec ' Input #1 ' , pour récupérer les infos les
unes
après le autres, sans succès, car dans la section 8- observation , il
estpermis tous les caractères. Ce qui me provoque un décalage dès que une
virgule ou un point virgule est rencontrés.
Je cherche une solution pour améliorer ce code ou un autre code tenant
compte de ce "|" sans en affecter Excel dans les autres applications.
Il m'est interdit de modifier ce fichier qui est généré par un autre
logiciel.
Ouf je ne sais pas si cela est très clair.....
Merci
JJ
Salut Jacky,
as-tu essayé Split (à partir de Excel 2000) :
ce qui doit donner à peu près ....
.../...
Dim t
.../...
Line Input #1, numero
t=Split(numero,"|")
if t(0)=res then
nom=t(1)
prenom=t(2)
end if
.../...
je pense que ça doit gagner en vitesse
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" a écrit dans le message de news:Salut Pascal
Oui, bien sur, malheureusement ce fichier est en traitement constant sur
unecentaine de Pc et très évolutif.
je doit donc le consulter à l'endroit ou il se trouve à n'importe quel
moment de la journée.
Et cela ne résout pas mon problème de virgule ou autre qui me provoque
le
décalage avec input#1.
Je doit faire une recherche très rapide soit par le n°, soit par le nom.
Je trouve ma méthode un peu (beaucoup) archaïque, c'était pour cela que
je
me suis adressé au forum.
Je pense qu'il y a plus pro et plus rapide que mon code.
Cela dit , mon code trouve le dernier enregistrement en 3 seconde en
recherche par le n°, avec une copie du fichier sur mon PC. Je ne sais
pas
encore combien de temps il mettra pour une recherche sur le serveur.
Autre(s) solution(s) peut-être?
Salutations
JJ
"Pascal Engelmajer" a écrit dans le
message news: u#Salut,
sans modifier le fichier source on peut, en VBA, en faire une copie et
remplacer les | par autre chose (TAB par exemple)
puis utiliser cette copie modifiée
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" a écrit dans le message de
news:
Bonjour à tous
Je voudrais sur un fichier txt récupérer un certain nombre de
renseignements.(3 premiers )
Le fichier en lui même comporte actuellement 74580 lignes
(évolutive)
souscette forme
10174312|Oxxxxxx|Eyyy|MG|25/10/1971|27/11/2003|27/11/2002|carte
saphir
valable jusqu'au 03/02/2005
13445647|Hxxxx|Dyyyyy|LAP|21/04/1950|16/09/2004|22/12/1995|
9947824|Mxxxxx|Uyyyyt|LJR|17/07/1987|17/07/2001|21/02/1997|Prochaine
cartepayante. - 15/01/1999. - NEH. - JG
Apparemment 8 zones avec comme séparateur "|"
1-numéro
2-nom
3-prénom
4-localisation
5-date
6-date
7-date
8-observation
Ma question......
Est-il possible d'obliger Excel se prendre comme séparateur de liste
momentanément le signe"|" en VBA ?
Actuellement je fait cela pour récupérer les infos.
Je n'ai besoin que des 3 première infos 1, 2, et 3
'--------------------------------
Private Sub CommandButton1_Click()
Dim numeros As String, nom As String, prenom As String
ad_cel = Mid(Selection.Address, 2, 1) & Right(Selection.Address, 1)
res = InputBox("Recherche de lecteur par son numéro," & Chr$(10) &
"pourlacellule: " & ad_cel, "Recherche")
x = Len(res)
If res = "" Then Exit Sub
Sheets("Attente").Visible = True
Worksheets("attente").Activate ' feuille d'attente
Open "d:FICHTEST.txt" For Input As #1
Do While Not EOF(1)
' Lit les données dans 1 variable.
Line Input #1, numero
If Left(numero, x) = res Then
For i = 1 To Len(numero)
If Mid(numero, i, 1) = "|" Then
num = Mid(numero, 1, i - 1)
Exit For
End If
Next i
For j = i + 1 To Len(numero)
If Mid(numero, j, 1) = "|" Then
nom = Mid(numero, i + 1, j - i - 1)
Exit For
End If
Next j
For k = j + 1 To Len(numero)
If Mid(numero, k, 1) = "|" Then
prenom = Mid(numero, j + 1, k - j - 1)
Exit For
End If
Next k
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
rep = MsgBox("le n°: " & num & " correspond au lecteur " &
Chr$(10)&"Nom: " & nom & Chr$(10) & "Prénom: " & prenom & Chr$(10) & Chr$(10)
&
"Voulez-vous l'attribuer à la cellule (" & ad_cel & ") selectionnée
?",4,"Recherche de lecteur")
If rep = 6 Then
Selection = nom & " " & prenom & Chr$(10) & num
End If
Exit Sub
End If
Loop
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
msg = MsgBox("Le lecteur dont le n° est : " & res & Chr$(10) &
"n'existepas. ", 0, "Fin de la recherche")
End Sub
'-----------------------
J'ai aussi essayé avec ' Input #1 ' , pour récupérer les infos les
unesaprès le autres, sans succès, car dans la section 8- observation ,
il
estpermis tous les caractères. Ce qui me provoque un décalage dès que
une
virgule ou un point virgule est rencontrés.
Je cherche une solution pour améliorer ce code ou un autre code
tenant
compte de ce "|" sans en affecter Excel dans les autres
applications.
Il m'est interdit de modifier ce fichier qui est généré par un autre
logiciel.
Ouf je ne sais pas si cela est très clair.....
Merci
JJ
Salut Jacky,
as-tu essayé Split (à partir de Excel 2000) :
ce qui doit donner à peu près ....
.../...
Dim t
.../...
Line Input #1, numero
t=Split(numero,"|")
if t(0)=res then
nom=t(1)
prenom=t(2)
end if
.../...
je pense que ça doit gagner en vitesse
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" <Jackyenlevez.jaeg@wanadoo.fr> a écrit dans le message de news:
urMSJI6JEHA.952@TK2MSFTNGP12.phx.gbl...
Salut Pascal
Oui, bien sur, malheureusement ce fichier est en traitement constant sur
une
centaine de Pc et très évolutif.
je doit donc le consulter à l'endroit ou il se trouve à n'importe quel
moment de la journée.
Et cela ne résout pas mon problème de virgule ou autre qui me provoque
le
décalage avec input#1.
Je doit faire une recherche très rapide soit par le n°, soit par le nom.
Je trouve ma méthode un peu (beaucoup) archaïque, c'était pour cela que
je
me suis adressé au forum.
Je pense qu'il y a plus pro et plus rapide que mon code.
Cela dit , mon code trouve le dernier enregistrement en 3 seconde en
recherche par le n°, avec une copie du fichier sur mon PC. Je ne sais
pas
encore combien de temps il mettra pour une recherche sur le serveur.
Autre(s) solution(s) peut-être?
Salutations
JJ
"Pascal Engelmajer" <pascal.engelmajer@ilyapa_spam.net> a écrit dans le
message news: u#OQdM5JEHA.556@tk2msftngp13.phx.gbl...
Salut,
sans modifier le fichier source on peut, en VBA, en faire une copie et
remplacer les | par autre chose (TAB par exemple)
puis utiliser cette copie modifiée
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" <Jackyenlevez.jaeg@wanadoo.fr> a écrit dans le message de
news:
epje8s4JEHA.1388@TK2MSFTNGP09.phx.gbl...
Bonjour à tous
Je voudrais sur un fichier txt récupérer un certain nombre de
renseignements.(3 premiers )
Le fichier en lui même comporte actuellement 74580 lignes
(évolutive)
sous
cette forme
10174312|Oxxxxxx|Eyyy|MG|25/10/1971|27/11/2003|27/11/2002|carte
saphir
valable jusqu'au 03/02/2005
13445647|Hxxxx|Dyyyyy|LAP|21/04/1950|16/09/2004|22/12/1995|
9947824|Mxxxxx|Uyyyyt|LJR|17/07/1987|17/07/2001|21/02/1997|Prochaine
carte
payante. - 15/01/1999. - NEH. - JG
Apparemment 8 zones avec comme séparateur "|"
1-numéro
2-nom
3-prénom
4-localisation
5-date
6-date
7-date
8-observation
Ma question......
Est-il possible d'obliger Excel se prendre comme séparateur de liste
momentanément le signe"|" en VBA ?
Actuellement je fait cela pour récupérer les infos.
Je n'ai besoin que des 3 première infos 1, 2, et 3
'--------------------------------
Private Sub CommandButton1_Click()
Dim numeros As String, nom As String, prenom As String
ad_cel = Mid(Selection.Address, 2, 1) & Right(Selection.Address, 1)
res = InputBox("Recherche de lecteur par son numéro," & Chr$(10) &
"pour
la
cellule: " & ad_cel, "Recherche")
x = Len(res)
If res = "" Then Exit Sub
Sheets("Attente").Visible = True
Worksheets("attente").Activate ' feuille d'attente
Open "d:FICHTEST.txt" For Input As #1
Do While Not EOF(1)
' Lit les données dans 1 variable.
Line Input #1, numero
If Left(numero, x) = res Then
For i = 1 To Len(numero)
If Mid(numero, i, 1) = "|" Then
num = Mid(numero, 1, i - 1)
Exit For
End If
Next i
For j = i + 1 To Len(numero)
If Mid(numero, j, 1) = "|" Then
nom = Mid(numero, i + 1, j - i - 1)
Exit For
End If
Next j
For k = j + 1 To Len(numero)
If Mid(numero, k, 1) = "|" Then
prenom = Mid(numero, j + 1, k - j - 1)
Exit For
End If
Next k
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
rep = MsgBox("le n°: " & num & " correspond au lecteur " &
Chr$(10)
&
"Nom: " & nom & Chr$(10) & "Prénom: " & prenom & Chr$(10) & Chr$(10)
&
"Voulez-vous l'attribuer à la cellule (" & ad_cel & ") selectionnée
?",
4,
"Recherche de lecteur")
If rep = 6 Then
Selection = nom & " " & prenom & Chr$(10) & num
End If
Exit Sub
End If
Loop
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
msg = MsgBox("Le lecteur dont le n° est : " & res & Chr$(10) &
"n'existe
pas. ", 0, "Fin de la recherche")
End Sub
'-----------------------
J'ai aussi essayé avec ' Input #1 ' , pour récupérer les infos les
unes
après le autres, sans succès, car dans la section 8- observation ,
il
est
permis tous les caractères. Ce qui me provoque un décalage dès que
une
virgule ou un point virgule est rencontrés.
Je cherche une solution pour améliorer ce code ou un autre code
tenant
compte de ce "|" sans en affecter Excel dans les autres
applications.
Il m'est interdit de modifier ce fichier qui est généré par un autre
logiciel.
Ouf je ne sais pas si cela est très clair.....
Merci
JJ
Salut Jacky,
as-tu essayé Split (à partir de Excel 2000) :
ce qui doit donner à peu près ....
.../...
Dim t
.../...
Line Input #1, numero
t=Split(numero,"|")
if t(0)=res then
nom=t(1)
prenom=t(2)
end if
.../...
je pense que ça doit gagner en vitesse
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" a écrit dans le message de news:Salut Pascal
Oui, bien sur, malheureusement ce fichier est en traitement constant sur
unecentaine de Pc et très évolutif.
je doit donc le consulter à l'endroit ou il se trouve à n'importe quel
moment de la journée.
Et cela ne résout pas mon problème de virgule ou autre qui me provoque
le
décalage avec input#1.
Je doit faire une recherche très rapide soit par le n°, soit par le nom.
Je trouve ma méthode un peu (beaucoup) archaïque, c'était pour cela que
je
me suis adressé au forum.
Je pense qu'il y a plus pro et plus rapide que mon code.
Cela dit , mon code trouve le dernier enregistrement en 3 seconde en
recherche par le n°, avec une copie du fichier sur mon PC. Je ne sais
pas
encore combien de temps il mettra pour une recherche sur le serveur.
Autre(s) solution(s) peut-être?
Salutations
JJ
"Pascal Engelmajer" a écrit dans le
message news: u#Salut,
sans modifier le fichier source on peut, en VBA, en faire une copie et
remplacer les | par autre chose (TAB par exemple)
puis utiliser cette copie modifiée
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" a écrit dans le message de
news:
Bonjour à tous
Je voudrais sur un fichier txt récupérer un certain nombre de
renseignements.(3 premiers )
Le fichier en lui même comporte actuellement 74580 lignes
(évolutive)
souscette forme
10174312|Oxxxxxx|Eyyy|MG|25/10/1971|27/11/2003|27/11/2002|carte
saphir
valable jusqu'au 03/02/2005
13445647|Hxxxx|Dyyyyy|LAP|21/04/1950|16/09/2004|22/12/1995|
9947824|Mxxxxx|Uyyyyt|LJR|17/07/1987|17/07/2001|21/02/1997|Prochaine
cartepayante. - 15/01/1999. - NEH. - JG
Apparemment 8 zones avec comme séparateur "|"
1-numéro
2-nom
3-prénom
4-localisation
5-date
6-date
7-date
8-observation
Ma question......
Est-il possible d'obliger Excel se prendre comme séparateur de liste
momentanément le signe"|" en VBA ?
Actuellement je fait cela pour récupérer les infos.
Je n'ai besoin que des 3 première infos 1, 2, et 3
'--------------------------------
Private Sub CommandButton1_Click()
Dim numeros As String, nom As String, prenom As String
ad_cel = Mid(Selection.Address, 2, 1) & Right(Selection.Address, 1)
res = InputBox("Recherche de lecteur par son numéro," & Chr$(10) &
"pourlacellule: " & ad_cel, "Recherche")
x = Len(res)
If res = "" Then Exit Sub
Sheets("Attente").Visible = True
Worksheets("attente").Activate ' feuille d'attente
Open "d:FICHTEST.txt" For Input As #1
Do While Not EOF(1)
' Lit les données dans 1 variable.
Line Input #1, numero
If Left(numero, x) = res Then
For i = 1 To Len(numero)
If Mid(numero, i, 1) = "|" Then
num = Mid(numero, 1, i - 1)
Exit For
End If
Next i
For j = i + 1 To Len(numero)
If Mid(numero, j, 1) = "|" Then
nom = Mid(numero, i + 1, j - i - 1)
Exit For
End If
Next j
For k = j + 1 To Len(numero)
If Mid(numero, k, 1) = "|" Then
prenom = Mid(numero, j + 1, k - j - 1)
Exit For
End If
Next k
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
rep = MsgBox("le n°: " & num & " correspond au lecteur " &
Chr$(10)&"Nom: " & nom & Chr$(10) & "Prénom: " & prenom & Chr$(10) & Chr$(10)
&
"Voulez-vous l'attribuer à la cellule (" & ad_cel & ") selectionnée
?",4,"Recherche de lecteur")
If rep = 6 Then
Selection = nom & " " & prenom & Chr$(10) & num
End If
Exit Sub
End If
Loop
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
msg = MsgBox("Le lecteur dont le n° est : " & res & Chr$(10) &
"n'existepas. ", 0, "Fin de la recherche")
End Sub
'-----------------------
J'ai aussi essayé avec ' Input #1 ' , pour récupérer les infos les
unesaprès le autres, sans succès, car dans la section 8- observation ,
il
estpermis tous les caractères. Ce qui me provoque un décalage dès que
une
virgule ou un point virgule est rencontrés.
Je cherche une solution pour améliorer ce code ou un autre code
tenant
compte de ce "|" sans en affecter Excel dans les autres
applications.
Il m'est interdit de modifier ce fichier qui est généré par un autre
logiciel.
Ouf je ne sais pas si cela est très clair.....
Merci
JJ
Re..
Ben non,,,
Je suis encore sous le bon et vieux xl 97
JJ
"Pascal Engelmajer" a écrit dans le
message news:Salut Jacky,
as-tu essayé Split (à partir de Excel 2000) :
ce qui doit donner à peu près ....
.../...
Dim t
.../...
Line Input #1, numero
t=Split(numero,"|")
if t(0)=res then
nom=t(1)
prenom=t(2)
end if
.../...
je pense que ça doit gagner en vitesse
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" a écrit dans le message de news:Salut Pascal
Oui, bien sur, malheureusement ce fichier est en traitement constant
sur
unecentaine de Pc et très évolutif.
je doit donc le consulter à l'endroit ou il se trouve à n'importe quel
moment de la journée.
Et cela ne résout pas mon problème de virgule ou autre qui me provoque
ledécalage avec input#1.
Je doit faire une recherche très rapide soit par le n°, soit par le
nom.
Je trouve ma méthode un peu (beaucoup) archaïque, c'était pour cela
que
jeme suis adressé au forum.
Je pense qu'il y a plus pro et plus rapide que mon code.
Cela dit , mon code trouve le dernier enregistrement en 3 seconde en
recherche par le n°, avec une copie du fichier sur mon PC. Je ne sais
pasencore combien de temps il mettra pour une recherche sur le serveur.
Autre(s) solution(s) peut-être?
Salutations
JJ
"Pascal Engelmajer" a écrit dans
le
message news: u#Salut,
sans modifier le fichier source on peut, en VBA, en faire une copie
et
remplacer les | par autre chose (TAB par exemple)
puis utiliser cette copie modifiée
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il
va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" a écrit dans le message de
news:Bonjour à tous
Je voudrais sur un fichier txt récupérer un certain nombre de
renseignements.(3 premiers )
Le fichier en lui même comporte actuellement 74580 lignes
(évolutive)souscette forme
10174312|Oxxxxxx|Eyyy|MG|25/10/1971|27/11/2003|27/11/2002|carte
saphirvalable jusqu'au 03/02/2005
13445647|Hxxxx|Dyyyyy|LAP|21/04/1950|16/09/2004|22/12/1995|
9947824|Mxxxxx|Uyyyyt|LJR|17/07/1987|17/07/2001|21/02/1997|Prochaine
cartepayante. - 15/01/1999. - NEH. - JG
Apparemment 8 zones avec comme séparateur "|"
1-numéro
2-nom
3-prénom
4-localisation
5-date
6-date
7-date
8-observation
Ma question......
Est-il possible d'obliger Excel se prendre comme séparateur de
liste
momentanément le signe"|" en VBA ?
Actuellement je fait cela pour récupérer les infos.
Je n'ai besoin que des 3 première infos 1, 2, et 3
'--------------------------------
Private Sub CommandButton1_Click()
Dim numeros As String, nom As String, prenom As String
ad_cel = Mid(Selection.Address, 2, 1) & Right(Selection.Address,
1)
res = InputBox("Recherche de lecteur par son numéro," & Chr$(10) &
"pourlacellule: " & ad_cel, "Recherche")
x = Len(res)
If res = "" Then Exit Sub
Sheets("Attente").Visible = True
Worksheets("attente").Activate ' feuille d'attente
Open "d:FICHTEST.txt" For Input As #1
Do While Not EOF(1)
' Lit les données dans 1 variable.
Line Input #1, numero
If Left(numero, x) = res Then
For i = 1 To Len(numero)
If Mid(numero, i, 1) = "|" Then
num = Mid(numero, 1, i - 1)
Exit For
End If
Next i
For j = i + 1 To Len(numero)
If Mid(numero, j, 1) = "|" Then
nom = Mid(numero, i + 1, j - i - 1)
Exit For
End If
Next j
For k = j + 1 To Len(numero)
If Mid(numero, k, 1) = "|" Then
prenom = Mid(numero, j + 1, k - j - 1)
Exit For
End If
Next k
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
rep = MsgBox("le n°: " & num & " correspond au lecteur " &
Chr$(10)&"Nom: " & nom & Chr$(10) & "Prénom: " & prenom & Chr$(10) &
Chr$(10)
&"Voulez-vous l'attribuer à la cellule (" & ad_cel & ")
selectionnée
?",4,"Recherche de lecteur")
If rep = 6 Then
Selection = nom & " " & prenom & Chr$(10) & num
End If
Exit Sub
End If
Loop
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
msg = MsgBox("Le lecteur dont le n° est : " & res & Chr$(10) &
"n'existepas. ", 0, "Fin de la recherche")
End Sub
'-----------------------
J'ai aussi essayé avec ' Input #1 ' , pour récupérer les infos les
unesaprès le autres, sans succès, car dans la section 8- observation ,
ilestpermis tous les caractères. Ce qui me provoque un décalage dès que
unevirgule ou un point virgule est rencontrés.
Je cherche une solution pour améliorer ce code ou un autre code
tenantcompte de ce "|" sans en affecter Excel dans les autres
applications.Il m'est interdit de modifier ce fichier qui est généré par un
autre
logiciel.
Ouf je ne sais pas si cela est très clair.....
Merci
JJ
Re..
Ben non,,,
Je suis encore sous le bon et vieux xl 97
JJ
"Pascal Engelmajer" <pascal.engelmajer@ilyapa_spam.net> a écrit dans le
message news: OdqXAW7JEHA.808@tk2msftngp13.phx.gbl...
Salut Jacky,
as-tu essayé Split (à partir de Excel 2000) :
ce qui doit donner à peu près ....
.../...
Dim t
.../...
Line Input #1, numero
t=Split(numero,"|")
if t(0)=res then
nom=t(1)
prenom=t(2)
end if
.../...
je pense que ça doit gagner en vitesse
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" <Jackyenlevez.jaeg@wanadoo.fr> a écrit dans le message de news:
urMSJI6JEHA.952@TK2MSFTNGP12.phx.gbl...
Salut Pascal
Oui, bien sur, malheureusement ce fichier est en traitement constant
sur
une
centaine de Pc et très évolutif.
je doit donc le consulter à l'endroit ou il se trouve à n'importe quel
moment de la journée.
Et cela ne résout pas mon problème de virgule ou autre qui me provoque
le
décalage avec input#1.
Je doit faire une recherche très rapide soit par le n°, soit par le
nom.
Je trouve ma méthode un peu (beaucoup) archaïque, c'était pour cela
que
je
me suis adressé au forum.
Je pense qu'il y a plus pro et plus rapide que mon code.
Cela dit , mon code trouve le dernier enregistrement en 3 seconde en
recherche par le n°, avec une copie du fichier sur mon PC. Je ne sais
pas
encore combien de temps il mettra pour une recherche sur le serveur.
Autre(s) solution(s) peut-être?
Salutations
JJ
"Pascal Engelmajer" <pascal.engelmajer@ilyapa_spam.net> a écrit dans
le
message news: u#OQdM5JEHA.556@tk2msftngp13.phx.gbl...
Salut,
sans modifier le fichier source on peut, en VBA, en faire une copie
et
remplacer les | par autre chose (TAB par exemple)
puis utiliser cette copie modifiée
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il
va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" <Jackyenlevez.jaeg@wanadoo.fr> a écrit dans le message de
news:
epje8s4JEHA.1388@TK2MSFTNGP09.phx.gbl...
Bonjour à tous
Je voudrais sur un fichier txt récupérer un certain nombre de
renseignements.(3 premiers )
Le fichier en lui même comporte actuellement 74580 lignes
(évolutive)
sous
cette forme
10174312|Oxxxxxx|Eyyy|MG|25/10/1971|27/11/2003|27/11/2002|carte
saphir
valable jusqu'au 03/02/2005
13445647|Hxxxx|Dyyyyy|LAP|21/04/1950|16/09/2004|22/12/1995|
9947824|Mxxxxx|Uyyyyt|LJR|17/07/1987|17/07/2001|21/02/1997|Prochaine
carte
payante. - 15/01/1999. - NEH. - JG
Apparemment 8 zones avec comme séparateur "|"
1-numéro
2-nom
3-prénom
4-localisation
5-date
6-date
7-date
8-observation
Ma question......
Est-il possible d'obliger Excel se prendre comme séparateur de
liste
momentanément le signe"|" en VBA ?
Actuellement je fait cela pour récupérer les infos.
Je n'ai besoin que des 3 première infos 1, 2, et 3
'--------------------------------
Private Sub CommandButton1_Click()
Dim numeros As String, nom As String, prenom As String
ad_cel = Mid(Selection.Address, 2, 1) & Right(Selection.Address,
1)
res = InputBox("Recherche de lecteur par son numéro," & Chr$(10) &
"pour
la
cellule: " & ad_cel, "Recherche")
x = Len(res)
If res = "" Then Exit Sub
Sheets("Attente").Visible = True
Worksheets("attente").Activate ' feuille d'attente
Open "d:FICHTEST.txt" For Input As #1
Do While Not EOF(1)
' Lit les données dans 1 variable.
Line Input #1, numero
If Left(numero, x) = res Then
For i = 1 To Len(numero)
If Mid(numero, i, 1) = "|" Then
num = Mid(numero, 1, i - 1)
Exit For
End If
Next i
For j = i + 1 To Len(numero)
If Mid(numero, j, 1) = "|" Then
nom = Mid(numero, i + 1, j - i - 1)
Exit For
End If
Next j
For k = j + 1 To Len(numero)
If Mid(numero, k, 1) = "|" Then
prenom = Mid(numero, j + 1, k - j - 1)
Exit For
End If
Next k
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
rep = MsgBox("le n°: " & num & " correspond au lecteur " &
Chr$(10)
&
"Nom: " & nom & Chr$(10) & "Prénom: " & prenom & Chr$(10) &
Chr$(10)
&
"Voulez-vous l'attribuer à la cellule (" & ad_cel & ")
selectionnée
?",
4,
"Recherche de lecteur")
If rep = 6 Then
Selection = nom & " " & prenom & Chr$(10) & num
End If
Exit Sub
End If
Loop
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
msg = MsgBox("Le lecteur dont le n° est : " & res & Chr$(10) &
"n'existe
pas. ", 0, "Fin de la recherche")
End Sub
'-----------------------
J'ai aussi essayé avec ' Input #1 ' , pour récupérer les infos les
unes
après le autres, sans succès, car dans la section 8- observation ,
il
est
permis tous les caractères. Ce qui me provoque un décalage dès que
une
virgule ou un point virgule est rencontrés.
Je cherche une solution pour améliorer ce code ou un autre code
tenant
compte de ce "|" sans en affecter Excel dans les autres
applications.
Il m'est interdit de modifier ce fichier qui est généré par un
autre
logiciel.
Ouf je ne sais pas si cela est très clair.....
Merci
JJ
Re..
Ben non,,,
Je suis encore sous le bon et vieux xl 97
JJ
"Pascal Engelmajer" a écrit dans le
message news:Salut Jacky,
as-tu essayé Split (à partir de Excel 2000) :
ce qui doit donner à peu près ....
.../...
Dim t
.../...
Line Input #1, numero
t=Split(numero,"|")
if t(0)=res then
nom=t(1)
prenom=t(2)
end if
.../...
je pense que ça doit gagner en vitesse
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" a écrit dans le message de news:Salut Pascal
Oui, bien sur, malheureusement ce fichier est en traitement constant
sur
unecentaine de Pc et très évolutif.
je doit donc le consulter à l'endroit ou il se trouve à n'importe quel
moment de la journée.
Et cela ne résout pas mon problème de virgule ou autre qui me provoque
ledécalage avec input#1.
Je doit faire une recherche très rapide soit par le n°, soit par le
nom.
Je trouve ma méthode un peu (beaucoup) archaïque, c'était pour cela
que
jeme suis adressé au forum.
Je pense qu'il y a plus pro et plus rapide que mon code.
Cela dit , mon code trouve le dernier enregistrement en 3 seconde en
recherche par le n°, avec une copie du fichier sur mon PC. Je ne sais
pasencore combien de temps il mettra pour une recherche sur le serveur.
Autre(s) solution(s) peut-être?
Salutations
JJ
"Pascal Engelmajer" a écrit dans
le
message news: u#Salut,
sans modifier le fichier source on peut, en VBA, en faire une copie
et
remplacer les | par autre chose (TAB par exemple)
puis utiliser cette copie modifiée
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il
va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" a écrit dans le message de
news:Bonjour à tous
Je voudrais sur un fichier txt récupérer un certain nombre de
renseignements.(3 premiers )
Le fichier en lui même comporte actuellement 74580 lignes
(évolutive)souscette forme
10174312|Oxxxxxx|Eyyy|MG|25/10/1971|27/11/2003|27/11/2002|carte
saphirvalable jusqu'au 03/02/2005
13445647|Hxxxx|Dyyyyy|LAP|21/04/1950|16/09/2004|22/12/1995|
9947824|Mxxxxx|Uyyyyt|LJR|17/07/1987|17/07/2001|21/02/1997|Prochaine
cartepayante. - 15/01/1999. - NEH. - JG
Apparemment 8 zones avec comme séparateur "|"
1-numéro
2-nom
3-prénom
4-localisation
5-date
6-date
7-date
8-observation
Ma question......
Est-il possible d'obliger Excel se prendre comme séparateur de
liste
momentanément le signe"|" en VBA ?
Actuellement je fait cela pour récupérer les infos.
Je n'ai besoin que des 3 première infos 1, 2, et 3
'--------------------------------
Private Sub CommandButton1_Click()
Dim numeros As String, nom As String, prenom As String
ad_cel = Mid(Selection.Address, 2, 1) & Right(Selection.Address,
1)
res = InputBox("Recherche de lecteur par son numéro," & Chr$(10) &
"pourlacellule: " & ad_cel, "Recherche")
x = Len(res)
If res = "" Then Exit Sub
Sheets("Attente").Visible = True
Worksheets("attente").Activate ' feuille d'attente
Open "d:FICHTEST.txt" For Input As #1
Do While Not EOF(1)
' Lit les données dans 1 variable.
Line Input #1, numero
If Left(numero, x) = res Then
For i = 1 To Len(numero)
If Mid(numero, i, 1) = "|" Then
num = Mid(numero, 1, i - 1)
Exit For
End If
Next i
For j = i + 1 To Len(numero)
If Mid(numero, j, 1) = "|" Then
nom = Mid(numero, i + 1, j - i - 1)
Exit For
End If
Next j
For k = j + 1 To Len(numero)
If Mid(numero, k, 1) = "|" Then
prenom = Mid(numero, j + 1, k - j - 1)
Exit For
End If
Next k
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
rep = MsgBox("le n°: " & num & " correspond au lecteur " &
Chr$(10)&"Nom: " & nom & Chr$(10) & "Prénom: " & prenom & Chr$(10) &
Chr$(10)
&"Voulez-vous l'attribuer à la cellule (" & ad_cel & ")
selectionnée
?",4,"Recherche de lecteur")
If rep = 6 Then
Selection = nom & " " & prenom & Chr$(10) & num
End If
Exit Sub
End If
Loop
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
msg = MsgBox("Le lecteur dont le n° est : " & res & Chr$(10) &
"n'existepas. ", 0, "Fin de la recherche")
End Sub
'-----------------------
J'ai aussi essayé avec ' Input #1 ' , pour récupérer les infos les
unesaprès le autres, sans succès, car dans la section 8- observation ,
ilestpermis tous les caractères. Ce qui me provoque un décalage dès que
unevirgule ou un point virgule est rencontrés.
Je cherche une solution pour améliorer ce code ou un autre code
tenantcompte de ce "|" sans en affecter Excel dans les autres
applications.Il m'est interdit de modifier ce fichier qui est généré par un
autre
logiciel.
Ouf je ne sais pas si cela est très clair.....
Merci
JJ
Salut,
dans ce cas il faut incorporer un bibliothèque d'expressions régulière...
(Microsoft VBScript Regular Expressions 1.0 ou Microsoft VBScript Regular
Expressions 5.5 par ex.)
...
et obtenir le tableau t avec la méthode adéquate de l'objet RegExp...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" a écrit dans le message de news:
#Re..
Ben non,,,
Je suis encore sous le bon et vieux xl 97
JJ
"Pascal Engelmajer" a écrit dans le
message news:Salut Jacky,
as-tu essayé Split (à partir de Excel 2000) :
ce qui doit donner à peu près ....
.../...
Dim t
.../...
Line Input #1, numero
t=Split(numero,"|")
if t(0)=res then
nom=t(1)
prenom=t(2)
end if
.../...
je pense que ça doit gagner en vitesse
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" a écrit dans le message de
news:
Salut Pascal
Oui, bien sur, malheureusement ce fichier est en traitement constant
surunecentaine de Pc et très évolutif.
je doit donc le consulter à l'endroit ou il se trouve à n'importe
quel
moment de la journée.
Et cela ne résout pas mon problème de virgule ou autre qui me
provoque
ledécalage avec input#1.
Je doit faire une recherche très rapide soit par le n°, soit par le
nom.Je trouve ma méthode un peu (beaucoup) archaïque, c'était pour cela
quejeme suis adressé au forum.
Je pense qu'il y a plus pro et plus rapide que mon code.
Cela dit , mon code trouve le dernier enregistrement en 3 seconde en
recherche par le n°, avec une copie du fichier sur mon PC. Je ne
sais
pasencore combien de temps il mettra pour une recherche sur le serveur.
Autre(s) solution(s) peut-être?
Salutations
JJ
"Pascal Engelmajer" a écrit dans
lemessage news: u#Salut,
sans modifier le fichier source on peut, en VBA, en faire une
copie
etremplacer les | par autre chose (TAB par exemple)
puis utiliser cette copie modifiée
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il
va."Sénèque.
http://www.ilyapa.net/excel
"Jacky" a écrit dans le message de
news:Bonjour à tous
Je voudrais sur un fichier txt récupérer un certain nombre de
renseignements.(3 premiers )
Le fichier en lui même comporte actuellement 74580 lignes
(évolutive)souscette forme
10174312|Oxxxxxx|Eyyy|MG|25/10/1971|27/11/2003|27/11/2002|carte
saphirvalable jusqu'au 03/02/2005
13445647|Hxxxx|Dyyyyy|LAP|21/04/1950|16/09/2004|22/12/1995|
9947824|Mxxxxx|Uyyyyt|LJR|17/07/1987|17/07/2001|21/02/1997|Prochainecartepayante. - 15/01/1999. - NEH. - JG
Apparemment 8 zones avec comme séparateur "|"
1-numéro
2-nom
3-prénom
4-localisation
5-date
6-date
7-date
8-observation
Ma question......
Est-il possible d'obliger Excel se prendre comme séparateur de
listemomentanément le signe"|" en VBA ?
Actuellement je fait cela pour récupérer les infos.
Je n'ai besoin que des 3 première infos 1, 2, et 3
'--------------------------------
Private Sub CommandButton1_Click()
Dim numeros As String, nom As String, prenom As String
ad_cel = Mid(Selection.Address, 2, 1) & Right(Selection.Address,
1)res = InputBox("Recherche de lecteur par son numéro," & Chr$(10)
&
"pourlacellule: " & ad_cel, "Recherche")
x = Len(res)
If res = "" Then Exit Sub
Sheets("Attente").Visible = True
Worksheets("attente").Activate ' feuille d'attente
Open "d:FICHTEST.txt" For Input As #1
Do While Not EOF(1)
' Lit les données dans 1 variable.
Line Input #1, numero
If Left(numero, x) = res Then
For i = 1 To Len(numero)
If Mid(numero, i, 1) = "|" Then
num = Mid(numero, 1, i - 1)
Exit For
End If
Next i
For j = i + 1 To Len(numero)
If Mid(numero, j, 1) = "|" Then
nom = Mid(numero, i + 1, j - i - 1)
Exit For
End If
Next j
For k = j + 1 To Len(numero)
If Mid(numero, k, 1) = "|" Then
prenom = Mid(numero, j + 1, k - j - 1)
Exit For
End If
Next k
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
rep = MsgBox("le n°: " & num & " correspond au lecteur " &
Chr$(10)&"Nom: " & nom & Chr$(10) & "Prénom: " & prenom & Chr$(10) &
Chr$(10)&"Voulez-vous l'attribuer à la cellule (" & ad_cel & ")
selectionnée?",4,"Recherche de lecteur")
If rep = 6 Then
Selection = nom & " " & prenom & Chr$(10) & num
End If
Exit Sub
End If
Loop
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
msg = MsgBox("Le lecteur dont le n° est : " & res & Chr$(10) &
"n'existepas. ", 0, "Fin de la recherche")
End Sub
'-----------------------
J'ai aussi essayé avec ' Input #1 ' , pour récupérer les infos
les
unesaprès le autres, sans succès, car dans la section 8- observation
,
ilestpermis tous les caractères. Ce qui me provoque un décalage dès
que
unevirgule ou un point virgule est rencontrés.
Je cherche une solution pour améliorer ce code ou un autre code
tenantcompte de ce "|" sans en affecter Excel dans les autres
applications.Il m'est interdit de modifier ce fichier qui est généré par un
autrelogiciel.
Ouf je ne sais pas si cela est très clair.....
Merci
JJ
Salut,
dans ce cas il faut incorporer un bibliothèque d'expressions régulière...
(Microsoft VBScript Regular Expressions 1.0 ou Microsoft VBScript Regular
Expressions 5.5 par ex.)
...
et obtenir le tableau t avec la méthode adéquate de l'objet RegExp...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" <Jackyenlevez.jaeg@wanadoo.fr> a écrit dans le message de news:
#LJYYc7JEHA.3472@TK2MSFTNGP09.phx.gbl...
Re..
Ben non,,,
Je suis encore sous le bon et vieux xl 97
JJ
"Pascal Engelmajer" <pascal.engelmajer@ilyapa_spam.net> a écrit dans le
message news: OdqXAW7JEHA.808@tk2msftngp13.phx.gbl...
Salut Jacky,
as-tu essayé Split (à partir de Excel 2000) :
ce qui doit donner à peu près ....
.../...
Dim t
.../...
Line Input #1, numero
t=Split(numero,"|")
if t(0)=res then
nom=t(1)
prenom=t(2)
end if
.../...
je pense que ça doit gagner en vitesse
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" <Jackyenlevez.jaeg@wanadoo.fr> a écrit dans le message de
news:
urMSJI6JEHA.952@TK2MSFTNGP12.phx.gbl...
Salut Pascal
Oui, bien sur, malheureusement ce fichier est en traitement constant
sur
une
centaine de Pc et très évolutif.
je doit donc le consulter à l'endroit ou il se trouve à n'importe
quel
moment de la journée.
Et cela ne résout pas mon problème de virgule ou autre qui me
provoque
le
décalage avec input#1.
Je doit faire une recherche très rapide soit par le n°, soit par le
nom.
Je trouve ma méthode un peu (beaucoup) archaïque, c'était pour cela
que
je
me suis adressé au forum.
Je pense qu'il y a plus pro et plus rapide que mon code.
Cela dit , mon code trouve le dernier enregistrement en 3 seconde en
recherche par le n°, avec une copie du fichier sur mon PC. Je ne
sais
pas
encore combien de temps il mettra pour une recherche sur le serveur.
Autre(s) solution(s) peut-être?
Salutations
JJ
"Pascal Engelmajer" <pascal.engelmajer@ilyapa_spam.net> a écrit dans
le
message news: u#OQdM5JEHA.556@tk2msftngp13.phx.gbl...
Salut,
sans modifier le fichier source on peut, en VBA, en faire une
copie
et
remplacer les | par autre chose (TAB par exemple)
puis utiliser cette copie modifiée
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il
va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" <Jackyenlevez.jaeg@wanadoo.fr> a écrit dans le message de
news:
epje8s4JEHA.1388@TK2MSFTNGP09.phx.gbl...
Bonjour à tous
Je voudrais sur un fichier txt récupérer un certain nombre de
renseignements.(3 premiers )
Le fichier en lui même comporte actuellement 74580 lignes
(évolutive)
sous
cette forme
10174312|Oxxxxxx|Eyyy|MG|25/10/1971|27/11/2003|27/11/2002|carte
saphir
valable jusqu'au 03/02/2005
13445647|Hxxxx|Dyyyyy|LAP|21/04/1950|16/09/2004|22/12/1995|
9947824|Mxxxxx|Uyyyyt|LJR|17/07/1987|17/07/2001|21/02/1997|Prochaine
carte
payante. - 15/01/1999. - NEH. - JG
Apparemment 8 zones avec comme séparateur "|"
1-numéro
2-nom
3-prénom
4-localisation
5-date
6-date
7-date
8-observation
Ma question......
Est-il possible d'obliger Excel se prendre comme séparateur de
liste
momentanément le signe"|" en VBA ?
Actuellement je fait cela pour récupérer les infos.
Je n'ai besoin que des 3 première infos 1, 2, et 3
'--------------------------------
Private Sub CommandButton1_Click()
Dim numeros As String, nom As String, prenom As String
ad_cel = Mid(Selection.Address, 2, 1) & Right(Selection.Address,
1)
res = InputBox("Recherche de lecteur par son numéro," & Chr$(10)
&
"pour
la
cellule: " & ad_cel, "Recherche")
x = Len(res)
If res = "" Then Exit Sub
Sheets("Attente").Visible = True
Worksheets("attente").Activate ' feuille d'attente
Open "d:FICHTEST.txt" For Input As #1
Do While Not EOF(1)
' Lit les données dans 1 variable.
Line Input #1, numero
If Left(numero, x) = res Then
For i = 1 To Len(numero)
If Mid(numero, i, 1) = "|" Then
num = Mid(numero, 1, i - 1)
Exit For
End If
Next i
For j = i + 1 To Len(numero)
If Mid(numero, j, 1) = "|" Then
nom = Mid(numero, i + 1, j - i - 1)
Exit For
End If
Next j
For k = j + 1 To Len(numero)
If Mid(numero, k, 1) = "|" Then
prenom = Mid(numero, j + 1, k - j - 1)
Exit For
End If
Next k
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
rep = MsgBox("le n°: " & num & " correspond au lecteur " &
Chr$(10)
&
"Nom: " & nom & Chr$(10) & "Prénom: " & prenom & Chr$(10) &
Chr$(10)
&
"Voulez-vous l'attribuer à la cellule (" & ad_cel & ")
selectionnée
?",
4,
"Recherche de lecteur")
If rep = 6 Then
Selection = nom & " " & prenom & Chr$(10) & num
End If
Exit Sub
End If
Loop
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
msg = MsgBox("Le lecteur dont le n° est : " & res & Chr$(10) &
"n'existe
pas. ", 0, "Fin de la recherche")
End Sub
'-----------------------
J'ai aussi essayé avec ' Input #1 ' , pour récupérer les infos
les
unes
après le autres, sans succès, car dans la section 8- observation
,
il
est
permis tous les caractères. Ce qui me provoque un décalage dès
que
une
virgule ou un point virgule est rencontrés.
Je cherche une solution pour améliorer ce code ou un autre code
tenant
compte de ce "|" sans en affecter Excel dans les autres
applications.
Il m'est interdit de modifier ce fichier qui est généré par un
autre
logiciel.
Ouf je ne sais pas si cela est très clair.....
Merci
JJ
Salut,
dans ce cas il faut incorporer un bibliothèque d'expressions régulière...
(Microsoft VBScript Regular Expressions 1.0 ou Microsoft VBScript Regular
Expressions 5.5 par ex.)
...
et obtenir le tableau t avec la méthode adéquate de l'objet RegExp...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" a écrit dans le message de news:
#Re..
Ben non,,,
Je suis encore sous le bon et vieux xl 97
JJ
"Pascal Engelmajer" a écrit dans le
message news:Salut Jacky,
as-tu essayé Split (à partir de Excel 2000) :
ce qui doit donner à peu près ....
.../...
Dim t
.../...
Line Input #1, numero
t=Split(numero,"|")
if t(0)=res then
nom=t(1)
prenom=t(2)
end if
.../...
je pense que ça doit gagner en vitesse
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" a écrit dans le message de
news:
Salut Pascal
Oui, bien sur, malheureusement ce fichier est en traitement constant
surunecentaine de Pc et très évolutif.
je doit donc le consulter à l'endroit ou il se trouve à n'importe
quel
moment de la journée.
Et cela ne résout pas mon problème de virgule ou autre qui me
provoque
ledécalage avec input#1.
Je doit faire une recherche très rapide soit par le n°, soit par le
nom.Je trouve ma méthode un peu (beaucoup) archaïque, c'était pour cela
quejeme suis adressé au forum.
Je pense qu'il y a plus pro et plus rapide que mon code.
Cela dit , mon code trouve le dernier enregistrement en 3 seconde en
recherche par le n°, avec une copie du fichier sur mon PC. Je ne
sais
pasencore combien de temps il mettra pour une recherche sur le serveur.
Autre(s) solution(s) peut-être?
Salutations
JJ
"Pascal Engelmajer" a écrit dans
lemessage news: u#Salut,
sans modifier le fichier source on peut, en VBA, en faire une
copie
etremplacer les | par autre chose (TAB par exemple)
puis utiliser cette copie modifiée
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il
va."Sénèque.
http://www.ilyapa.net/excel
"Jacky" a écrit dans le message de
news:Bonjour à tous
Je voudrais sur un fichier txt récupérer un certain nombre de
renseignements.(3 premiers )
Le fichier en lui même comporte actuellement 74580 lignes
(évolutive)souscette forme
10174312|Oxxxxxx|Eyyy|MG|25/10/1971|27/11/2003|27/11/2002|carte
saphirvalable jusqu'au 03/02/2005
13445647|Hxxxx|Dyyyyy|LAP|21/04/1950|16/09/2004|22/12/1995|
9947824|Mxxxxx|Uyyyyt|LJR|17/07/1987|17/07/2001|21/02/1997|Prochainecartepayante. - 15/01/1999. - NEH. - JG
Apparemment 8 zones avec comme séparateur "|"
1-numéro
2-nom
3-prénom
4-localisation
5-date
6-date
7-date
8-observation
Ma question......
Est-il possible d'obliger Excel se prendre comme séparateur de
listemomentanément le signe"|" en VBA ?
Actuellement je fait cela pour récupérer les infos.
Je n'ai besoin que des 3 première infos 1, 2, et 3
'--------------------------------
Private Sub CommandButton1_Click()
Dim numeros As String, nom As String, prenom As String
ad_cel = Mid(Selection.Address, 2, 1) & Right(Selection.Address,
1)res = InputBox("Recherche de lecteur par son numéro," & Chr$(10)
&
"pourlacellule: " & ad_cel, "Recherche")
x = Len(res)
If res = "" Then Exit Sub
Sheets("Attente").Visible = True
Worksheets("attente").Activate ' feuille d'attente
Open "d:FICHTEST.txt" For Input As #1
Do While Not EOF(1)
' Lit les données dans 1 variable.
Line Input #1, numero
If Left(numero, x) = res Then
For i = 1 To Len(numero)
If Mid(numero, i, 1) = "|" Then
num = Mid(numero, 1, i - 1)
Exit For
End If
Next i
For j = i + 1 To Len(numero)
If Mid(numero, j, 1) = "|" Then
nom = Mid(numero, i + 1, j - i - 1)
Exit For
End If
Next j
For k = j + 1 To Len(numero)
If Mid(numero, k, 1) = "|" Then
prenom = Mid(numero, j + 1, k - j - 1)
Exit For
End If
Next k
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
rep = MsgBox("le n°: " & num & " correspond au lecteur " &
Chr$(10)&"Nom: " & nom & Chr$(10) & "Prénom: " & prenom & Chr$(10) &
Chr$(10)&"Voulez-vous l'attribuer à la cellule (" & ad_cel & ")
selectionnée?",4,"Recherche de lecteur")
If rep = 6 Then
Selection = nom & " " & prenom & Chr$(10) & num
End If
Exit Sub
End If
Loop
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
msg = MsgBox("Le lecteur dont le n° est : " & res & Chr$(10) &
"n'existepas. ", 0, "Fin de la recherche")
End Sub
'-----------------------
J'ai aussi essayé avec ' Input #1 ' , pour récupérer les infos
les
unesaprès le autres, sans succès, car dans la section 8- observation
,
ilestpermis tous les caractères. Ce qui me provoque un décalage dès
que
unevirgule ou un point virgule est rencontrés.
Je cherche une solution pour améliorer ce code ou un autre code
tenantcompte de ce "|" sans en affecter Excel dans les autres
applications.Il m'est interdit de modifier ce fichier qui est généré par un
autrelogiciel.
Ouf je ne sais pas si cela est très clair.....
Merci
JJ
Re..
Pff..
Alors là, cela revient à me parler en chinois
Y aurait pas plus simple que mon code pour qu'une vieille petite tête
comme
la mienne puisse comprendre??
Ou alors je garde et m'en contente, bien que cela me désole.
JJ
"Pascal Engelmajer" a écrit dans le
message news:Salut,
dans ce cas il faut incorporer un bibliothèque d'expressions
régulière...
(Microsoft VBScript Regular Expressions 1.0 ou Microsoft VBScript
Regular
Expressions 5.5 par ex.)
...
et obtenir le tableau t avec la méthode adéquate de l'objet RegExp...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" a écrit dans le message de news:
#Re..
Ben non,,,
Je suis encore sous le bon et vieux xl 97
JJ
"Pascal Engelmajer" a écrit dans
le
message news:Salut Jacky,
as-tu essayé Split (à partir de Excel 2000) :
ce qui doit donner à peu près ....
.../...
Dim t
.../...
Line Input #1, numero
t=Split(numero,"|")
if t(0)=res then
nom=t(1)
prenom=t(2)
end if
.../...
je pense que ça doit gagner en vitesse
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il
va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" a écrit dans le message de
news:Salut Pascal
Oui, bien sur, malheureusement ce fichier est en traitement
constant
surunecentaine de Pc et très évolutif.
je doit donc le consulter à l'endroit ou il se trouve à n'importe
quelmoment de la journée.
Et cela ne résout pas mon problème de virgule ou autre qui me
provoqueledécalage avec input#1.
Je doit faire une recherche très rapide soit par le n°, soit par
le
nom.Je trouve ma méthode un peu (beaucoup) archaïque, c'était pour
cela
quejeme suis adressé au forum.
Je pense qu'il y a plus pro et plus rapide que mon code.
Cela dit , mon code trouve le dernier enregistrement en 3 seconde
en
recherche par le n°, avec une copie du fichier sur mon PC. Je ne
saispasencore combien de temps il mettra pour une recherche sur le
serveur.
Autre(s) solution(s) peut-être?
Salutations
JJ
"Pascal Engelmajer" a écrit
dans
lemessage news: u#Salut,
sans modifier le fichier source on peut, en VBA, en faire une
copieetremplacer les | par autre chose (TAB par exemple)
puis utiliser cette copie modifiée
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il
va."Sénèque.
http://www.ilyapa.net/excel
"Jacky" a écrit dans le message
de
news:Bonjour à tous
Je voudrais sur un fichier txt récupérer un certain nombre de
renseignements.(3 premiers )
Le fichier en lui même comporte actuellement 74580 lignes
(évolutive)souscette forme
10174312|Oxxxxxx|Eyyy|MG|25/10/1971|27/11/2003|27/11/2002|carte
saphirvalable jusqu'au 03/02/2005
13445647|Hxxxx|Dyyyyy|LAP|21/04/1950|16/09/2004|22/12/1995|
9947824|Mxxxxx|Uyyyyt|LJR|17/07/1987|17/07/2001|21/02/1997|Prochainecartepayante. - 15/01/1999. - NEH. - JG
Apparemment 8 zones avec comme séparateur "|"
1-numéro
2-nom
3-prénom
4-localisation
5-date
6-date
7-date
8-observation
Ma question......
Est-il possible d'obliger Excel se prendre comme séparateur de
listemomentanément le signe"|" en VBA ?
Actuellement je fait cela pour récupérer les infos.
Je n'ai besoin que des 3 première infos 1, 2, et 3
'--------------------------------
Private Sub CommandButton1_Click()
Dim numeros As String, nom As String, prenom As String
ad_cel = Mid(Selection.Address, 2, 1) &
Right(Selection.Address,
1)res = InputBox("Recherche de lecteur par son numéro," &
Chr$(10)
&"pourlacellule: " & ad_cel, "Recherche")
x = Len(res)
If res = "" Then Exit Sub
Sheets("Attente").Visible = True
Worksheets("attente").Activate ' feuille d'attente
Open "d:FICHTEST.txt" For Input As #1
Do While Not EOF(1)
' Lit les données dans 1 variable.
Line Input #1, numero
If Left(numero, x) = res Then
For i = 1 To Len(numero)
If Mid(numero, i, 1) = "|" Then
num = Mid(numero, 1, i - 1)
Exit For
End If
Next i
For j = i + 1 To Len(numero)
If Mid(numero, j, 1) = "|" Then
nom = Mid(numero, i + 1, j - i - 1)
Exit For
End If
Next j
For k = j + 1 To Len(numero)
If Mid(numero, k, 1) = "|" Then
prenom = Mid(numero, j + 1, k - j - 1)
Exit For
End If
Next k
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
rep = MsgBox("le n°: " & num & " correspond au lecteur " &
Chr$(10)&"Nom: " & nom & Chr$(10) & "Prénom: " & prenom & Chr$(10) &
Chr$(10)&"Voulez-vous l'attribuer à la cellule (" & ad_cel & ")
selectionnée?",4,"Recherche de lecteur")
If rep = 6 Then
Selection = nom & " " & prenom & Chr$(10) & num
End If
Exit Sub
End If
Loop
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
msg = MsgBox("Le lecteur dont le n° est : " & res & Chr$(10) &
"n'existepas. ", 0, "Fin de la recherche")
End Sub
'-----------------------
J'ai aussi essayé avec ' Input #1 ' , pour récupérer les infos
lesunesaprès le autres, sans succès, car dans la section 8-
observation
,ilestpermis tous les caractères. Ce qui me provoque un décalage dès
queunevirgule ou un point virgule est rencontrés.
Je cherche une solution pour améliorer ce code ou un autre
code
tenantcompte de ce "|" sans en affecter Excel dans les autres
applications.Il m'est interdit de modifier ce fichier qui est généré par un
autrelogiciel.
Ouf je ne sais pas si cela est très clair.....
Merci
JJ
Re..
Pff..
Alors là, cela revient à me parler en chinois
Y aurait pas plus simple que mon code pour qu'une vieille petite tête
comme
la mienne puisse comprendre??
Ou alors je garde et m'en contente, bien que cela me désole.
JJ
"Pascal Engelmajer" <pascal.engelmajer@ilyapa_spam.net> a écrit dans le
message news: ey1YIj7JEHA.2884@TK2MSFTNGP12.phx.gbl...
Salut,
dans ce cas il faut incorporer un bibliothèque d'expressions
régulière...
(Microsoft VBScript Regular Expressions 1.0 ou Microsoft VBScript
Regular
Expressions 5.5 par ex.)
...
et obtenir le tableau t avec la méthode adéquate de l'objet RegExp...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" <Jackyenlevez.jaeg@wanadoo.fr> a écrit dans le message de news:
#LJYYc7JEHA.3472@TK2MSFTNGP09.phx.gbl...
Re..
Ben non,,,
Je suis encore sous le bon et vieux xl 97
JJ
"Pascal Engelmajer" <pascal.engelmajer@ilyapa_spam.net> a écrit dans
le
message news: OdqXAW7JEHA.808@tk2msftngp13.phx.gbl...
Salut Jacky,
as-tu essayé Split (à partir de Excel 2000) :
ce qui doit donner à peu près ....
.../...
Dim t
.../...
Line Input #1, numero
t=Split(numero,"|")
if t(0)=res then
nom=t(1)
prenom=t(2)
end if
.../...
je pense que ça doit gagner en vitesse
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il
va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" <Jackyenlevez.jaeg@wanadoo.fr> a écrit dans le message de
news:
urMSJI6JEHA.952@TK2MSFTNGP12.phx.gbl...
Salut Pascal
Oui, bien sur, malheureusement ce fichier est en traitement
constant
sur
une
centaine de Pc et très évolutif.
je doit donc le consulter à l'endroit ou il se trouve à n'importe
quel
moment de la journée.
Et cela ne résout pas mon problème de virgule ou autre qui me
provoque
le
décalage avec input#1.
Je doit faire une recherche très rapide soit par le n°, soit par
le
nom.
Je trouve ma méthode un peu (beaucoup) archaïque, c'était pour
cela
que
je
me suis adressé au forum.
Je pense qu'il y a plus pro et plus rapide que mon code.
Cela dit , mon code trouve le dernier enregistrement en 3 seconde
en
recherche par le n°, avec une copie du fichier sur mon PC. Je ne
sais
pas
encore combien de temps il mettra pour une recherche sur le
serveur.
Autre(s) solution(s) peut-être?
Salutations
JJ
"Pascal Engelmajer" <pascal.engelmajer@ilyapa_spam.net> a écrit
dans
le
message news: u#OQdM5JEHA.556@tk2msftngp13.phx.gbl...
Salut,
sans modifier le fichier source on peut, en VBA, en faire une
copie
et
remplacer les | par autre chose (TAB par exemple)
puis utiliser cette copie modifiée
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il
va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" <Jackyenlevez.jaeg@wanadoo.fr> a écrit dans le message
de
news:
epje8s4JEHA.1388@TK2MSFTNGP09.phx.gbl...
Bonjour à tous
Je voudrais sur un fichier txt récupérer un certain nombre de
renseignements.(3 premiers )
Le fichier en lui même comporte actuellement 74580 lignes
(évolutive)
sous
cette forme
10174312|Oxxxxxx|Eyyy|MG|25/10/1971|27/11/2003|27/11/2002|carte
saphir
valable jusqu'au 03/02/2005
13445647|Hxxxx|Dyyyyy|LAP|21/04/1950|16/09/2004|22/12/1995|
9947824|Mxxxxx|Uyyyyt|LJR|17/07/1987|17/07/2001|21/02/1997|Prochaine
carte
payante. - 15/01/1999. - NEH. - JG
Apparemment 8 zones avec comme séparateur "|"
1-numéro
2-nom
3-prénom
4-localisation
5-date
6-date
7-date
8-observation
Ma question......
Est-il possible d'obliger Excel se prendre comme séparateur de
liste
momentanément le signe"|" en VBA ?
Actuellement je fait cela pour récupérer les infos.
Je n'ai besoin que des 3 première infos 1, 2, et 3
'--------------------------------
Private Sub CommandButton1_Click()
Dim numeros As String, nom As String, prenom As String
ad_cel = Mid(Selection.Address, 2, 1) &
Right(Selection.Address,
1)
res = InputBox("Recherche de lecteur par son numéro," &
Chr$(10)
&
"pour
la
cellule: " & ad_cel, "Recherche")
x = Len(res)
If res = "" Then Exit Sub
Sheets("Attente").Visible = True
Worksheets("attente").Activate ' feuille d'attente
Open "d:FICHTEST.txt" For Input As #1
Do While Not EOF(1)
' Lit les données dans 1 variable.
Line Input #1, numero
If Left(numero, x) = res Then
For i = 1 To Len(numero)
If Mid(numero, i, 1) = "|" Then
num = Mid(numero, 1, i - 1)
Exit For
End If
Next i
For j = i + 1 To Len(numero)
If Mid(numero, j, 1) = "|" Then
nom = Mid(numero, i + 1, j - i - 1)
Exit For
End If
Next j
For k = j + 1 To Len(numero)
If Mid(numero, k, 1) = "|" Then
prenom = Mid(numero, j + 1, k - j - 1)
Exit For
End If
Next k
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
rep = MsgBox("le n°: " & num & " correspond au lecteur " &
Chr$(10)
&
"Nom: " & nom & Chr$(10) & "Prénom: " & prenom & Chr$(10) &
Chr$(10)
&
"Voulez-vous l'attribuer à la cellule (" & ad_cel & ")
selectionnée
?",
4,
"Recherche de lecteur")
If rep = 6 Then
Selection = nom & " " & prenom & Chr$(10) & num
End If
Exit Sub
End If
Loop
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
msg = MsgBox("Le lecteur dont le n° est : " & res & Chr$(10) &
"n'existe
pas. ", 0, "Fin de la recherche")
End Sub
'-----------------------
J'ai aussi essayé avec ' Input #1 ' , pour récupérer les infos
les
unes
après le autres, sans succès, car dans la section 8-
observation
,
il
est
permis tous les caractères. Ce qui me provoque un décalage dès
que
une
virgule ou un point virgule est rencontrés.
Je cherche une solution pour améliorer ce code ou un autre
code
tenant
compte de ce "|" sans en affecter Excel dans les autres
applications.
Il m'est interdit de modifier ce fichier qui est généré par un
autre
logiciel.
Ouf je ne sais pas si cela est très clair.....
Merci
JJ
Re..
Pff..
Alors là, cela revient à me parler en chinois
Y aurait pas plus simple que mon code pour qu'une vieille petite tête
comme
la mienne puisse comprendre??
Ou alors je garde et m'en contente, bien que cela me désole.
JJ
"Pascal Engelmajer" a écrit dans le
message news:Salut,
dans ce cas il faut incorporer un bibliothèque d'expressions
régulière...
(Microsoft VBScript Regular Expressions 1.0 ou Microsoft VBScript
Regular
Expressions 5.5 par ex.)
...
et obtenir le tableau t avec la méthode adéquate de l'objet RegExp...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" a écrit dans le message de news:
#Re..
Ben non,,,
Je suis encore sous le bon et vieux xl 97
JJ
"Pascal Engelmajer" a écrit dans
le
message news:Salut Jacky,
as-tu essayé Split (à partir de Excel 2000) :
ce qui doit donner à peu près ....
.../...
Dim t
.../...
Line Input #1, numero
t=Split(numero,"|")
if t(0)=res then
nom=t(1)
prenom=t(2)
end if
.../...
je pense que ça doit gagner en vitesse
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il
va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" a écrit dans le message de
news:Salut Pascal
Oui, bien sur, malheureusement ce fichier est en traitement
constant
surunecentaine de Pc et très évolutif.
je doit donc le consulter à l'endroit ou il se trouve à n'importe
quelmoment de la journée.
Et cela ne résout pas mon problème de virgule ou autre qui me
provoqueledécalage avec input#1.
Je doit faire une recherche très rapide soit par le n°, soit par
le
nom.Je trouve ma méthode un peu (beaucoup) archaïque, c'était pour
cela
quejeme suis adressé au forum.
Je pense qu'il y a plus pro et plus rapide que mon code.
Cela dit , mon code trouve le dernier enregistrement en 3 seconde
en
recherche par le n°, avec une copie du fichier sur mon PC. Je ne
saispasencore combien de temps il mettra pour une recherche sur le
serveur.
Autre(s) solution(s) peut-être?
Salutations
JJ
"Pascal Engelmajer" a écrit
dans
lemessage news: u#Salut,
sans modifier le fichier source on peut, en VBA, en faire une
copieetremplacer les | par autre chose (TAB par exemple)
puis utiliser cette copie modifiée
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il
va."Sénèque.
http://www.ilyapa.net/excel
"Jacky" a écrit dans le message
de
news:Bonjour à tous
Je voudrais sur un fichier txt récupérer un certain nombre de
renseignements.(3 premiers )
Le fichier en lui même comporte actuellement 74580 lignes
(évolutive)souscette forme
10174312|Oxxxxxx|Eyyy|MG|25/10/1971|27/11/2003|27/11/2002|carte
saphirvalable jusqu'au 03/02/2005
13445647|Hxxxx|Dyyyyy|LAP|21/04/1950|16/09/2004|22/12/1995|
9947824|Mxxxxx|Uyyyyt|LJR|17/07/1987|17/07/2001|21/02/1997|Prochainecartepayante. - 15/01/1999. - NEH. - JG
Apparemment 8 zones avec comme séparateur "|"
1-numéro
2-nom
3-prénom
4-localisation
5-date
6-date
7-date
8-observation
Ma question......
Est-il possible d'obliger Excel se prendre comme séparateur de
listemomentanément le signe"|" en VBA ?
Actuellement je fait cela pour récupérer les infos.
Je n'ai besoin que des 3 première infos 1, 2, et 3
'--------------------------------
Private Sub CommandButton1_Click()
Dim numeros As String, nom As String, prenom As String
ad_cel = Mid(Selection.Address, 2, 1) &
Right(Selection.Address,
1)res = InputBox("Recherche de lecteur par son numéro," &
Chr$(10)
&"pourlacellule: " & ad_cel, "Recherche")
x = Len(res)
If res = "" Then Exit Sub
Sheets("Attente").Visible = True
Worksheets("attente").Activate ' feuille d'attente
Open "d:FICHTEST.txt" For Input As #1
Do While Not EOF(1)
' Lit les données dans 1 variable.
Line Input #1, numero
If Left(numero, x) = res Then
For i = 1 To Len(numero)
If Mid(numero, i, 1) = "|" Then
num = Mid(numero, 1, i - 1)
Exit For
End If
Next i
For j = i + 1 To Len(numero)
If Mid(numero, j, 1) = "|" Then
nom = Mid(numero, i + 1, j - i - 1)
Exit For
End If
Next j
For k = j + 1 To Len(numero)
If Mid(numero, k, 1) = "|" Then
prenom = Mid(numero, j + 1, k - j - 1)
Exit For
End If
Next k
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
rep = MsgBox("le n°: " & num & " correspond au lecteur " &
Chr$(10)&"Nom: " & nom & Chr$(10) & "Prénom: " & prenom & Chr$(10) &
Chr$(10)&"Voulez-vous l'attribuer à la cellule (" & ad_cel & ")
selectionnée?",4,"Recherche de lecteur")
If rep = 6 Then
Selection = nom & " " & prenom & Chr$(10) & num
End If
Exit Sub
End If
Loop
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
msg = MsgBox("Le lecteur dont le n° est : " & res & Chr$(10) &
"n'existepas. ", 0, "Fin de la recherche")
End Sub
'-----------------------
J'ai aussi essayé avec ' Input #1 ' , pour récupérer les infos
lesunesaprès le autres, sans succès, car dans la section 8-
observation
,ilestpermis tous les caractères. Ce qui me provoque un décalage dès
queunevirgule ou un point virgule est rencontrés.
Je cherche une solution pour améliorer ce code ou un autre
code
tenantcompte de ce "|" sans en affecter Excel dans les autres
applications.Il m'est interdit de modifier ce fichier qui est généré par un
autrelogiciel.
Ouf je ne sais pas si cela est très clair.....
Merci
JJ
Salut Pascal
Oui, bien sur, malheureusement ce fichier est en traitement constant
sur une
centaine de Pc et très évolutif.
je doit donc le consulter à l'endroit ou il se trouve à n'importe
quel
moment de la journée.
Et cela ne résout pas mon problème de virgule ou autre qui me
provoque le
décalage avec input#1.
Je doit faire une recherche très rapide soit par le n°, soit par le
nom.
Je trouve ma méthode un peu (beaucoup) archaïque, c'était pour cela
que je
me suis adressé au forum.
Je pense qu'il y a plus pro et plus rapide que mon code.
Cela dit , mon code trouve le dernier enregistrement en 3 seconde en
recherche par le n°, avec une copie du fichier sur mon PC. Je ne
sais pas
encore combien de temps il mettra pour une recherche sur le serveur.
Autre(s) solution(s) peut-être?
Salutations
JJ
"Pascal Engelmajer" a écrit dans
le
message news: u#Salut,
sans modifier le fichier source on peut, en VBA, en faire une
copie et
remplacer les | par autre chose (TAB par exemple)
puis utiliser cette copie modifiée
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il
va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" a écrit dans le message de
news:
Bonjour à tous
Je voudrais sur un fichier txt récupérer un certain nombre de
renseignements.(3 premiers )
Le fichier en lui même comporte actuellement 74580 lignes
(évolutive)
souscette forme
10174312|Oxxxxxx|Eyyy|MG|25/10/1971|27/11/2003|27/11/2002|carte
saphir
valable jusqu'au 03/02/2005
13445647|Hxxxx|Dyyyyy|LAP|21/04/1950|16/09/2004|22/12/1995|
9947824|Mxxxxx|Uyyyyt|LJR|17/07/1987|17/07/2001|21/02/1997|Prochaine
cartepayante. - 15/01/1999. - NEH. - JG
Apparemment 8 zones avec comme séparateur "|"
1-numéro
2-nom
3-prénom
4-localisation
5-date
6-date
7-date
8-observation
Ma question......
Est-il possible d'obliger Excel se prendre comme séparateur de
liste
momentanément le signe"|" en VBA ?
Actuellement je fait cela pour récupérer les infos.
Je n'ai besoin que des 3 première infos 1, 2, et 3
'--------------------------------
Private Sub CommandButton1_Click()
Dim numeros As String, nom As String, prenom As String
ad_cel = Mid(Selection.Address, 2, 1) & Right(Selection.Address,
1)
res = InputBox("Recherche de lecteur par son numéro," & Chr$(10)
& "pour
lacellule: " & ad_cel, "Recherche")
x = Len(res)
If res = "" Then Exit Sub
Sheets("Attente").Visible = True
Worksheets("attente").Activate ' feuille d'attente
Open "d:FICHTEST.txt" For Input As #1
Do While Not EOF(1)
' Lit les données dans 1 variable.
Line Input #1, numero
If Left(numero, x) = res Then
For i = 1 To Len(numero)
If Mid(numero, i, 1) = "|" Then
num = Mid(numero, 1, i - 1)
Exit For
End If
Next i
For j = i + 1 To Len(numero)
If Mid(numero, j, 1) = "|" Then
nom = Mid(numero, i + 1, j - i - 1)
Exit For
End If
Next j
For k = j + 1 To Len(numero)
If Mid(numero, k, 1) = "|" Then
prenom = Mid(numero, j + 1, k - j - 1)
Exit For
End If
Next k
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
rep = MsgBox("le n°: " & num & " correspond au lecteur " &
Chr$(10)
&"Nom: " & nom & Chr$(10) & "Prénom: " & prenom & Chr$(10) &
Chr$(10) &
"Voulez-vous l'attribuer à la cellule (" & ad_cel & ")
selectionnée ?",
4,"Recherche de lecteur")
If rep = 6 Then
Selection = nom & " " & prenom & Chr$(10) & num
End If
Exit Sub
End If
Loop
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
msg = MsgBox("Le lecteur dont le n° est : " & res & Chr$(10) &
"n'existe
pas. ", 0, "Fin de la recherche")
End Sub
'-----------------------
J'ai aussi essayé avec ' Input #1 ' , pour récupérer les infos
les unes
après le autres, sans succès, car dans la section 8- observation
, il
estpermis tous les caractères. Ce qui me provoque un décalage dès
que une
virgule ou un point virgule est rencontrés.
Je cherche une solution pour améliorer ce code ou un autre code
tenant
compte de ce "|" sans en affecter Excel dans les autres
applications.
Il m'est interdit de modifier ce fichier qui est généré par un
autre
logiciel.
Ouf je ne sais pas si cela est très clair.....
Merci
JJ
Salut Pascal
Oui, bien sur, malheureusement ce fichier est en traitement constant
sur une
centaine de Pc et très évolutif.
je doit donc le consulter à l'endroit ou il se trouve à n'importe
quel
moment de la journée.
Et cela ne résout pas mon problème de virgule ou autre qui me
provoque le
décalage avec input#1.
Je doit faire une recherche très rapide soit par le n°, soit par le
nom.
Je trouve ma méthode un peu (beaucoup) archaïque, c'était pour cela
que je
me suis adressé au forum.
Je pense qu'il y a plus pro et plus rapide que mon code.
Cela dit , mon code trouve le dernier enregistrement en 3 seconde en
recherche par le n°, avec une copie du fichier sur mon PC. Je ne
sais pas
encore combien de temps il mettra pour une recherche sur le serveur.
Autre(s) solution(s) peut-être?
Salutations
JJ
"Pascal Engelmajer" <pascal.engelmajer@ilyapa_spam.net> a écrit dans
le
message news: u#OQdM5JEHA.556@tk2msftngp13.phx.gbl...
Salut,
sans modifier le fichier source on peut, en VBA, en faire une
copie et
remplacer les | par autre chose (TAB par exemple)
puis utiliser cette copie modifiée
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il
va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" <Jackyenlevez.jaeg@wanadoo.fr> a écrit dans le message de
news:
epje8s4JEHA.1388@TK2MSFTNGP09.phx.gbl...
Bonjour à tous
Je voudrais sur un fichier txt récupérer un certain nombre de
renseignements.(3 premiers )
Le fichier en lui même comporte actuellement 74580 lignes
(évolutive)
sous
cette forme
10174312|Oxxxxxx|Eyyy|MG|25/10/1971|27/11/2003|27/11/2002|carte
saphir
valable jusqu'au 03/02/2005
13445647|Hxxxx|Dyyyyy|LAP|21/04/1950|16/09/2004|22/12/1995|
9947824|Mxxxxx|Uyyyyt|LJR|17/07/1987|17/07/2001|21/02/1997|Prochaine
carte
payante. - 15/01/1999. - NEH. - JG
Apparemment 8 zones avec comme séparateur "|"
1-numéro
2-nom
3-prénom
4-localisation
5-date
6-date
7-date
8-observation
Ma question......
Est-il possible d'obliger Excel se prendre comme séparateur de
liste
momentanément le signe"|" en VBA ?
Actuellement je fait cela pour récupérer les infos.
Je n'ai besoin que des 3 première infos 1, 2, et 3
'--------------------------------
Private Sub CommandButton1_Click()
Dim numeros As String, nom As String, prenom As String
ad_cel = Mid(Selection.Address, 2, 1) & Right(Selection.Address,
1)
res = InputBox("Recherche de lecteur par son numéro," & Chr$(10)
& "pour
la
cellule: " & ad_cel, "Recherche")
x = Len(res)
If res = "" Then Exit Sub
Sheets("Attente").Visible = True
Worksheets("attente").Activate ' feuille d'attente
Open "d:FICHTEST.txt" For Input As #1
Do While Not EOF(1)
' Lit les données dans 1 variable.
Line Input #1, numero
If Left(numero, x) = res Then
For i = 1 To Len(numero)
If Mid(numero, i, 1) = "|" Then
num = Mid(numero, 1, i - 1)
Exit For
End If
Next i
For j = i + 1 To Len(numero)
If Mid(numero, j, 1) = "|" Then
nom = Mid(numero, i + 1, j - i - 1)
Exit For
End If
Next j
For k = j + 1 To Len(numero)
If Mid(numero, k, 1) = "|" Then
prenom = Mid(numero, j + 1, k - j - 1)
Exit For
End If
Next k
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
rep = MsgBox("le n°: " & num & " correspond au lecteur " &
Chr$(10)
&
"Nom: " & nom & Chr$(10) & "Prénom: " & prenom & Chr$(10) &
Chr$(10) &
"Voulez-vous l'attribuer à la cellule (" & ad_cel & ")
selectionnée ?",
4,
"Recherche de lecteur")
If rep = 6 Then
Selection = nom & " " & prenom & Chr$(10) & num
End If
Exit Sub
End If
Loop
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
msg = MsgBox("Le lecteur dont le n° est : " & res & Chr$(10) &
"n'existe
pas. ", 0, "Fin de la recherche")
End Sub
'-----------------------
J'ai aussi essayé avec ' Input #1 ' , pour récupérer les infos
les unes
après le autres, sans succès, car dans la section 8- observation
, il
est
permis tous les caractères. Ce qui me provoque un décalage dès
que une
virgule ou un point virgule est rencontrés.
Je cherche une solution pour améliorer ce code ou un autre code
tenant
compte de ce "|" sans en affecter Excel dans les autres
applications.
Il m'est interdit de modifier ce fichier qui est généré par un
autre
logiciel.
Ouf je ne sais pas si cela est très clair.....
Merci
JJ
Salut Pascal
Oui, bien sur, malheureusement ce fichier est en traitement constant
sur une
centaine de Pc et très évolutif.
je doit donc le consulter à l'endroit ou il se trouve à n'importe
quel
moment de la journée.
Et cela ne résout pas mon problème de virgule ou autre qui me
provoque le
décalage avec input#1.
Je doit faire une recherche très rapide soit par le n°, soit par le
nom.
Je trouve ma méthode un peu (beaucoup) archaïque, c'était pour cela
que je
me suis adressé au forum.
Je pense qu'il y a plus pro et plus rapide que mon code.
Cela dit , mon code trouve le dernier enregistrement en 3 seconde en
recherche par le n°, avec une copie du fichier sur mon PC. Je ne
sais pas
encore combien de temps il mettra pour une recherche sur le serveur.
Autre(s) solution(s) peut-être?
Salutations
JJ
"Pascal Engelmajer" a écrit dans
le
message news: u#Salut,
sans modifier le fichier source on peut, en VBA, en faire une
copie et
remplacer les | par autre chose (TAB par exemple)
puis utiliser cette copie modifiée
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il
va."
Sénèque.
http://www.ilyapa.net/excel
"Jacky" a écrit dans le message de
news:
Bonjour à tous
Je voudrais sur un fichier txt récupérer un certain nombre de
renseignements.(3 premiers )
Le fichier en lui même comporte actuellement 74580 lignes
(évolutive)
souscette forme
10174312|Oxxxxxx|Eyyy|MG|25/10/1971|27/11/2003|27/11/2002|carte
saphir
valable jusqu'au 03/02/2005
13445647|Hxxxx|Dyyyyy|LAP|21/04/1950|16/09/2004|22/12/1995|
9947824|Mxxxxx|Uyyyyt|LJR|17/07/1987|17/07/2001|21/02/1997|Prochaine
cartepayante. - 15/01/1999. - NEH. - JG
Apparemment 8 zones avec comme séparateur "|"
1-numéro
2-nom
3-prénom
4-localisation
5-date
6-date
7-date
8-observation
Ma question......
Est-il possible d'obliger Excel se prendre comme séparateur de
liste
momentanément le signe"|" en VBA ?
Actuellement je fait cela pour récupérer les infos.
Je n'ai besoin que des 3 première infos 1, 2, et 3
'--------------------------------
Private Sub CommandButton1_Click()
Dim numeros As String, nom As String, prenom As String
ad_cel = Mid(Selection.Address, 2, 1) & Right(Selection.Address,
1)
res = InputBox("Recherche de lecteur par son numéro," & Chr$(10)
& "pour
lacellule: " & ad_cel, "Recherche")
x = Len(res)
If res = "" Then Exit Sub
Sheets("Attente").Visible = True
Worksheets("attente").Activate ' feuille d'attente
Open "d:FICHTEST.txt" For Input As #1
Do While Not EOF(1)
' Lit les données dans 1 variable.
Line Input #1, numero
If Left(numero, x) = res Then
For i = 1 To Len(numero)
If Mid(numero, i, 1) = "|" Then
num = Mid(numero, 1, i - 1)
Exit For
End If
Next i
For j = i + 1 To Len(numero)
If Mid(numero, j, 1) = "|" Then
nom = Mid(numero, i + 1, j - i - 1)
Exit For
End If
Next j
For k = j + 1 To Len(numero)
If Mid(numero, k, 1) = "|" Then
prenom = Mid(numero, j + 1, k - j - 1)
Exit For
End If
Next k
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
rep = MsgBox("le n°: " & num & " correspond au lecteur " &
Chr$(10)
&"Nom: " & nom & Chr$(10) & "Prénom: " & prenom & Chr$(10) &
Chr$(10) &
"Voulez-vous l'attribuer à la cellule (" & ad_cel & ")
selectionnée ?",
4,"Recherche de lecteur")
If rep = 6 Then
Selection = nom & " " & prenom & Chr$(10) & num
End If
Exit Sub
End If
Loop
Close #1
Sheets("Attente").Visible = False
Worksheets("occupation").Select
msg = MsgBox("Le lecteur dont le n° est : " & res & Chr$(10) &
"n'existe
pas. ", 0, "Fin de la recherche")
End Sub
'-----------------------
J'ai aussi essayé avec ' Input #1 ' , pour récupérer les infos
les unes
après le autres, sans succès, car dans la section 8- observation
, il
estpermis tous les caractères. Ce qui me provoque un décalage dès
que une
virgule ou un point virgule est rencontrés.
Je cherche une solution pour améliorer ce code ou un autre code
tenant
compte de ce "|" sans en affecter Excel dans les autres
applications.
Il m'est interdit de modifier ce fichier qui est généré par un
autre
logiciel.
Ouf je ne sais pas si cela est très clair.....
Merci
JJ