Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Tester lecteur réseau (VBA)

3 réponses
Avatar
SylVBA
Bonsoir =E0 vous,

Certaines de mes sub ne fonctionnent que si un des lecteurs r=E9seau est
connect=E9
Je cherche =E0 faire une petite fonction qui pourrait s=92inscrire en
d=E9but de certaines de mes sub, afin de v=E9rifier si oui ou non le
lecteur r=E9seau d=E9sign=E9 est disponible
Pour le cas des commerciaux, quand ils ne sont pas au bureau, ils ne
sont pas connect=E9s au r=E9seau et donc la sub plante lamentablement !!!!

Je fais d=E9j=E0 des ChDrive (+ la lettre du r=E9seau) du style
On error resume next
ChDrive "G=94
If err.number <> 0 then =85.. et donc cela =E9vite le plantage, mais
quelque fois quand il n=92est pas connect=E9, la r=E9ponse est longue =85=
=85
De plus il faudrait pouvoir mettre en argument la lettre du lecteur =E0
tester (=AB G =BB ou =AB I =BB ou =AB H =BB ou autre =85
Y a-t-il autre chose que ChDrive pour tester le lecteur r=E9seau ?
L=92id=E9al serait :
if testR=E9seau(=AB G =BB) =3D false then exit sub (il faudrait pouvoir
entrer la lettre si diff=E9rente ....

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

Je vous remercie d=92avance, je reste dans le coin et je pourrais m=EAme
le tester demain, car je bosse !!
Horrible un dimanche avant les f=EAtes !
Syl VBA

3 réponses

Avatar
Jacques93
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.
Avatar
sylvie.laurent82
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 -


Avatar
Jacques93
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 :

<http://msdn.microsoft.com/en-us/library/t9zt39at(VS.85).aspx>

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.