IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Activer un lecteur réseau déjà mappé mais pas acif ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Points : 314
    Points
    314
    Par défaut Activer un lecteur réseau déjà mappé mais pas acif ?
    Bonjour,

    J'ai une macro qui dépose des fichiers sur une lecteur réseau pour impression.

    Le problème, c'est que bien que le lecteur soit mappé chez l'utilisateur, il n'est pas toujours actif, tant que l'utilisateur n'a pas cliqué dessus dans l'explorateur (croix rouge).

    Du coup la macro plante disant que le chemein n'a pas été trouvé.
    Puis-je ajouter une séquence d'activation du lecteur ?

    Dans l'image, on voit que j'ai activé labelprint$
    mais les deux autres ont encore la croix rouge, car je n'ai pas encore cliqué

    Le phénomène est encore plus fréquent avec le télétravail, puisque les utilisateurs se connectent en vpn.
    Nom : 2020-05-29 08_48_09-Start.jpg
Affichages : 448
Taille : 3,4 Ko

    Merci
    Denis

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,

    Le plus simple, demander à l'utilisateur de se connecter au serveur via une gestion d'erreur dans votre code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub Votre_macro()
        On Error GoTo Serveur_non_Connecté
     '****le contenu de votre macro*****
        Exit Sub
     
    Serveur_non_Connecté:
        MsgBox "Veuillez vous connecter au serveur"
    End Sub
    Cdlt

  3. #3
    Membre averti
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Points : 314
    Points
    314
    Par défaut
    merci pour cette suggestion, mais pas toujours facile à expliquer pour certains utilisateurs.
    Denis

  4. #4
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    merci pour cette suggestion, mais pas toujours facile à expliquer pour certains utilisateurs.
    Aujourd'hui, une large majorité des personnes qui travaillent possède un appareil sophistiqué, entre autres pour téléphoner, et avec une facilité déconcertante pour taper des messages et vous dites qu'il y en a qui ne seraient pas fichu de sélectionner un serveur, étonnant NON?
    Il y a quand même un minimum de gestes à effectuer pour travailler. A force de tout vouloir automatiser, on n'incite plus les gens à faire des recherches, tout doit tomber tout cuit. Désolant!!

  5. #5
    Membre averti
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Points : 314
    Points
    314
    Par défaut
    Bonjour,

    J'ai deux remarques,

    D'abord notre société se complexifie tellement qu'elle laisse sur la touche de plus en plus de gens.
    Tous le monde même au travail n'a pas la capacité à gérer des PC et des smartphones.
    Toutes ces personnes ont le droit d'avoir leur place dans la société.

    D'autre part ça fait une paire d'années que je travaille à simplifer au maximum toutes les procédures possibles, pour éviter que les gens ne passent leur temps à cliquer naviguer, c'est aussi une obligation de performence de nos entreprises.
    Je me rends compte que je passe de plus en plus de temps à naviguer, valider des mots de passe, ouvrir des tickets, les sytèmes me génèrent en retour des dizaines de messages etc... en bref je consomme du temps pour rien.
    Globalement les gens sont occupés sur leurs écrans à faire plein d'opérations, mais pour quel rendement au final ?

    Je n'ai pas de réponse, mais pour ma part je continue à travailler pour limiter autant que faire ce peut les gestes parasites à mes utilisateurs.

    Mais cela n'enlève rien à ton conseil initial pour le quel je te remercie une nouvelle fois.
    Bonne continuation
    Denis

  6. #6
    Rédacteur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2013
    Messages
    947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 947
    Points : 4 058
    Points
    4 058
    Par défaut
    Bonjour.
    Je ne suis pas sûr d'avoir compris la question ni le problème.
    Au cas où ça peut répondre au besoin, voici un code pour monter un réseau, puis l'utiliser dans la suite de votre programme :

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    '----------------------------------------------------------------------------------------
    Public Function MapperUnRéseau(StrChemin As String) As String
    '----------------------------------------------------------------------------------------
    ' Mappe le réseau passé dans le chemin en argument et retourne la lettre utilisée.
    ' Si le réseau était déjà mappé, retourne aussi la lettre utilisée.
    ' Ou retourne vide si le mappage échoue.
    ' Exemple: MonLecteur = MapperUnRéseau("\\Clynas100\Dil$\AID")
    '----------------------------------------------------------------------------------------
    Dim ListeRéseau() As String
    Dim i As Integer
     
    On Error GoTo Gest_Err
     
    ' Liste les réseaux existants pour voir si le réseau demandé existe déjà:
    ListeRéseau = Split(UNCPath_Lister, ",")
    For i = LBound(ListeRéseau) To UBound(ListeRéseau)
        ' Si le réseau demandé existe déjà alors quitte:
        If UCase(StrChemin) = Mid(ListeRéseau(i), 3) Then
            MapperUnRéseau = Left(ListeRéseau(i), 1)
            Exit Function
        End If
    Next i
     
    ' Boucle de Z à E pour installer le réseau (sans message si erreur):
    For i = Asc("Z") To Asc("E") Step -1
        If UNCPath_Mapper(Chr(i), StrChemin, False) = True Then
            MapperUnRéseau = Chr(i)
            Exit Function
        End If
    Next i
     
    Gest_Err:
    ' Affiche un message d'erreur si c'est demandé:
    If Err.Number <> 0 Then
        MsgBox Err.Number & " : " & Err.Description, vbCritical + vbOKOnly, Err.Source
    ElseIf MapperUnRéseau = "" Then
        MsgBox "Le chemin indiqué n'est pas valide : " & StrChemin, vbCritical + vbOKOnly
    End If
    Err.Clear
     
    End Function
     
    '----------------------------------------------------------------------------------------
    Private Function UNCPath_Lister(Optional MessageSiErreur As Boolean = True) As String
    '----------------------------------------------------------------------------------------
    ' Retourne la liste des lecteurs réseau dans une chaîne où les lecteurs sont séparés
    ' par une virgule. Exemple: "P:\\WP002FIC0057\OTT_L$, Z:\\Clynas100\Transfert$".
    '----------------------------------------------------------------------------------------
    On Error Resume Next
    Dim wNwk As Object, oDrives As Object
    Dim i As Integer
     
    Set wNwk = CreateObject("WScript.Network")
    Set oDrives = wNwk.EnumNetworkDrives
     
    UNCPath_Lister = ""
    For i = 0 To oDrives.Count - 1 Step 2
        UNCPath_Lister = UNCPath_Lister & UCase(oDrives.Item(i)) & UCase(oDrives.Item(i + 1)) & ","
    Next
     
    ' Nom de l'ordinateur, du domaine, de l'utilisateur:
    'Debug.Print wNwk.ComputerName
    'Debug.Print wNwk.UserDomain
    'Debug.Print wNwk.UserName
     
    ' Affiche un message d'erreur si c'est demandé:
    If MessageSiErreur = True And Err.Number <> 0 Then
        MsgBox Err.Number & " : " & Err.Description, vbCritical + vbOKOnly, Err.Source
    End If
    Err.Clear
     
    End Function
     
    '----------------------------------------------------------------------------------------
    Private Function UNCPath_Mapper(StrLettre As String, StrChemin As String, _
                                   Optional MessageSiErreur As Boolean = True) As Boolean
    '----------------------------------------------------------------------------------------
    ' Permet de mapper un partage réseau.
    ' Sources : http://www.commentcamarche.net/contents/1347-wsh-objet-wshnetwork
    ' Exemple : Call UNCPath_Mapper("Y", "\\Clynas100\Dil$\AID")
    ' Retourne Vrai si le mappage réussi ou Faux en cas d'echec.
    '----------------------------------------------------------------------------------------
    On Error Resume Next
    Dim wNwk As Object
    Set wNwk = CreateObject("WScript.Network")
     
    ' True : le lecteur de réseau est stocké dans le profil de l'utilisateur:
    wNwk.MapNetworkDrive Replace(StrLettre, ":", "") & ":", StrChemin, True
    If Err.Number = 0 Then UNCPath_Mapper = True
     
    ' Affiche un message d'erreur si c'est demandé:
    If MessageSiErreur = True And Err.Number <> 0 Then
        MsgBox Err.Number & " : " & Err.Description, vbCritical + vbOKOnly, Err.Source
    End If
     
    Err.Clear
    End Function
     
    '----------------------------------------------------------------------------------------
    Private Function UNCPath_Supprimer(StrLettre As String, Optional MessageSiErreur As Boolean = True) As Boolean
    '----------------------------------------------------------------------------------------
    ' Supprime la connexion réseau de la lettre StrLettre.
    ' Sources : http://www.commentcamarche.net/contents/1347-wsh-objet-wshnetwork
    ' Exemple : Call UNCPath_Supprimer("Y")
    ' Retourne Vrai si la suppression réussie ou Faux en cas d'echec.
    '----------------------------------------------------------------------------------------
    On Error Resume Next
    Dim wNwk As Object
    Set wNwk = CreateObject("WScript.Network")
     
    ' True : le lecteur de réseau n'est plus stocké dans le profil de l'utilisateur:
    wNwk.RemoveNetworkDrive Replace(StrLettre, ":", "") & ":", True, True
    If Err.Number = 0 Then UNCPath_Supprimer = True
     
    ' Affiche un message d'erreur si c'est demandé:
    If MessageSiErreur = True And Err.Number <> 0 Then
        MsgBox Err.Number & " : " & Err.Description, vbCritical + vbOKOnly, Err.Source
    End If
     
    Err.Clear
    End Function

Discussions similaires

  1. Bizarrerie réseau : erreur timeout mais pas via Fiddler
    Par Ceubex dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 10/06/2016, 12h27
  2. Réseau internet ok mais pas le navigateur non connecté
    Par vegetacherif dans le forum Google Chrome
    Réponses: 0
    Dernier message: 23/07/2014, 11h41
  3. Comment accéder à un lecteur réseau qui n'a pas de lettre ?
    Par Patrick075 dans le forum Microsoft Office
    Réponses: 1
    Dernier message: 11/03/2014, 11h16
  4. Mapper un lecteur réseau mais pas sur le même réseau
    Par OverSpeed301 dans le forum Windows
    Réponses: 4
    Dernier message: 11/06/2013, 17h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo