Tester lecteur réseau (VBA)

Le
SylVBA
Bonsoir à vous,

Certaines de mes sub ne fonctionnent que si un des lecteurs réseau est
connecté
Je cherche à faire une petite fonction qui pourrait s’inscrire en
début de certaines de mes sub, afin de vérifier si oui ou non le
lecteur réseau désigné est disponible
Pour le cas des commerciaux, quand ils ne sont pas au bureau, ils ne
sont pas connectés au réseau et donc la sub plante lamentablement !!!!

Je fais déjà des ChDrive (+ la lettre du réseau) du style
On error resume next
ChDrive "G”
If err.number <> 0 then ….. et donc cela évite le plantage, mais
quelque fois quand il n’est pas connecté, la réponse est longue …=
…
De plus il faudrait pouvoir mettre en argument la lettre du lecteur à
tester (« G » ou « I » ou « H » ou autre …
Y a-t-il autre chose que ChDrive pour tester le lecteur réseau ?
L’idéal serait :
if testRéseau(« G ») = false then exit sub (il faudrait pouvoir
entrer la lettre si différente .

Votre gentillesse pourrait elle m’aider et me guider pour trouer LA
solution ?

Je vous remercie d’avance, je reste dans le coin et je pourrais même
le tester demain, car je bosse !!
Horrible un dimanche avant les fêtes !
Syl VBA
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
Jacques93
Le #18066971
Bonjour SylVBA,

Par exemple, à adapter :

Private Sub CommandButton1_Click()
Dim Drv As String

Drv = "X"
MsgBox Drv & " connecté : " & DriveConnected(Drv)
End Sub

Private Function DriveConnected(DriveLetter As String) As Boolean
DriveConnected = (InStr(GetNetworkDrives, DriveLetter) > 0)
End Function

Private Function GetNetworkDrives() As String
Dim WshNetwork As Object
Dim oDrives As Object
Dim Tmp As String

Set WshNetwork = CreateObject("WScript.Network")
Set oDrives = WshNetwork.EnumNetworkDrives
For i = 0 To oDrives.Count - 1 Step 2
Debug.Print "Drive " & oDrives.Item(i) & " = " & oDrives.Item(i + 1)
Tmp = Tmp & oDrives(i)
Next

Set oDrives = Nothing
Set WshNetwork = Nothing
GetNetworkDrives = Tmp
End Function

SylVBA a écrit :
Bonsoir à vous,

Certaines de mes sub ne fonctionnent que si un des lecteurs réseau est
connecté
Je cherche à faire une petite fonction qui pourrait s’inscrire en
début de certaines de mes sub, afin de vérifier si oui ou non le
lecteur réseau désigné est disponible
Pour le cas des commerciaux, quand ils ne sont pas au bureau, ils ne
sont pas connectés au réseau et donc la sub plante lamentablement !!!!

Je fais déjà des ChDrive (+ la lettre du réseau) du style
On error resume next
ChDrive "G”
If err.number <> 0 then ….. et donc cela évite le plantage, mais
quelque fois quand il n’est pas connecté, la réponse est longue ……
De plus il faudrait pouvoir mettre en argument la lettre du lecteur à
tester (« G » ou « I » ou « H » ou autre …
Y a-t-il autre chose que ChDrive pour tester le lecteur réseau ?
L’idéal serait :
if testRéseau(« G ») = false then exit sub (il faudrait pouvoir
entrer la lettre si différente ....

Votre gentillesse pourrait elle m’aider et me guider pour trouer LA
solution ?

Je vous remercie d’avance, je reste dans le coin et je pourrais même
le tester demain, car je bosse !!
Horrible un dimanche avant les fêtes !
Syl VBA




--

Cordialement,

Jacques.
sylvie.laurent82
Le #18070161
Bonjour Jacques,

Merci cela fonctionne parfaitement,

J'ai adapté la ligne de test comme ceci:

If DriveConnected("G") = False Then MsgBox "Réseau non connecté ...
fonction indisponible..", vbCritical, "Fin du Process": Exit Sub

Il ne cherche QUE les lecteurs réseau, pas les disques dur externe ou
clés USB ?

Ton code est très bien, on aurait pas pu faire en une seule fonction ?

c'est vrai que je ne comprends pas tout dans la deuxième fonction,
mais je travaille

Au plaisir, je reste là !! (plantée devant MPFE comme souvent)

Un grand merci à vous les contributeurs, sans vous nous n'aurions pas
de petits secrest !!!

Syl VBA




On 6 déc, 22:48, Jacques93 wrote:
Bonjour SylVBA,

Par exemple, à adapter :

Private Sub CommandButton1_Click()
   Dim Drv As String

   Drv = "X"
   MsgBox Drv & " connecté : " & DriveConnected(Drv)
End Sub

Private Function DriveConnected(DriveLetter As String) As Boolean
    DriveConnected = (InStr(GetNetworkDrives, DriveLetter) > 0)
End Function

Private Function GetNetworkDrives() As String
   Dim WshNetwork As Object
   Dim oDrives As Object
   Dim Tmp As String

   Set WshNetwork = CreateObject("WScript.Network")
   Set oDrives = WshNetwork.EnumNetworkDrives
   For i = 0 To oDrives.Count - 1 Step 2
     Debug.Print "Drive " & oDrives.Item(i) & " = " & oDrives.Ite m(i + 1)
     Tmp = Tmp & oDrives(i)
   Next

   Set oDrives = Nothing
   Set WshNetwork = Nothing
   GetNetworkDrives = Tmp
End Function

SylVBA a écrit :





> Bonsoir à vous,

> Certaines de mes sub ne fonctionnent que si un des lecteurs réseau es t
> connecté
> Je cherche à faire une petite fonction qui pourrait s’inscrire en
> début de certaines de mes sub, afin de vérifier si oui ou non le
> lecteur réseau désigné est disponible
> Pour le cas des commerciaux, quand ils ne sont pas au bureau, ils ne
> sont pas connectés au réseau et donc la sub plante lamentablement ! !!!

> Je fais déjà des ChDrive (+ la lettre du réseau) du style
> On error resume next
> ChDrive "G”
> If err.number <> 0 then ….. et donc cela évite le plantage, mais
> quelque fois quand il n’est pas connecté, la réponse est longue ……
> De plus il faudrait pouvoir mettre en argument la lettre du lecteur à
> tester (« G » ou « I » ou « H » ou autre …
> Y a-t-il autre chose que ChDrive pour tester le lecteur réseau ?
> L’idéal serait :
> if  testRéseau(« G ») = false then exit sub (il faudrait pouv oir
> entrer la lettre si différente ....

> Votre gentillesse pourrait elle m’aider et me guider pour trouer LA
> solution ?

> Je vous remercie d’avance, je reste dans le coin et je pourrais mêm e
> le tester demain, car je bosse !!
> Horrible un dimanche avant les fêtes !
> Syl VBA

--

Cordialement,

Jacques.- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Jacques93
Le #18070661
Bonjour,

a écrit :

Bonjour Jacques,

Merci cela fonctionne parfaitement,

J'ai adapté la ligne de test comme ceci:

If DriveConnected("G") = False Then MsgBox "Réseau non connecté ...
fonction indisponible..", vbCritical, "Fin du Process": Exit Sub

Il ne cherche QUE les lecteurs réseau, pas les disques dur externe ou
clés USB ?



En fait cela renvoie les partages réseaux, cela peut donc être un
répertoire ou un disque local mappé. Si tu regardes la fenêtre de Debug
tu dois y voir quelque chose du genre :

X: = \Nom de machineNom de resource

Tu peux aussi obtenir ces informations avec la fonction NET USE dans une
invite de commande

Ton code est très bien, on aurait pas pu faire en une seule fonction ?




Si, mais j'ai pris l'habitude de découper, ça simplifie la lecture je
trouve, et la mise au point ...

c'est vrai que je ne comprends pas tout dans la deuxième fonction,



Pour la méthode EnumNetWorkDrives :


mais je travaille

Au plaisir, je reste là !! (plantée devant MPFE comme souvent)

Un grand merci à vous les contributeurs, sans vous nous n'aurions pas
de petits secrest !!!

Syl VBA




82 , On ne devrait jamais quitter Montauban ? ;-)

--

Cordialement,

Jacques.
Publicité
Poster une réponse
Anonyme