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 :

Alerte sur Access en VBA [AC-2016]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2019
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2019
    Messages : 198
    Par défaut Alerte sur Access en VBA
    Bonsoir,

    J'ai eu une petite idée sur un module que je voudrais mettre en place, je vous explique..

    A partir de ma BDD j'aimerais qu'un module surveille un dossier Windows en particulier et si il détecte un fichier portant le nom renseigné il me génère une alerte sur ma BDD.

    J'aimerais donc ajouter un champ ou bouton qui me signalerait qu'un fichier portant le nom a été détecté dans le dossier renseigné.

    Pensez-vous que c'est possible ? Ou je regarde trop de film ?

    Cordialement,

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Il n'y a pas de possibilités de placer un écouteur (un listener en langage informatique) sur un dossier Windows. La seule solution "automatique" que j'entrevois et d'utiliser une boucle perpétuelle dont tu sortiras dès qu'elle aura intercepté un fichier dans ton dossier. Ce processus est très coûteux en termes de ressources et je le déconseille vivement.

    Normalement, une simple macro qui serait activée lorsque tu agis sur le fichier Access devrait suffire à ton bonheur, et ça permettrait de ne pas laisser un thread ouvert juste pour un truc que tu peux tester lorsque tu as besoin de le tester...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre très actif
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2019
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2019
    Messages : 198
    Par défaut Re:
    Re,

    Merci pour ton retour,

    Lorsque tu parle de macro tu veux dire qu'il est possible de faire cela avec une macro ? Et à moi ensuite de l’exécuter pour que le job soit fait ? Si oui, pouvons-nous exécuter cette macro avec un timer ? toutes les 10 minutes par exemple....

    Cordialement,

  4. #4
    Membre très actif
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2019
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2019
    Messages : 198
    Par défaut
    Re de nouveau,

    J'ai un début de piste avec le code suivant qui fait bien le Job mais à adapter à mon besoin.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Commande105_Click()
     
    If Dir("C:\Dossier_test\Test.txt") = "" Then
      MsgBox "Le fichier n'existe pas"
    Else
      MsgBox "Le fichier existe"
    End If
     
    End Sub
    Dans mon cas je souhaiterais plutôt qu'un champ clignote ou qu'un chiffre soit inscrit dans ce champ correspondant au nombres de fichier portant ce nom.... Du genre
    Fichier trouvé : 1

    Ensuite j'aimerais un solution pour exécuter ce module automatiquement, avec un timer ou le code s’exécutera tous les X temps,

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Voici une fonction qui renvoie VRAI lorsque le fichier a été déposé. Il faut lui passer le nom complet du fichier et la durée de la boucle d'attente en minutes. J'y mets également une limite (fixée arbitrairement à 1 jour) pour ne pas qu'elle boucle indéfiniment. La procédure Test illustre comment utiliser cette fonction, en fixant la durée maximale d'écoute à 4 heures.


    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
    Function Listener(Filename As String, Minutes As Long, Optional EndTime As Date) As Boolean
      Dim Limit As Date
     
      If EndTime = 0 Then EndTime = Now + 1
      Listener = Dir(Filename) <> ""
      Do While Not Listener And Now < EndTime
        DoEvents
        Limit = Now + (Minutes / 24 / 60)
        Do While Now < Limit
          DoEvents
        Loop
        Listener = Dir(Filename) <> ""
      Loop
    End Function
     
     
    Sub Test()
      If Listener("e:\temp\scan\test.txt", 1, Now + CDate("4:00:00")) Then
        MsgBox "Le fichier vient d'être déposé", vbInformation
      Else
        MsgBox "Le fichier n'a pas été déposé dans le temps imparti", vbExclamation
      End If
    End Sub
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Membre très actif
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2019
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2019
    Messages : 198
    Par défaut
    Bonjour,

    Tu ne mavais pas déconseiller cela dans les messages précédents ?

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Si, mais je ne vois pas d'autres solutions "automatiques" que celle-là ^^

    Si maintenant tu acceptes l'idée d'une solution "qui n'écoute pas" mais qui fait à certains moments, tu peux te créer une fonction booléenne (qui renvoie VRAI ou FAUX) et la déclencher sur certains événements, par exemple la fermeture du formulaire, l'ouverture du fichier Access, un clic sur tel bouton du menu ou du ruban perso. L'idée étant de créer une fonction qui ne fait que cela, et d'appeler cette fonction "à la demande"...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Membre très actif
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2019
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2019
    Messages : 198
    Par défaut
    Salut,

    Oui une fonction à la demande comme tu dis suffira, après si un déclenchement auto peut être intégrées du genre tous les X temps ce serait parfait.
    Il ne serait pas possible de compter le nombre de fichier correspondant à mon critère ? Je pense crée un champ vers qui je renverrais cette valeur,

    Par contre j'ai hommis quelques détails...

    Au lieu de chercher un fichier correspondant au nom exact, J'aimerais que ce soit plutôt "contient..." le mot ....

    Imaginons que le fichier contenu dans le dossier est "Marion_05032020.txt"

    J'aimerais plutôt chercher si un fichier contient le mot "Marion" alors bingo !!

    Ensuite j'ai intégrée un champs allant chercher le nom de l'utilisateur dans la BDD ODBC de la société , (juste pour l'esthétique)
    J'aimerais que le code se base donc sur la valeur de ce champ.

    Exemple
    Nom utilisateur : Marion


    Cordialement

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Pour chercher des fichiers dont le nom contient quelque chose, tu peux utiliser les jokers * et ? (comme dans une requête Access...). * remplace un nombre indéfini de caractères, ? remplace n'importe quel caractère à la place où tu l'a mis.


    dir("Marion*") va chercher ce qui commence par Marion, dir("m?t.txt") retrouvera mat.txt, mot.txt, mit.txt, mbt.txt, ...


    Pour ce qui est de le faire au clic ou tous les x temps, tu as tout ce qu'il te faut: Le faire au clic, c'est lancer la commande DIR sur un clic (je te conseille une fonction perso qui est appelée au clic), et pour le faire tous les x temps, je ne vois pas d'autre solution que ce que je t'ai donné plus haut dans la discussion. Je ne vois pas trop de quoi d'autre tu pourrais avoir besoin... ^^
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  10. #10
    Membre très actif
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2019
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2019
    Messages : 198
    Par défaut
    Bonjour,

    Je vais essayer de bidouiller cela tout à l'heure, j'ai cru voir que "Mar%" Fonctionné aussi

    Tu as oublié de répondre concernant le fait de pointer la recherche du mot en se basant sur la valeur d'un champ c'est possible ?

    imaginons texte_106 dont la valeur = "Marion"

    Cdt

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par Marionette Voir le message
    [...]
    Tu as oublié de répondre concernant le fait de pointer la recherche du mot en se basant sur la valeur d'un champ c'est possible ? [...]
    Il suffit de remplacer la chaine "..." par la valeur du champ ^^
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  12. #12
    Membre très actif
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2019
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2019
    Messages : 198
    Par défaut
    Excellent,

    Dernière chose, peut-on compter le nombre de fichier trouvé ?

    Cdt

  13. #13
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Avec Dir, la seule solution est de boucler tant que tu récupères un nom de fichier et de compter les tours de boucle. Perso, tant qu'à faire, je pousserais les noms de fichiers dans une collection (ça peut toujours servir) puis je compterais les éléments de la collection. Voici une fonction qui renvoie la collection des noms correspondant à un pattern et la procédure qui utilise cette fonction.

    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
     
    Function getFiles(FilenamePattern) As Collection
      Dim Filename As String
     
      Set getFiles = New Collection
      Filename = Dir(FilenamePattern)
      Do While Filename <> ""
        getFiles.Add Filename
        Filename = Dir()
      Loop
    End Function
     
    Sub test()
      Debug.Print getFiles("e:\temp\*.jpg").Count
    End Sub

    Sinon, sans récupérer les noms des fichiers, cette fonction donne le nombre de fichiers qui correspondent à un pattern.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function getFilesCount(Pattern As String) As Long
      Dim Filename As String
     
      Filename = Dir(Pattern)
      Do While Filename <> ""
        getFilesCount = getFilesCount + 1
        Filename = Dir()
      Loop
    End Function

    Attention: ces fonctions ne récupèrent pas les infos pour les sous-dossiers!
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  14. #14
    Membre très actif
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2019
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2019
    Messages : 198
    Par défaut Re
    Salut Pierre,

    Comment exécuter un module sur un bouton formulaire ?

    Du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Commande3_Click()
    Cordialement,

  15. #15
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    On ne peut pas exécuter un module, mais bien une procédure dans ce module. il suffit de saisir le nom de la procédure à exécuter dans le corps de la procédure du bouton.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Commande3_Click()
      DireBonjour
    End Sub()
     
    Sub DireBonjour()
      Msgbox "Bonjour"
    End Sub
    Si la procédure appelée requiert des paramètres, tu les places à la suite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Commande3_Click()
      DireBonjour "Pierre"
    End Sub()
     
    Sub DireBonjour(Prenom As String)
      Msgbox "Bonjour " & Prenom
    End Sub

    Les procédures appelées peuvent être soit dans le module du formulaire qui contient le bouton, soit dans un module standard. L'endroit où tu les rangeras dépendra de leur finalité.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Créer des Alertes sur Access
    Par Sarah SO dans le forum VBA Access
    Réponses: 16
    Dernier message: 02/05/2019, 21h28
  2. Création d'alerte sur access
    Par Chloé Ma dans le forum Access
    Réponses: 2
    Dernier message: 25/04/2019, 19h56
  3. [VBA-E]Ecrire et lancer une requete sur Access
    Par marie10 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/03/2006, 14h32
  4. Macro VBA sur Access
    Par beurnoir dans le forum Access
    Réponses: 3
    Dernier message: 12/10/2005, 16h46

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