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

VBA Access Discussion :

test si réseau disponible


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Par défaut test si réseau disponible
    bonjour , pour les besoin d une application je dois a un moment exporter un fichier exel sur le réseau lorsque celui-ci est disponiblesi non il ne fais pas l'export..(possibilité de travailler a la maison)

    j'ai réaliser l application en utilisant un chemin local. aucun probleme
    mais lorsque je met le chemin distant (réseau)
    il me donne une erreur . l' erreur est due au fait que pour accéder au réseau il faut se connecter avec un alias bien précis et un mot de passe

    voici le code que j'utilise:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    chemin = "C:\BASE ACCESS\update\"
    'chemin = "\\nbelea88\PROJECTS\TEI_Suivi_Projets_LTH_PERMANENT\update\"
    fichierxls = "Projets.xls"
    Update = chemin & fichierxls
    If Dir(chemin, vbDirectory) <> "" Then 'On test si le chemin necessaire a la mise a jour existe
      'si oui
     '# Export du fichier de mise à jour #
    DoCmd.TransferSpreadsheet
    acExport,acSpreadsheetTypeExcel9, "PROJETS",Update, True
    End If
    ce que je souhaiterait c' est que au lieu de me dire qu' il y a une erreur (= réseau indisponible ou accès réseau interdit ) ne pas effectuer le code et passer direct a la suite.

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Par défaut
    Bonjour,
    je pense que certains te proposeront une solution via API.
    Essaie peut-être ceci

    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
     
    Private Function IsStationEnabled(NetStationName as String) as Boolean
     Dim FileHandle as long, FileContent As String, FileResult as String
     IsStationEnabled=False
     FileResult=CurrentProject.Path & "\NetView.Txt"
     FileHandle=FreeFile
    REM Récupère fichier la liste des ordinateurs connectés et
    REM l'écrit dans le fichier NetView.txt"
     shell "cmd /c net view > " & FileResult
    REM Attendre que le fichier soit créé et accessible
     While Dir(FileResult)=""
       DoEvents
     Wend
    REM Ouvre le fichier NetView.txt en mode lecture
     Open FileResult For Input As FileHandle
    REM Tant que la fin de fichier n'est pas atteinte lire le fichier
     Do While Not EOF(FileHandle)
       Input #FileHandle, FileContent
    REM Si la ligne lue contient le nom de l'ordinateur recherché alors
    REM Le réseau est actif
       If Instr(FileContent,NetStationName)>0 Then IsStationEnabled=True:exit do
     Loop
     Close File 
    End function

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Par défaut
    ohh lala je comprend pas du tout le code que tu m as donner
    je place où mes chemin et je met où mes instruction "quand le chemin est acessible"?????
    pourrais tu réecrire le code en introduisant les chemins réels et les instruction car je suis tres novice

    merci

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Par défaut
    Ok,

    Crée un nouveau module et copie la fonction donnée, remplace le mot Private par Public.
    La fonction renvoie Vrai si
    l'ordinateur dont le nom est passé en paramètre est bien accessible depuis
    ton ordinateur.
    Maintenant, il faut appeler cette fonction depuis ton code de mise à jour et selon la valeur retournée par la fonction (Vrai ou Faux) tu sais que tu peux effectuer la mise à jour sur le réseau ou pas.

    Exemple : Ici je transforme ton code. Il appelle la fonction et selon la valeur retournée effectue le transfertSpreadSheet sur le réseau ou en local.
    pour ton code :
    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
     
    REM Mise à jour locale par défaut 
     chemin = "C:\BASE ACCESS\update\"
    REM Si l'ordinateur NBELEA88 est accessible donc connecté alors
    REM la mise à jour est faite sur le réseau
      If IsStationEnabled("NBELEA88") Then   chemin = "\\nbelea88\PROJECTS\TEI_Suivi_Projets_LTH_PERMANENT\update\"
     
     fichierxls = "Projets.xls"
     Update = chemin & fichierxls
     If Dir(chemin, vbDirectory) <> "" Then 'On test si le chemin necessaire a la mise a jour existe
      'si oui
     '# Export du fichier de mise à jour #
    DoCmd.TransferSpreadsheet
    acExport,acSpreadsheetTypeExcel9, "PROJETS",Update, True
    End If
    Pour comprendre, tu peux cliquer Démarrer dans Windows puis exécuter;
    saisis : cmd
    une nouvelle fenêtre devrait s'ouvrir, dans cette fenêtre
    saisis : net view

    tu devrais obtenir la liste des ordinateurs connectés. C'est cette liste que le code place dans le fichier NetView.txt puis le lit en y recherchant le nom de l'ordinateur passé en paramètre.

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Par défaut
    un grand merci pour le détail

    lors de l'ouverture le programme tombe dans une boucle sans fin...
    voici le bout de code défectueux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    While Dir(FileResult)=""
       DoEvents
     Wend
    récapitulatif : MODULE 1
    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
     
    Public Function IsStationEnabled(NetStationName As String) As Boolean
     Dim FileHandle As Long, FileContent As String, FileResult As String
     IsStationEnabled = False
     FileResult = CurrentProject.Path & "\NetView.Txt"
     FileHandle = FreeFile
    Rem Récupère fichier la liste des ordinateurs connectés et
    Rem l'écrit dans le fichier NetView.txt"
     Shell "cmd /c net view > " & FileResult
    Rem Attendre que le fichier soit créé et accessible
     While Dir(FileResult) = ""
       DoEvents
     Wend
    Rem Ouvre le fichier NetView.txt en mode lecture
     Open FileResult For Input As FileHandle
    Rem Tant que la fin de fichier n'est pas atteinte lire le fichier
     Do While Not EOF(FileHandle)
       Input #FileHandle, FileContent
    Rem Si la ligne lue contient le nom de l'ordinateur recherché alors
    Rem Le réseau est actif
       If InStr(FileContent, NetStationName) > 0 Then IsStationEnabled = True: Exit Do
     Loop
     Close File
    End Function

    code à l ouverture de mon formulaire de demarage
    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
     
    Private Sub Form_Open(Cancel As Integer)
     
    utilisateur = Environ("UserName")
    'ADMINISTRATEUR DE LA BASE
    If utilisateur = "technicien" Or utilisateur = "_ledoud" Or utilisateur = "thomasl" Or utilisateur = "noulleg" Then
     
    Rem Mise à jour locale par défaut
     chemin = "C:\BASE ACCESS\update\"
    Rem Si l'ordinateur NBELEA88 est accessible donc connecté alors
    Rem la mise à jour est faite sur le réseau
      If IsStationEnabled("NBELEA88") Then chemin = "\\nbelea88\PROJECTS\TEI_Suivi_Projets_LTH_PERMANENT\update\"
     fichierxls = "Projets.xls"
     Update = chemin & fichierxls
     If Dir(chemin, vbDirectory) <> "" Then 'On test si le chemin necessaire a la mise a jour existe
      'si oui
     '# Export du fichier de mise à jour #
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "PROJETS", Update, True
    End If


  6. #6
    Membre Expert
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Par défaut
    C'est la ligne précédente qui pose problème. Le fichier n'a pas été créé.

    Dans Windows clique Démarrer - Exécuter
    Saisis : cmd
    dans la nouvelle fenêtre saisis : net view > netview.txt
    puis saisis : dir netview.txt
    si le fichier est bien lister
    saisis : type netview.txt
    le contenu du fichier doit s'afficher présentant la liste des ordinateurs

    saisis : del netview.txt
    puis : exit pour fermer la fenêtre.

    je suis sous XP et je n'ai aucun problème, je ne connais pas Vista si c'est le système que tu as.

Discussions similaires

  1. Test connexion réseau
    Par alex8276 dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 10/12/2014, 09h26
  2. Connecter automatiquement une imprimante réseau disponible sur un domaine
    Par NicolasJolet dans le forum Autres Logiciels
    Réponses: 11
    Dernier message: 17/10/2006, 16h11
  3. Test connexion réseau
    Par guen dans le forum Access
    Réponses: 1
    Dernier message: 19/04/2006, 00h22
  4. Quel langage choisir pour appli test de composants réseau ?
    Par ouam81 dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 06/02/2006, 18h18

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