OVH Cloud OVH Cloud

récupération de données dans un fichier

13 réponses
Avatar
moratella
Bonjour, j'ai différents travaux à faire dans des fichiers.
Martin Clavreuil, que je remercie encore, m'a donné ces lignes pour lire
dans un fichier de type:
nom_serveur1; nom-imprimantesX
nom_serveur2;nom_imprimantesZ
nom_serveur3; nom_imprimanteG...

Nom_Imprimante=split(split(Contenu_Fichier,vbcrlf & Nom_Machine &
";")(1),vbcrlf)(0)
qui permet en fonction du nom_machine de récuperer le nom de l'imprimante.
J'avoue ne pas comprendre le focntionnement de la fonction Split.
Comment devrais je procéder afin d'obtenir dans 3 variables le contenue
d"'une ligne.
Je m'explique: j'ai un autre fichier ayant 4 colonnes:
nom_serveur1; type_imprimanteA;nom_imprimanteX;adresse_IP
nom_serveur2; type_imprimanteB;nom_imprimanteZ;adresse_IP
...
en fonction du nom de serveur que je connais, j'aimerais récupérer dans var1
le type_imprimante, dans var2 le nom_imprimante et dans var3 l'adresse IP.

J'ai fait différents tests afin d'exploiter la focntion Split mais je ne
débouche sur rien de concret.
Merci d'avance de vos idées
Raphaël

3 réponses

1 2
Avatar
Fred
Dans son message
moratella nous dit :

Merci Fred pour le complément d'info...
encore une dernière question... et oui..:-)
le select me permet bien de prendre la ligne qui contient le
nom-serveur que je connais et de récupérer par la suite les trois
autres champs avec le oRecordSet
donc si je veux effectuer cette opération à chaque fois que je
rencontre une ligne contenant le nom_serveur je dois faire :

While Not oRecordSet.EOF
Set oRecordSet = oConnection.Execute( _
"SELECT * FROM source.csv " & _
"WHERE srv='nom_serveur1'")
Type_Imp = oRecordSet("typeimp")
Nom_Imp = oRecordSet("nomimp")
Adr_Imp = oRecordSet("adrimp")
"mon module d'installation de l'imprimante"
oRecordSet.MoveNext
Wend

où alors

Set oRecordSet = oConnection.Execute( _
"SELECT * FROM source.csv " & _
"WHERE srv='nom_serveur1'")

While Not oRecordSet.EOF
Type_Imp = oRecordSet("typeimp")
Nom_Imp = oRecordSet("nomimp")
Adr_Imp = oRecordSet("adrimp")
oRecordSet.MoveNext
Wend


enfin dans cette partie:

Set oConnection=createObject( _
"ADODB.Connection")
oConnection.Open _
"Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
"Dbq=c:;" & _
"Extensions=asc,csv,tab,txt"



tu définie la connexion type base de données et je ne comprends pas
trop les associations d'extensions (asc,csv,tab,txt)
Cela transforme mon fichier .txt en .csv?

En tout cas merci de ta patience
Raphaël



Dans son message
moratella nous dit :

Fred, Jean-Marc,
Je vous remercie de l'intérêt que vous portez à mon problème.

Jean-marc as tu reçu mon mail avec les sources du script et le
fichier txt ? je suis passé par l'adresse
http://msmvps.com/docxp/contact.aspx

Fred, merci pour ta nouvelle orientation.
Si j'ai bien compris srv est l'entête de ma première colonne, mais
comment j'accede à la suite de l'enregistrement (les trois autres
colonnes).
en faite je ne désire pas les afficher mais les rentrer dans 3
variables distinctes afin d'effectuer une opération derrière
(installation d'une imprimante en locale via un outil)
(respectivement type_imprimante, nom_imprimante et adresse_ip)

En tout cas merci pour tout à vous deux
Raphaël



Dans le message:,
Bonjour et merci pour ces informations.
Suite à vos indications, je ne sais pas si cette fonction est la
plus adaptée à mes besoins.
Peut être auriez vous une autre piste pour aborder mon problème:
je dispose d'un fichier à 4 colonnes
(nom_serveur1;type_imprimanteA;nom_imprimanteXXX;adresse_ip
nom_serveur2;type_imprimanteB;nom_imprimanteYYY;adresse_ip
nom_serveur1;type_imprimanteB;nom_imprimanteZZZ;adresse_ip...)

en fonction du nom_serveur que je connais je dois récupérer dans
des variables les 3 autres champs sachant qu'il peut il y avoir
plusieur fois présent le nom_serveur.
Donc je dois parcourir l'ensemble du fichier et à chaque fois que
je croise le nom_serveur en entrée, je dois ranger les 3 autres
champs qui suivent dans des variables puis faire une opération et
recommencer jusqu'à la fin du fichier.
J'arrive à récuperer un champs mais pas trois.
En tout cas je vous remercie pour votre intervention
Raphaël

"~Jean-Marc~ [MVP]" wrote:

Salutations *~Jean-Marc~* !
Dans <news:
tu nous disais :
(par contre, je ne sais pas si on peut faire un split sur un
vbcrlf)


Correction : on peut !

Test = "Machine1" & vbcrlf & "Machine2" & vbcrlf & "Machine3"

StrArrayTemp = split(Test, vbcrlf)

for i = 0 to Ubound(StrArrayTemp)

MsgBox StrArrayTemp(i)

next

@+

--
~Jean-Marc~ MSAE & MVP Windows XP Fr
M'écrire : http://msmvps.com/docxp/contact.aspx
- http://docxp.mvps.org - http://msmvps.com/docxp/ -
Aide en DIRECT sur Internet :
http://communautes-ms.akro-net.org/



Bonjour,
Pour un tel fichier, l'utilisation d'une connexion type base de
données pourrait te simplifier la tâche.
exemple :
8<------------------------
Set oConnection=createObject( _
"ADODB.Connection")
oConnection.Open _
"Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
"Dbq=c:;" & _
"Extensions=asc,csv,tab,txt"

Set oRecordSet = oConnection.Execute( _
"SELECT * FROM source.csv " & _
"WHERE srv='nom_serveur1'")

While Not oRecordSet.EOF
MsgBox oRecordSet("srv")
oRecordSet.MoveNext
Wend
oConnection.Close
8<---------------------------

J'ai simplement ajouté une ligne d'en-tête au dessus des trois
lignes que tu donnes en exemple.
Le fichier texte ainsi obtenu est enregistré à la racine du lecteur
c: sous le nom 'source.csv'.
'srv' correspond au nom de la première colonne.
On peut faire les choses un peu plus rigoureusement en utilisant
les objets de type 'parameter' mais je pense que cela suffira
ainsi dans ton cas.

Fais attention au cas où les lignes de l'exemple seraient coupées.
Je les ai raccourci mais sait-on jamais.

--
Fred



Oui, j'avais un peu trop raccourci la ligne !
En fait tu accèdes au contenu des différentes colonnes par leur nom.
J'avais écrit oRecordSet("srv") pour récupérer le contenu de la
colonne srv. Tu peux faire de même avec :

8<------
Type_Imp = oRecordSet("typeimp")
Nom_Imp = oRecordSet("nomimp")
Adr_Imp = oRecordSet("adrimp")
8<-------

Ici tu récupères les données dans trois variables comme tu le
souhaitais.

Je suppose bien sûr que typeimp, nomimp et adrimp sont les en-têtes
des trois dernière colonnes.
Tu peux aussi supprimer la clause WHERE que j'avais mis pour
l'exemple et illustrer le fait qu'on a une grande souplesse pour
l'extraction des données.
La ligne deviendrait :

8<---------
Set oRecordSet = oConnection.Execute( _
"SELECT * FROM source.csv "
8<---------

--
Fred



Bon, j'ai approfondi un peu les choses, cela ne fait pas de mal.
D'une part, j'ai apporté une correction très importante à la requête car je
n'avais pas tenu compte du fait que les lignes du fichier ne sont pas
ordonnées selon le nom des serveurs.
D'autre part, j'ai fait deux oublis dans le traitement (et à titre d'exemple
j'ai fait un traitement simple qui consiste à afficher la liste des
imprimantes de chaque serveur)
Enfin, j'ai réglé le problème de la ligne d'en-tête et testé avec un fichier
d'extension .txt
Il suffit de créer un fichier schema.ini dans le même répertoire que le
fichier source (que j'ai donc renommé en source.txt)
Ce fichier schema.ini doit contenir les lignes suivantes :

8<--------------------
[source.txt]
FormatÞlimited(;)
ColNameHeaderúlse
Col1=srv Text
Col2=typeimp Text
Col3=nomimp Text
Col4­rimp Text
8<--------------------

Commentaires :
Entre crochets figure le nom du fichier à scanner.
FormatÞlimited(;) indique que les colonnes sont séparées par un ;
ColNameHeaderúlse indique que les données commencent dès la première ligne
(pas de ligne d'en-tête)
Et bien sûr puisqu'il n'y a pas de ligne d'en-tête, on nomme ensuite les
différentes colonnes en précisant le type de données.

Toutes les références précises ici :
http://msdn.microsoft.com/library/en-us/odbc/htm/odbcjetschema_ini_file.asp

Et voici le programme de test corrigé et annoté
8<----------------------
Dim ServeurPrec
Dim ServeurCour
Dim Msg

Set oConnection=createObject( _
"ADODB.Connection")
oConnection.Open _
"Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
"Dbq=c:;" & _
"Extensions=asc,csv,tab,txt"

'J'avais, ci-dessous, oublié le ORDER BY srv
Set oRecordSet = oConnection.Execute( _
"SELECT * FROM source.txt " & _
"ORDER BY srv")

ServeurPrec = ""
While Not oRecordSet.EOF
ServeurCour = oRecordSet("srv")
Type_Imp = oRecordSet("typeimp")
Nom_Imp = oRecordSet("nomimp")
Adr_Imp = oRecordSet("adrimp")

If ServeurCour <> ServeurPrec Then
'Faire ici un éventuel traitement final
'avant de passer à un autre serveur.
'A condition que ce ne soit pas le
'premier tour de boucle.
'Dans mon exemple, cela consiste
'à afficher le message (liste des imp.)

If ServeurPrec <> "" Then
MsgBox Msg
End If

'Faire ici les initialisations liées au traitement
'd'un nouveau serveur (si nécessaire).
'Dans mon exemple, cela consiste
'à réinitialiser le message avec le nom du
'nouveau serveur et un retour à la ligne.

Msg = ServeurCour & vbCrLf

'Grace à la ligne qui suit, on saura, au prochain
'tour de boucle si on traite toujours le même
'serveur (ou si on change encore).

ServeurPrec = ServeurCour
End If

'Faire ici le traitement lié à l'imprimante
'Dans mon exemple cela consiste à ajouter
'au message les informations imprimante
'avec un retour à la ligne.

Msg = Msg & Type_Imp & " - " & Nom_Imp & " - " & Adr_Imp & vbCrLf

oRecordSet.MoveNext
Wend

'Faire ici le traitement final du dernier serveur
'Donc affichage du dernier message
MsgBox Msg

oConnection.Close

8<----------------------

PS : si le fichier est vide, cela affiche un message vide. Cela peut faire
l'objet d'un traitement particulier.

D'où vient ce fichier à propos ? Ce n'est pas d'une base de données par
hasard ? ;-)



--
Fred







Avatar
moratella
Bonjour Jean-Marc,
Merci pour le temps passé dessus.
Cela correespond parfaitement à ce que je souhaite.
SI je pars sur le principe de tableau pour les variables, je crois
effectivement que 10 imprimantes par serveur risque d'être juste. Je vais
opter pour 50 c'esr plus sur.
Fred m'a apporté une autre approche orienté connection BDD qui ai également
fort intéressant.J'étais loin d'imaginer qu'on pouvait tout ça en script. La
solution de Fred est un peu moins approprié pur mon pb mais je pense
l'integrer sur d'autre script.
En tout cas un grand merci à vous deux
Bonne continuation messieurs
Raphaël



Salutations *moratella* !
Dans <news:
tu nous disais :
Jean-marc as tu reçu mon mail avec les sources du script et le
fichier txt ?


Bien reçu !

Si j'ai bien compris ce que tu veux, ça devrait convenir :

Option explicit

Const ForReading = 1
Dim fso, Fichier, strTmp, Compt, ArrTmp, i
'On suppose qu'il n'y aura pas plus de 10 imprimantes pour le serveur
'Mais on peut monter à 50 ou 100 par sécurité ;-)
Dim nom_serveur(10), type_imprimante(10), nom_imprimante(10), adresse_ip(10)
Set fso = WScript.CreateObject("Scripting.FileSystemObject")

Const FilePath = "C:Imprimantes.txt"
Const Serveur = "S0I354" 'toujours en majuscules

if fso.fileExists(FilePath) then
Compt = 0
Set Fichier = fso.OpenTextFile(FilePath, ForReading, False)
Do While Fichier.AtEndOfStream <> True
strTmp = Fichier.ReadLine
ArrTmp = split(strTmp, ";")
' Si il y a 4 valeurs sur la ligne et si la première
' valeur correspond au nom du serveur
if (Ubound(ArrTmp) = 3) and (Ucase(ArrTmp(0)) = Serveur) then
nom_serveur(Compt) = ArrTmp(0)
type_imprimante(Compt) = ArrTmp(1)
nom_imprimante(Compt) = ArrTmp(2)
adresse_ip(Compt) = ArrTmp(3)
Compt = Compt + 1
end if
Loop
Fichier.Close
else
MsgBox "Fichier de configuration : " & FilePath & " non trouvé."
WScript.quit
End if

for i = 0 to Compt - 1
' traitement imprimante par imprimante
' MsgBox pour test
MsgBox nom_serveur(i) & " / " & _
type_imprimante(i) & " / " & _
nom_imprimante(i) & " / " & _
adresse_ip(i), 32
next

@+

--
~Jean-Marc~ MSAE & MVP Windows XP Fr
M'écrire : http://msmvps.com/docxp/contact.aspx
- http://docxp.mvps.org - http://msmvps.com/docxp/ -
Aide en DIRECT sur Internet : http://communautes-ms.akro-net.org/





Avatar
moratella
Encore mille mercis Fred
Désolé de répondre si tard mais réunionite aigue ce matin...
C'est nickel comme approche. Entre toi et Jean-Marc, vous m'avez amené vers
deux solutions différentes mais qui conviennent toutes deux à mon problème.
Et ton approche type base données me plait bien et risque de me servir pour
d'autres choses.
Concernat le fichier Txt, ce n'est pas une base de données à proprement dit.
C'est juste un fichier Txt regroupant l'ensemble des serveurs d'impression
d'une société (mon client) et la liste (avec nom, adresse IP et type
d'imprimante) des imprimantes de chacun des serveurs.
A partir de Ce fichier et via un script en VBS et un produit qui permet
l'installation des imprimantes, lorsqu'une nouvelle imprimante est installée,
il suffit de la saisir dans le fichier Txt et la nuit elle s'installera en
silencieux sur le serveur (faut avoir mis les drivers sur un partage avant).
Enfin un autre script qui s'execute à chaque connexion sur un poste
installera les imrpimantes réseaux via le serveur d'impression.
Voilà la finalité,... ce que client veut...:-)
En tout cas merci pour tout
Raphaël



Dans son message
moratella nous dit :

Merci Fred pour le complément d'info...
encore une dernière question... et oui..:-)
le select me permet bien de prendre la ligne qui contient le
nom-serveur que je connais et de récupérer par la suite les trois
autres champs avec le oRecordSet
donc si je veux effectuer cette opération à chaque fois que je
rencontre une ligne contenant le nom_serveur je dois faire :

While Not oRecordSet.EOF
Set oRecordSet = oConnection.Execute( _
"SELECT * FROM source.csv " & _
"WHERE srv='nom_serveur1'")
Type_Imp = oRecordSet("typeimp")
Nom_Imp = oRecordSet("nomimp")
Adr_Imp = oRecordSet("adrimp")
"mon module d'installation de l'imprimante"
oRecordSet.MoveNext
Wend

où alors

Set oRecordSet = oConnection.Execute( _
"SELECT * FROM source.csv " & _
"WHERE srv='nom_serveur1'")

While Not oRecordSet.EOF
Type_Imp = oRecordSet("typeimp")
Nom_Imp = oRecordSet("nomimp")
Adr_Imp = oRecordSet("adrimp")
oRecordSet.MoveNext
Wend


enfin dans cette partie:

Set oConnection=createObject( _
"ADODB.Connection")
oConnection.Open _
"Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
"Dbq=c:;" & _
"Extensions=asc,csv,tab,txt"



tu définie la connexion type base de données et je ne comprends pas
trop les associations d'extensions (asc,csv,tab,txt)
Cela transforme mon fichier .txt en .csv?

En tout cas merci de ta patience
Raphaël



Dans son message
moratella nous dit :

Fred, Jean-Marc,
Je vous remercie de l'intérêt que vous portez à mon problème.

Jean-marc as tu reçu mon mail avec les sources du script et le
fichier txt ? je suis passé par l'adresse
http://msmvps.com/docxp/contact.aspx

Fred, merci pour ta nouvelle orientation.
Si j'ai bien compris srv est l'entête de ma première colonne, mais
comment j'accede à la suite de l'enregistrement (les trois autres
colonnes).
en faite je ne désire pas les afficher mais les rentrer dans 3
variables distinctes afin d'effectuer une opération derrière
(installation d'une imprimante en locale via un outil)
(respectivement type_imprimante, nom_imprimante et adresse_ip)

En tout cas merci pour tout à vous deux
Raphaël



Dans le message:,
Bonjour et merci pour ces informations.
Suite à vos indications, je ne sais pas si cette fonction est la
plus adaptée à mes besoins.
Peut être auriez vous une autre piste pour aborder mon problème:
je dispose d'un fichier à 4 colonnes
(nom_serveur1;type_imprimanteA;nom_imprimanteXXX;adresse_ip
nom_serveur2;type_imprimanteB;nom_imprimanteYYY;adresse_ip
nom_serveur1;type_imprimanteB;nom_imprimanteZZZ;adresse_ip...)

en fonction du nom_serveur que je connais je dois récupérer dans
des variables les 3 autres champs sachant qu'il peut il y avoir
plusieur fois présent le nom_serveur.
Donc je dois parcourir l'ensemble du fichier et à chaque fois que
je croise le nom_serveur en entrée, je dois ranger les 3 autres
champs qui suivent dans des variables puis faire une opération et
recommencer jusqu'à la fin du fichier.
J'arrive à récuperer un champs mais pas trois.
En tout cas je vous remercie pour votre intervention
Raphaël

"~Jean-Marc~ [MVP]" wrote:

Salutations *~Jean-Marc~* !
Dans <news:
tu nous disais :
(par contre, je ne sais pas si on peut faire un split sur un
vbcrlf)


Correction : on peut !

Test = "Machine1" & vbcrlf & "Machine2" & vbcrlf & "Machine3"

StrArrayTemp = split(Test, vbcrlf)

for i = 0 to Ubound(StrArrayTemp)

MsgBox StrArrayTemp(i)

next

@+

--
~Jean-Marc~ MSAE & MVP Windows XP Fr
M'écrire : http://msmvps.com/docxp/contact.aspx
- http://docxp.mvps.org - http://msmvps.com/docxp/ -
Aide en DIRECT sur Internet :
http://communautes-ms.akro-net.org/



Bonjour,
Pour un tel fichier, l'utilisation d'une connexion type base de
données pourrait te simplifier la tâche.
exemple :
8<------------------------
Set oConnection=createObject( _
"ADODB.Connection")
oConnection.Open _
"Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
"Dbq=c:;" & _
"Extensions=asc,csv,tab,txt"

Set oRecordSet = oConnection.Execute( _
"SELECT * FROM source.csv " & _
"WHERE srv='nom_serveur1'")

While Not oRecordSet.EOF
MsgBox oRecordSet("srv")
oRecordSet.MoveNext
Wend
oConnection.Close
8<---------------------------

J'ai simplement ajouté une ligne d'en-tête au dessus des trois
lignes que tu donnes en exemple.
Le fichier texte ainsi obtenu est enregistré à la racine du lecteur
c: sous le nom 'source.csv'.
'srv' correspond au nom de la première colonne.
On peut faire les choses un peu plus rigoureusement en utilisant
les objets de type 'parameter' mais je pense que cela suffira
ainsi dans ton cas.

Fais attention au cas où les lignes de l'exemple seraient coupées.
Je les ai raccourci mais sait-on jamais.

--
Fred



Oui, j'avais un peu trop raccourci la ligne !
En fait tu accèdes au contenu des différentes colonnes par leur nom.
J'avais écrit oRecordSet("srv") pour récupérer le contenu de la
colonne srv. Tu peux faire de même avec :

8<------
Type_Imp = oRecordSet("typeimp")
Nom_Imp = oRecordSet("nomimp")
Adr_Imp = oRecordSet("adrimp")
8<-------

Ici tu récupères les données dans trois variables comme tu le
souhaitais.

Je suppose bien sûr que typeimp, nomimp et adrimp sont les en-têtes
des trois dernière colonnes.
Tu peux aussi supprimer la clause WHERE que j'avais mis pour
l'exemple et illustrer le fait qu'on a une grande souplesse pour
l'extraction des données.
La ligne deviendrait :

8<---------
Set oRecordSet = oConnection.Execute( _
"SELECT * FROM source.csv "
8<---------

--
Fred



Bon, j'ai approfondi un peu les choses, cela ne fait pas de mal.
D'une part, j'ai apporté une correction très importante à la requête car je
n'avais pas tenu compte du fait que les lignes du fichier ne sont pas
ordonnées selon le nom des serveurs.
D'autre part, j'ai fait deux oublis dans le traitement (et à titre d'exemple
j'ai fait un traitement simple qui consiste à afficher la liste des
imprimantes de chaque serveur)
Enfin, j'ai réglé le problème de la ligne d'en-tête et testé avec un fichier
d'extension .txt
Il suffit de créer un fichier schema.ini dans le même répertoire que le
fichier source (que j'ai donc renommé en source.txt)
Ce fichier schema.ini doit contenir les lignes suivantes :

8<--------------------
[source.txt]
FormatÞlimited(;)
ColNameHeaderúlse
Col1=srv Text
Col2=typeimp Text
Col3=nomimp Text
Col4­rimp Text
8<--------------------

Commentaires :
Entre crochets figure le nom du fichier à scanner.
FormatÞlimited(;) indique que les colonnes sont séparées par un ;
ColNameHeaderúlse indique que les données commencent dès la première ligne
(pas de ligne d'en-tête)
Et bien sûr puisqu'il n'y a pas de ligne d'en-tête, on nomme ensuite les
différentes colonnes en précisant le type de données.

Toutes les références précises ici :
http://msdn.microsoft.com/library/en-us/odbc/htm/odbcjetschema_ini_file.asp

Et voici le programme de test corrigé et annoté
8<----------------------
Dim ServeurPrec
Dim ServeurCour
Dim Msg

Set oConnection=createObject( _
"ADODB.Connection")
oConnection.Open _
"Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
"Dbq=c:;" & _
"Extensions=asc,csv,tab,txt"

'J'avais, ci-dessous, oublié le ORDER BY srv
Set oRecordSet = oConnection.Execute( _
"SELECT * FROM source.txt " & _
"ORDER BY srv")

ServeurPrec = ""
While Not oRecordSet.EOF
ServeurCour = oRecordSet("srv")
Type_Imp = oRecordSet("typeimp")
Nom_Imp = oRecordSet("nomimp")
Adr_Imp = oRecordSet("adrimp")

If ServeurCour <> ServeurPrec Then
'Faire ici un éventuel traitement final
'avant de passer à un autre serveur.
'A condition que ce ne soit pas le
'premier tour de boucle.
'Dans mon exemple, cela consiste
'à afficher le message (liste des imp.)

If ServeurPrec <> "" Then
MsgBox Msg
End If

'Faire ici les initialisations liées au traitement
'd'un nouveau serveur (si nécessaire).
'Dans mon exemple, cela consiste
'à réinitialiser le message avec le nom du
'nouveau serveur et un retour à la ligne.

Msg = ServeurCour & vbCrLf

'Grace à la ligne qui suit, on saura, au prochain
'tour de boucle si on traite toujours le même
'serveur (ou si on change encore).

ServeurPrec = ServeurCour
End If

'Faire ici le traitement lié à l'imprimante
'Dans mon exemple cela consiste à ajouter
'au message les informations imprimante
'avec un retour à la ligne.

Msg = Msg & Type_Imp & " - " & Nom_Imp & " - " & Adr_Imp & vbCrLf

oRecordSet.MoveNext
Wend

'Faire ici le traitement final du dernier serveur
'Donc affichage du dernier message
MsgBox Msg

oConnection.Close

8<----------------------

PS : si le fichier est vide, cela affiche un message vide. Cela peut faire
l'objet d'un traitement particulier.

D'où vient ce fichier à propos ? Ce n'est pas d'une base de données par
hasard ? ;-)



--
Fred













1 2