Bonsoir à tous les développeurs ici-présents !

Je fais appel à vos connaissances et votre aide concernant un petit soucis que je rencontre actuellement dans VB2010.
À noter que je ne connais absolument pas le VB. Je "découvre" grâce à mon entreprise qui me demande de reprendre un projet développé en interne, afin de l'améliorer et de le rendre fonctionnel (voir plus bas, c'est expliqué).


Je m'explique :
je cherche à intégrer en code VB une solution qui permet de monter un lecteur réseau. Mais il y a une petite particularité : son nom, que je souhaite modifier.

Actuellement, le plus 'facile' pour moi est de me servir de ce code VBScript :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
strDriveLetter = "Z:"
strRemotePath = "\\Serveur\Dossier1\Dossier2\Dossier3\NomduPartageARallongeQuiNenFinitAbsolumentPasEtQuiEstTotallementIllisible"
strNewName = "NomAbrégé"
 
Set objNetwork = CreateObject("WScript.Network")
objNetwork.MapNetworkDrive strDriveLetter, strRemotePath, true, "CompteUtilisateur", "MotDePasse"
Set objShell = CreateObject("Shell.Application")
objShell.NameSpace(strDriveLetter).Self.Name = strNewName
Avec ces quelques lignes, je réussis parfaitement à :
1. mapper le lecteur réseau
2. lui donner le nom que je veux.

Ainsi, grâce à ce VBScript, dans l'Explorateur de Fichiers, je ne vois plus ça :
NomduPartageARallongeQuiNenFinitAbsolumentPasEtQuiEstTotallementIllisible sur \\Serveur\Dossier1\Dossier2\Dossier3\ ( Z: )
mais ça :
NomAbrégé ( Z: )
ce qui est nettement plus clair, non ?


Mais aujourd'hui, mon entreprise me demande de reprendre un projet VB afin de le mettre à jour. Ce projet porte sur le fait que l'on puisse lancer plusieurs applications de notre choix, par le biais de CheckBoxes, via un bouton 'final' nommé "Lancer". Ainsi, si on coche 2 des 10 cases présentes, puis que l'on clique sur "LANCER", les applications cochées se lancent alors d'elles-même. Mais il y a un petit problème : c'est que ces applications sont toutes sur le fameux lecteur Z:. Vous me suivez toujours ?

Actuellement, dans ce projet VB, c'est la ligne suivante qui a été utilisée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Shell("net use Z:" & Chr(34) & "\\Serveur\Dossier1\Dossier2\Dossier3\NomduPartageARallongeQuiNenFinitAbsolumentPasEtQuiEstTotallementIllisible" & Chr(34) & " " & Chr(34) & "MotDePasse" & Chr(34) & " /user:CompteUtilisateur")
Elle s'active dès le lancement de l'application VB et monte alors le lecteur Z:, mais avec le nom à rallonge, ce qui n'est pas très... esthétique.

Moi ce que je voudrais, c'est donc pouvoir monter le lecteur, tout en lui donnant le nom que je veux. Je suppose que c'est possible à mettre en place, mais actuellement je sèche un peu. On fouillant sur le Net ainsi qu'ici, j'ai trouvé quelques codes somme-toute intéressants, mais que je n'arrive pas à faire fonctionner... Voici ce que j'ai aujourd'hui :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Private Function MapNetworkDrive() As Integer
 
        'MAPPAGE DU LECTEUR Z:
 
        'Déclaration des objets
        Dim objNetwork, objShell, objFSO As Object
        Dim ZDriveLetter, ZRemotePath, ZDriveNewName, ZUsr, ZPwd As Object
 
        'Déclaration des variables
        ZDriveLetter = "Z:"
        ZRemotePath = "\\Serveur\Dossier1\Dossier2\Dossier3\NomduPartageARallongeQuiNenFinitAbsolumentPasEtQuiEstTotallementIllisible"
        ZDriveNewName = "NomAbrégé "
        ZUsr = "CompteUtilisateur"
        ZPwd = "MotDePasse"
 
        'Instanciation des objets
        Try
            objNetwork = CreateObject("WScript.Network")
            objFSO = CreateObject("Scripting.FileSystemObject")
            'Vérification de la présence du lecteur réseau :
            If Not objFSO.DriveExists(ZDriveLetter) Then
                'Si le lecteur n'existe pas, alors on le connecte :
                objNetwork.MapNetworkDrive(ZDriveLetter, ZRemotePath, "false", ZUsr, ZPwd)
                objShell = CreateObject("Shell.Application")
                objShell.NameSpace(ZDriveLetter).Self.Name = ZDriveNewName
 
                'Le lecteur existe, alors on le déconnecte pour le remapper
            Else
                objNetwork.RemoveNetworkDrive(ZDriveLetter, True)
                objNetwork.MapNetworkDrive(ZDriveLetter, ZRemotePath, "false", ZUsr, ZPwd)
                objShell = CreateObject("Shell.Application")
                objShell.NameSpace(ZDriveLetter).Self.Name = ZDriveNewName
            End If
        Catch err As System.Exception
            'Capture de l'erreur, le cas échéant
            MsgBox("Map->" + ZDriveLetter + ZRemotePath + " || " + err.ToString)
        End Try
    End Function
Je suis sûr & certain que les développeurs que vous êtes vont grincer des dents en voyant mon code qui pourrait peut-être être épuré ou amélioré. Ce que je sais aujourd'hui, c'est que ça ne fonctionne pas. Le lecteur ne monte absolument pas, et je n'ai pas le message d'erreur non plus.

J'en appelle donc à vous pour :
1. m'aider dans la conception/amélioration de ces lignes de code
2. me dire ce qui ne va pas, en m'expliquant pourquoi (de préférence)
3. m'indiquer si l'usage des balises TRY / END TRY est pertinent, et voir si l'on peut les remplacer par d'autres, plus usuelles
4. ne pas utiliser la balise 'Catch', utilisée dans les balises TRY, qui ne me servira absolument à rien
5. m'aider à consolider la fin de mon code, car pour 'End Function' VB2010 m'affiche ce message d'avertissement :
Avertissement 1 La fonction 'MapNetworkDrive' ne retourne pas une valeur pour tous les chemins de code. Une instruction 'Return' est-elle manquante*?
D'habitude j'arrive à me dépatouiller en fouinant et testant à tour de bras. Et comme on dit, on apprend sur le tas. Alors j'apprends, comme je peux... mais comme il est de coutume pour les entreprises, c'est très souvent urgent ! ^^
Alors je vous sollicite, en espérant obtenir une (ou même plusieurs !) réponses.

En tout cas, je vous remercie de m'avoir lu jusqu'ici, en espérant avoir été suffisamment clair dans mes explications.

Dans l'attente de vous lire !


++

V77