GNT sans publicité, site mobile, fonctionnalitées exclusives...

MsgBox incontournable? - Petit casse-tête pour experts

Le
Alain \(74\)
Bonjour à tous,
Ma question est à la fin du message

Pour lister les ordinateurs connectés sur un réseau peer to peer le code
suivant est utilisé dans un formulaire possédant un bouton nommé
"cmdCréeFichier":

***Clic sur le bouton cmdCréeFichier
Private Sub cmdCréeFichier_Click()
On Error Resume Next
Dim i As Integer
Kill "C:\listeréseau.txt" 'Supprime le fichier s'il existe
Dim k As String
If Left(GetWinVersion(), 1) = "4" Then
'Sous Windows 98
k = "C:\command.com /C NET VIEW >c:\listeréseau.txt"
Else
'Sous Win XP
k = "C:\windows\system32\command.com /C NET VIEW
>c:\listeréseau.txt"
End If
'DoEvents
Shell k, vbHide
MsgBox "La liste des ordinateurs du réseau a été enregistrée dans le
fichier listeréseau.txt situé dans le répertoire C:\"
LitFichier 'Appel à la fonction "LitFichier"
End Sub
****************************
Public Function LitFichier()
Dim Contenu As String
Dim ContenuFichier
DoEvents
Open "c:\listeréseau.txt" For Input As #1
Do While Not EOF(1) 'Boucle
Line Input #1, ContenuFichier 'Lecture de la ligne
If Trim(ContenuFichier) <> "" Then
If Left(Trim(ContenuFichier), 2) = "\\" Then
ContenuFichier = Trim(Mid(ContenuFichier, 3,
InStr(ContenuFichier, Chr(32))))
If Trim(Contenu) <> "" Then
Contenu = Contenu & Chr(13) & ContenuFichier
Else
Contenu = ContenuFichier
End If
End If
End If
Loop
Close #1
DoEvents
MsgBox "Les ordinateurs du réseau sont les suivants:" & vbCrLf & Contenu
End Function
*******************************
NOTA:
Un module global contient le code suivant permettant de déterminer la
version Windows avec la fonction GetWinVersion (On considère ici que l'on
est en 98 ou en XP)

Declare Function GetVersion Lib "Kernel32" () As Long
_____________________________________________
Function GetWinVersion()
Dim ver As Long, WinVer As Long, DosVer As Long
Dim WindowsVersion As String, DosVersion As String

ver = GetVersion()

WinVer = ver And &HFFF&
GetWinVersion = Format((WinVer Mod 256) + ((WinVer \ 256) / 100),
"Fixed")
End Function
_____________________________________________

QUESTION:
On obtient un résultat lorsque la ligne suivante est présente dans le code
"sur clic" du bouton cmdCréeFichier.

MsgBox "La liste des ordinateurs du réseau a été créée." & vbCrLf & "Le
fichier listeréseau.txt a été créé dans le répertoire C:\"

Si on neutralise cette ligne en la mettant en commentaire il n'y a plus de
résultat.
Quelqu'un connaît-il l'astuce pour éviter la ligne MsgBox?

Je peux adresser le fichier exemple à ceux qui sont intéressés.

Merci pour toutes vos suggestions

AE
Lire les 5 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
John Fuss
Le #4842731
J'ai regardé vite fait, le MsgBox ne fait qu'afficher un msg message pardon)
donc ne devrait pas poser de pbl (problème encore pardon). Mais peut-être
que ce message permet au fichier 'C:listeréseau.txt' de se créer. Tu peux
donc utiliser des doEvents pour redonner la main au système (hésite pas à en
mettre plusieurs voire même dans une boucle) ou alors essayer un
Application.Wait TimeSerial(hour(now), minute(now), seconde(now)+4) pour
attendre 4 secondes.

John

"Alain (74)" news:
Bonjour à tous,
Ma question est à la fin du message...

Pour lister les ordinateurs connectés sur un réseau peer to peer le code
suivant est utilisé dans un formulaire possédant un bouton nommé
"cmdCréeFichier":

***Clic sur le bouton cmdCréeFichier
Private Sub cmdCréeFichier_Click()
On Error Resume Next
Dim i As Integer
Kill "C:listeréseau.txt" 'Supprime le fichier s'il existe
Dim k As String
If Left(GetWinVersion(), 1) = "4" Then
'Sous Windows 98
k = "C:command.com /C NET VIEW >c:listeréseau.txt"
Else
'Sous Win XP
k = "C:windowssystem32command.com /C NET VIEW
c:listeréseau.txt"
End If

'DoEvents
Shell k, vbHide
MsgBox "La liste des ordinateurs du réseau a été enregistrée dans le
fichier listeréseau.txt situé dans le répertoire C:"
LitFichier 'Appel à la fonction "LitFichier"
End Sub
****************************
Public Function LitFichier()
Dim Contenu As String
Dim ContenuFichier
DoEvents
Open "c:listeréseau.txt" For Input As #1
Do While Not EOF(1) 'Boucle
Line Input #1, ContenuFichier 'Lecture de la ligne
If Trim(ContenuFichier) <> "" Then
If Left(Trim(ContenuFichier), 2) = "\" Then
ContenuFichier = Trim(Mid(ContenuFichier, 3,
InStr(ContenuFichier, Chr(32))))
If Trim(Contenu) <> "" Then
Contenu = Contenu & Chr(13) & ContenuFichier
Else
Contenu = ContenuFichier
End If
End If
End If
Loop
Close #1
DoEvents
MsgBox "Les ordinateurs du réseau sont les suivants:" & vbCrLf &
Contenu

End Function
*******************************
NOTA:
Un module global contient le code suivant permettant de déterminer la
version Windows avec la fonction GetWinVersion (On considère ici que l'on
est en 98 ou en XP)

Declare Function GetVersion Lib "Kernel32" () As Long
_____________________________________________
Function GetWinVersion()
Dim ver As Long, WinVer As Long, DosVer As Long
Dim WindowsVersion As String, DosVersion As String

ver = GetVersion()

WinVer = ver And &HFFF&
GetWinVersion = Format((WinVer Mod 256) + ((WinVer 256) / 100),
"Fixed")
End Function
_____________________________________________

QUESTION:
On obtient un résultat lorsque la ligne suivante est présente dans le code
"sur clic" du bouton cmdCréeFichier.

MsgBox "La liste des ordinateurs du réseau a été créée." & vbCrLf & "Le
fichier listeréseau.txt a été créé dans le répertoire C:"

Si on neutralise cette ligne en la mettant en commentaire il n'y a plus de
résultat.
Quelqu'un connaît-il l'astuce pour éviter la ligne MsgBox?

Je peux adresser le fichier exemple à ceux qui sont intéressés.

Merci pour toutes vos suggestions

AE









Alain \(74\)
Le #4842611
Bonjour,
Merci pour cet avis . Je ne l'avais pas précisé mais j'ai essayé tout ça en
vain (DoEvents, Attente etc...) Rien n'y fait.
Jusqu'à trouver l'astuce, je n'ai rien trouvé d'autre que faire appel à un
Msgbox pour voir le retour d'un résultat.
A première vue il semble que ce "défaut" est lié à la fonction shell qui est
utilisée... mais je n'ai pas trouvé de documentation suffisante sur le
sujet.

PS: Je ne connais pas la méthode WAIT de l'objet Application. Elle génère
chez moi un msg d'erreur et je n'ai trouvé aucune documentation à son sujet.
Est-ce une nouveauté d'ACCESS 2003? Je suis sous 2002.
AE

"John Fuss" news:brsima$5bc$
J'ai regardé vite fait, le MsgBox ne fait qu'afficher un msg message
pardon)

donc ne devrait pas poser de pbl (problème encore pardon). Mais peut-être
que ce message permet au fichier 'C:listeréseau.txt' de se créer. Tu peux
donc utiliser des doEvents pour redonner la main au système (hésite pas à
en

mettre plusieurs voire même dans une boucle) ou alors essayer un
Application.Wait TimeSerial(hour(now), minute(now), seconde(now)+4) pour
attendre 4 secondes.

John

"Alain (74)" news:
Bonjour à tous,
Ma question est à la fin du message...

Pour lister les ordinateurs connectés sur un réseau peer to peer le code
suivant est utilisé dans un formulaire possédant un bouton nommé
"cmdCréeFichier":

***Clic sur le bouton cmdCréeFichier
Private Sub cmdCréeFichier_Click()
On Error Resume Next
Dim i As Integer
Kill "C:listeréseau.txt" 'Supprime le fichier s'il existe
Dim k As String
If Left(GetWinVersion(), 1) = "4" Then
'Sous Windows 98
k = "C:command.com /C NET VIEW >c:listeréseau.txt"
Else
'Sous Win XP
k = "C:windowssystem32command.com /C NET VIEW
c:listeréseau.txt"
End If

'DoEvents
Shell k, vbHide
MsgBox "La liste des ordinateurs du réseau a été enregistrée dans le
fichier listeréseau.txt situé dans le répertoire C:"
LitFichier 'Appel à la fonction "LitFichier"
End Sub
****************************
Public Function LitFichier()
Dim Contenu As String
Dim ContenuFichier
DoEvents
Open "c:listeréseau.txt" For Input As #1
Do While Not EOF(1) 'Boucle
Line Input #1, ContenuFichier 'Lecture de la ligne
If Trim(ContenuFichier) <> "" Then
If Left(Trim(ContenuFichier), 2) = "\" Then
ContenuFichier = Trim(Mid(ContenuFichier, 3,
InStr(ContenuFichier, Chr(32))))
If Trim(Contenu) <> "" Then
Contenu = Contenu & Chr(13) & ContenuFichier
Else
Contenu = ContenuFichier
End If
End If
End If
Loop
Close #1
DoEvents
MsgBox "Les ordinateurs du réseau sont les suivants:" & vbCrLf &
Contenu

End Function
*******************************
NOTA:
Un module global contient le code suivant permettant de déterminer la
version Windows avec la fonction GetWinVersion (On considère ici que
l'on


est en 98 ou en XP)

Declare Function GetVersion Lib "Kernel32" () As Long
_____________________________________________
Function GetWinVersion()
Dim ver As Long, WinVer As Long, DosVer As Long
Dim WindowsVersion As String, DosVersion As String

ver = GetVersion()

WinVer = ver And &HFFF&
GetWinVersion = Format((WinVer Mod 256) + ((WinVer 256) / 100),
"Fixed")
End Function
_____________________________________________

QUESTION:
On obtient un résultat lorsque la ligne suivante est présente dans le
code


"sur clic" du bouton cmdCréeFichier.

MsgBox "La liste des ordinateurs du réseau a été créée." & vbCrLf & "Le
fichier listeréseau.txt a été créé dans le répertoire C:"

Si on neutralise cette ligne en la mettant en commentaire il n'y a plus
de


résultat.
Quelqu'un connaît-il l'astuce pour éviter la ligne MsgBox?

Je peux adresser le fichier exemple à ceux qui sont intéressés.

Merci pour toutes vos suggestions

AE













3stone
Le #4842601
Salut,

"Alain (74)"
A première vue il semble que ce "défaut" est lié à la fonction shell qui est
utilisée... mais je n'ai pas trouvé de documentation suffisante sur le
sujet.



Ce n'est pas un "défaut"...
Shell n'attend pas... c'est tout ;-)

Regarde et utilise ceci : http://www.mvps.org/accessfr/apis/api0004.htm


--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------

Alain \(74\)
Le #4842571
Voilà la solution... Il fallait la trouver. M Terry Kreft fait de bien
belles choses depuis longtemps!
Merci.
AE

"3stone" news:
Salut,

"Alain (74)"
A première vue il semble que ce "défaut" est lié à la fonction shell qui
est


utilisée... mais je n'ai pas trouvé de documentation suffisante sur le
sujet.



Ce n'est pas un "défaut"...
Shell n'attend pas... c'est tout ;-)

Regarde et utilise ceci : http://www.mvps.org/accessfr/apis/api0004.htm


--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------







John Fuss
Le #4842301
Effectivement c'est sous Excel le Application.Wait.....

John

"Alain (74)" news:
Bonjour,
Merci pour cet avis . Je ne l'avais pas précisé mais j'ai essayé tout ça
en

vain (DoEvents, Attente etc...) Rien n'y fait.
Jusqu'à trouver l'astuce, je n'ai rien trouvé d'autre que faire appel à un
Msgbox pour voir le retour d'un résultat.
A première vue il semble que ce "défaut" est lié à la fonction shell qui
est

utilisée... mais je n'ai pas trouvé de documentation suffisante sur le
sujet.

PS: Je ne connais pas la méthode WAIT de l'objet Application. Elle génère
chez moi un msg d'erreur et je n'ai trouvé aucune documentation à son
sujet.

Est-ce une nouveauté d'ACCESS 2003? Je suis sous 2002.
AE

"John Fuss" news:brsima$5bc$
J'ai regardé vite fait, le MsgBox ne fait qu'afficher un msg message
pardon)

donc ne devrait pas poser de pbl (problème encore pardon). Mais
peut-être


que ce message permet au fichier 'C:listeréseau.txt' de se créer. Tu
peux


donc utiliser des doEvents pour redonner la main au système (hésite pas
à


en
mettre plusieurs voire même dans une boucle) ou alors essayer un
Application.Wait TimeSerial(hour(now), minute(now), seconde(now)+4) pour
attendre 4 secondes.

John

"Alain (74)" news:
Bonjour à tous,
Ma question est à la fin du message...

Pour lister les ordinateurs connectés sur un réseau peer to peer le
code



suivant est utilisé dans un formulaire possédant un bouton nommé
"cmdCréeFichier":

***Clic sur le bouton cmdCréeFichier
Private Sub cmdCréeFichier_Click()
On Error Resume Next
Dim i As Integer
Kill "C:listeréseau.txt" 'Supprime le fichier s'il existe
Dim k As String
If Left(GetWinVersion(), 1) = "4" Then
'Sous Windows 98
k = "C:command.com /C NET VIEW >c:listeréseau.txt"
Else
'Sous Win XP
k = "C:windowssystem32command.com /C NET VIEW
c:listeréseau.txt"
End If

'DoEvents
Shell k, vbHide
MsgBox "La liste des ordinateurs du réseau a été enregistrée dans
le



fichier listeréseau.txt situé dans le répertoire C:"
LitFichier 'Appel à la fonction "LitFichier"
End Sub
****************************
Public Function LitFichier()
Dim Contenu As String
Dim ContenuFichier
DoEvents
Open "c:listeréseau.txt" For Input As #1
Do While Not EOF(1) 'Boucle
Line Input #1, ContenuFichier 'Lecture de la ligne
If Trim(ContenuFichier) <> "" Then
If Left(Trim(ContenuFichier), 2) = "\" Then
ContenuFichier = Trim(Mid(ContenuFichier, 3,
InStr(ContenuFichier, Chr(32))))
If Trim(Contenu) <> "" Then
Contenu = Contenu & Chr(13) & ContenuFichier
Else
Contenu = ContenuFichier
End If
End If
End If
Loop
Close #1
DoEvents
MsgBox "Les ordinateurs du réseau sont les suivants:" & vbCrLf &
Contenu

End Function
*******************************
NOTA:
Un module global contient le code suivant permettant de déterminer la
version Windows avec la fonction GetWinVersion (On considère ici que
l'on


est en 98 ou en XP)

Declare Function GetVersion Lib "Kernel32" () As Long
_____________________________________________
Function GetWinVersion()
Dim ver As Long, WinVer As Long, DosVer As Long
Dim WindowsVersion As String, DosVersion As String

ver = GetVersion()

WinVer = ver And &HFFF&
GetWinVersion = Format((WinVer Mod 256) + ((WinVer 256) /
100),



"Fixed")
End Function
_____________________________________________

QUESTION:
On obtient un résultat lorsque la ligne suivante est présente dans le
code


"sur clic" du bouton cmdCréeFichier.

MsgBox "La liste des ordinateurs du réseau a été créée." & vbCrLf &
"Le



fichier listeréseau.txt a été créé dans le répertoire C:"

Si on neutralise cette ligne en la mettant en commentaire il n'y a
plus



de
résultat.
Quelqu'un connaît-il l'astuce pour éviter la ligne MsgBox?

Je peux adresser le fichier exemple à ceux qui sont intéressés.

Merci pour toutes vos suggestions

AE

















Publicité
Suivre les réponses
Poster une réponse
Anonyme