Choisir une lettre non utilisée pour monter un lecteur réseau

Bonjour,

J'ai besoin de supprimer des fichiers hébergés dans une bibliothèque de documents SharePoint avec VBA. Pour y arriver, j'affiche cette bibliothèque de documents directement sur mon ordinateur, tel un lecteur réseau. J'y arrive grâce à ce bout de code compilé dans ma procédure :

    ' Création sur l'ordinateur, d'un lecteur réseau 'X' contenant le dossier SharePoint où se trouve le fichier original :
    spPath = PathFileO & "/"
    Set spMap = CreateObject("WScript.Network")
    spMap.MapNetworkDrive "X:", spPath
    DoEvents

    ' Suppression du fichier :
    Kill "X:\" & NameFileO

    ' Suppression du lecteur réseau 'X' :
    spMap.RemoveNetworkDrive "X:", True

Récemment, j'ai un collègue qui a eu une erreur dans cette procédure car la lettre X était déjà utilisée pour un autre lecteur réseau mappé sur son ordinateur.

Existe-t-il une solution en VBA qui choisi automatiquement la première lettre non utilisée pour mapper le lecteur réseau avec cette dernière ?

Merci d'avance pour votre aide.

Baptiste

bonjour

trouvé sur le net (ici)

Option Explicit

Private Declare PtrSafe Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

Public Function NextAvailableDrive() As String

Dim iDrive As Integer
Dim iFirst As Integer
Dim iFirstFree As Integer, sFirstFree As String
Dim sNextDrive As String

iDrive = 67 'starts looking at D:\

      Do
         iDrive = iDrive + 1
          sNextDrive = Chr$(iDrive) + ":\"
           iFirstFree = GetDriveType(sNextDrive)
       'Function returns 1 if drive is available
        Loop Until iFirstFree = 1

      sFirstFree = Chr$(iDrive) + ":\"
      NextAvailableDrive = sFirstFree
End Function

Sub test()
MsgBox NextAvailableDrive
End Sub

Bonjour,

Autre solution

Function premier_lecteur_disponible()
    Dim FSO As Object

    '// création objet FilesSystem
    Set FSO = CreateObject("Scripting.FilesystemObject")

    '// recherche du premier lecteur disponible
    premier_lecteur_disponible = Empty
    For L = 68 To 90
        If Not FSO.DriveExists(Chr(L) & ":") Then premier_lecteur_disponible = Chr(L) & ":": Exit For
    Next L

End Function

Bonjour,

Merci beaucoup pour vos réponses !

J'ai intégré le code de Thev à ma procédure.

Cordialement, Baptiste.

Rechercher des sujets similaires à "choisir lettre utilisee monter lecteur reseau"