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

Access Discussion :

Tester l'espace disponible sur un lecteur reseau


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 40
    Points : 26
    Points
    26
    Par défaut Tester l'espace disponible sur un lecteur reseau
    Bonjour,


    Je sais comment detecter la présence d'un lecteur réseau mais par contre je n'arrive pas a connaitre l'espace disponible sur ce dernier.
    J'ai trouvé plusieurs solution pour ce genre de probléme dans le tutoriel, mais je ne sais pas comment utiliser ces fonction ni savoir quel est la mémoire que je doit tester...

    En fait je veux copier un fichier du réseau vers mon lecteur réseau, mais pour eviter un bug, je voudrais savoir si le lecteur réseau a assez de place pour recevoir le fichier ( par exemple je veux tester si il y a au moins 50Mo disponible sur le lecteur réseau) et si ce n'est pas le cas je pourrais annuler l'opération...

    Est ce qu'il y a une sécurité qui empeche automatiquement l'utilisation de "FileCopy" si l'emplacement cible n'a pas assez d'espace pour le fichier en question ?

    Merci d'avance pour votre aide

    Celestis

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 266
    Points
    34 266
    Par défaut
    salut,

    une piste (pas forcement la plus efficace) serait de faire une boucle sur tous les repertoires de ton disque et de passer par les fonctions proposees dans la
    http://access.developpez.com/faq/?page=InformationsRep

    notamment
    http://access.developpez.com/faq/?pa...Rep#taille_rep
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 40
    Points : 26
    Points
    26
    Par défaut
    merci...

    Mais comment peut on connaitre tout les dossier ou fichier d'un espace de disque ?
    Ce que je veux dire c'est que je peut utiliser cette fonction sur des repertoir dont je connais le nom, mais comment je fait si un nouveau dossier est crée car le seul moyen que je vois seras de rajouter une nouvelle boucle avec le nom de ce dossier...

    Ce que je voudrais savoir c'est si on peut recuperer la liste des noms des repertoires dans une zone du disque durt (ou du lecteur reseau) ?

    Par ailleurs, je voudrais savoir si une des bases est ouverte et pour ca je doit tester si un fichier LDB existe et cela quelque soit le nom, donc peut ton tester l'existence d'un fichier avec l'extention LDB sans pour autant connaitre son nom ?

    Edit: Je précise que le but est de savoir si la compression de cette base est fini pour que je puisse supprimer le fichier de la base ...

    Merci d'avance de votre aide ...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 282
    Points : 356
    Points
    356
    Par défaut
    Bonjour,

    Vous pouvez utiliser la methode "Dir".
    Recherchez la dans l'aide VBA d'Acces, vous trouverez un exemple qui devrait vous permettre d'arriver a vos fins...

    Bonne chance
    - Bien programmer n'est pas choisir la solution la plus simple, mais la meilleure -

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 40
    Points : 26
    Points
    26
    Par défaut
    Merci beaucoup, c'est exactement la fonction dont j'avais besoin ...

    Mais contrairement à ce que je croyais la disparition du fichier LDB ne signifie pas que le compactage de la base en question est fini, est correct ?

    encore merci ...

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 282
    Points : 356
    Points
    356
    Par défaut
    l'existence du fichier LDB indique que la base est ouverte (ou consideree comme telle, en cas de plantage par exemple)
    - Bien programmer n'est pas choisir la solution la plus simple, mais la meilleure -

  7. #7
    Nouveau membre du Club
    Inscrit en
    Avril 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 40
    Points : 26
    Points
    26
    Par défaut
    Ok merci beaucoup pour votre aide ...

    Je vais faire une temporisation qui va attendre quelques secondes avant de supprimer la base, ca devrait regler le probléme.

    Encore merci

    Celestis

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 282
    Points : 356
    Points
    356
    Par défaut
    Il est toujours possible de tester l'existence du LDB dans une LOOP...
    - Bien programmer n'est pas choisir la solution la plus simple, mais la meilleure -

  9. #9
    Nouveau membre du Club
    Inscrit en
    Avril 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 40
    Points : 26
    Points
    26
    Par défaut
    Je vais essayer cette technique , merci ...


    Par contre je viens de remarquer un comportement très bizarre de Access.

    Je veux faire une recherche dans une table et un champ en particulier, que je regarde en mode feuille de donnée.

    Le champ en question est un champ texte, il y plus de 2000 enregistrement dans ce champ.

    Donc je fait une recherche (Ctrl +F) en ayant selectionné la totalité du champ, et je cherche la reference "1AL50".

    Le probléme c'est que Acces ne le trouve pas dans le champ or si je cherche manuellement dans ce champ je trouve effectivement cette reference "1AL50" et ce probléme est présent pour une partie des reference.


    Le plus étrange est la solution à ce probléme: je fait "Coupé" sur le contenue de la case qui pose probléme, par exemple "1AL50" et dans la même case je fait un coller.
    Autrement dit, ce devrait etre exactement le même contenue sauf que cette fois la recherche fonctionne.

    Ca ne serait pas grave si cela se limiter à la recherche, mais elle génere des bugs justement sur les requetes qui prennent ces enregistrements. Par exemple une requete va la prendre en compte et l'autre non...

    Docn si quelqu'un pourrais m'expliquer l'origine du probléme ca m'aiderais beaucoup ...

    merci d'avance

    Edit: J'ai finalement trouvé l'origine du probléme. Il y a avait simplement des espace devant la reférence ( " 1AL50" au lieu de "1AL503) et des retour à la ligne ce qui au final empeche la recherche pas Access ...

  10. #10
    Nouveau membre du Club
    Inscrit en
    Avril 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 40
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par jpcheck Voir le message
    salut,

    une piste (pas forcement la plus efficace) serait de faire une boucle sur tous les repertoires de ton disque et de passer par les fonctions proposees dans la
    http://access.developpez.com/faq/?page=InformationsRep

    notamment
    http://access.developpez.com/faq/?pa...Rep#taille_rep
    Je réouvre ce topic car j'ai une question au sujet de la récupération de la taille pour un fichier ou un repertoire.

    J'ai utilisé la fonction Dir pour recuperer le nom de tout les fichiers et repertoires du lecteur réseaux et avec une fonction Loop je les prend un par un...

    Ensuite pour récuperer la taille, j'utilise la fonction GetFolder ( pour recuperer le nom ou le fichier dans un objet) puis j'utilise la fonction size.

    Tout fonctionne parfaitement quand c'est un dossier mais pas quand c'est un fichier.
    Je sais que c'est à cause de GetFolder et qu'il existe l'equivalent pour les fichier, mais ce que je voudrais savoir c'est comment faire si dans le lecteur reseau j'ai, à la fois des repertoires et des fichiers ?

    Y a t il un moyen de savoir si le nom designé par Dir est un fichier ou un repertoires ?

    Merci d'avance

    Edit: Autre petite question: On me demande de changer la taille des formulaire en fonction de la résolution de l'écran de l'utilisateur.
    Je sais comment obtenir la résolution de l'ecran et la modifier par contre je ne sais pas si on peut modifier la taille du formulaire en fonction de la taille de l'ecran de l'utilisateur .. Si quelqu'un à une idée ...merci

  11. #11
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Tester l'espace disponible sur un lecteur reseau

    Tu as essayé quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim oFSO As Scripting.FileSystemObject
    Dim oD As Scripting.Drive
    Set oFSO = New Scripting.FileSystemObject
    Set oD = oFSO.GetDrive("C")
    MsgBox oD.FreeSpace
    http://warin.developpez.com/access/fichiers/

  12. #12
    Nouveau membre du Club
    Inscrit en
    Avril 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 40
    Points : 26
    Points
    26
    Par défaut
    Déjà merci pour ton aide...

    J'avais essayé ca mais comme je l'ai dit ca ne marche que sur les repertoire.

    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
    Dim MyName
    Dim taille As Long
    MyName = Dir("G:\", vbDirectory)
     
    Do While MyName <> ""
     
        Dim fs, f, s
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set f = fs.GetFolder(MyName)
        s = UCase(f.Name) & " uses " & f.Size & " bytes."
        MsgBox s, 0, "Infos de taille du dossier"
        taille = f.Size
        MsgBox (taille)
    MyName = Dir
    Loop

    J'ai essayé le code que tu m'a donné mais ca génére une erreur.
    Je précise que j'execute cette fonction dans le Form_Load...

    J'ai modifier ensuite le code que tu m'a donnée et qui donne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim FS As Scripting.FileSystemObject
    Dim Drv As Scripting.Drive
    'Instanciation du FSO
    Set FS = New Scripting.FileSystemObject
    'Instanciation d'un objet drive correspondant au disque C
    If FS.DriveExists("G") Then
        Set Drv = FS.Drives("G")
        MsgBox Drv.FreeSpace
    Else
        MsgBox "Ce disque n'existe pas"
    End If
    Mais toujours rien...
    Est ce du au fait qu'il s'agit d'un lecteur reseau G et non d'un disque C ?
    Je vais continué à chercher dans le lien que tu ma donnée voir si je n'y trouve pas la solution ...

  13. #13
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Quelle est l'erreur ?

  14. #14
    Membre actif
    Homme Profil pro
    développeur amateur
    Inscrit en
    Octobre 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France

    Informations professionnelles :
    Activité : développeur amateur
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 109
    Points : 211
    Points
    211
    Par défaut re:
    bonjour,
    il me semble que quand on travail sur le reseau
    le instructions deviennent ex:
    stRepertoire = "\\PC-BUREAU\C"
    double slash+nom de l'ordi+nom du lecteur ! non ?
    à essayer
    ahmad

  15. #15
    Nouveau membre du Club
    Inscrit en
    Avril 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 40
    Points : 26
    Points
    26
    Par défaut
    Je n'arrive pas à recuperer l'errreur, la fonction qui contient le code en question ne s'execute pas, même pas l'erreur...

    voila le code que je fait :
    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
    Private Sub essai_Click()
    On Error GoTo Err_essai_Click
     
    Dim oFSO As Scripting.FileSystemObject
    Dim oDrv As Scripting.Drive
    'Instanciation du FSO
    Set oFSO = New Scripting.FileSystemObject
    For Each oDrv In oFSO.Drives
        MsgBox oDrv.DriveLetter
    Next oDrv
     
    'Dim FS As Scripting.FileSystemObject
    'Dim Drv As Scripting.Drive
    'Instanciation du FSO
    'Set FS = New Scripting.FileSystemObject
    'Instanciation d'un objet drive correspondant au disque C
    'If FS.DriveExists("G") Then
    '    Set Drv = FS.Drives("G")
     
    'Else
       ' MsgBox "Ce disque n'existe pas"
    'End If
     
    Err_essai_Click:
        Exit Sub
     
    Err_essai_Click:
        MsgBox Err.Description
        Resume Err_essai_Click
     
    End Sub
    J'ai peut etre fait une faute de frappe ...

  16. #16
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 266
    Points
    34 266
    Par défaut
    Salut,
    enleve le
    ca te fera un arret oblige lors du bug
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  17. #17
    Nouveau membre du Club
    Inscrit en
    Avril 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 40
    Points : 26
    Points
    26
    Par défaut
    J'ai retiré la gestion de l'erreur et le goto mais ca ne change rien. Quand je clique sur la commande qui execute cette fonction rien ne se passe mais il ne s'aarête pas sur le bug.

    On dirait qu'il n'execute pas la fonction car pour essayer de savoir s'il execute une partie du code j'ai mis des msgbox mais aucun ne s'affiche .

    Voila le 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
    Private Sub essai_Click()
     
        MsgBox ("1")
        Dim oFSO As Scripting.FileSystemObject
        Dim oDrv As Scripting.Drive
        'Instanciation du FSO
        MsgBox ("2")
        Set oFSO = New Scripting.FileSystemObject
     
        For Each oDrv In oFSO.Drives
     
            MsgBox oDrv.DriveLetter
        Next oDrv
          MsgBox ("3")
    End Sub
    Ce code est juste pour afficher le nom des driver mais rien ne fonctionne ...

    J'ai verifier que le lien etait bon et c'est le cas.

    On dirait que Access ne reconnait pas certains objets et que du coup il n'execute pas les fonctions dans lesquels ils se trouvent...

    Désolé de l'absence je n'ai pas eu accés a internet pendant le week end ...

  18. #18
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Le projet VBA compile sans erreur ?

  19. #19
    Nouveau membre du Club
    Inscrit en
    Avril 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 40
    Points : 26
    Points
    26
    Par défaut
    Lorsque je fait compiler le code je recoit le message d'erreur suivant:

    "Type défini par l'utilisateur non définié "

    Et il s'arrête sur la premiére lignedu code, la définition de FSO.

    Ce que je ne comprend pas c'est que j'utilise des objets du même type dans ce formulaire et ca fonctionne parfaitement...

  20. #20
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Tu as ajouté la référence adéquate dans ton projet VBA ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Souci sur montage lecteur reseau
    Par steph70 dans le forum RedHat / CentOS / Fedora
    Réponses: 1
    Dernier message: 09/01/2014, 16h16
  2. Espace disponible sur la pile
    Par JackTheHero dans le forum Débuter
    Réponses: 9
    Dernier message: 08/11/2010, 18h06
  3. Réponses: 7
    Dernier message: 22/06/2010, 15h15
  4. [Oracle Text]Fichiers sur lecteur reseau
    Par Kuuei dans le forum Oracle
    Réponses: 5
    Dernier message: 14/09/2007, 14h19
  5. Réponses: 9
    Dernier message: 27/05/2005, 19h22

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