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 :

[VBA] Détecter une modification sur formulaire


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2006
    Messages : 47
    Points : 29
    Points
    29
    Par défaut [VBA] Détecter une modification sur formulaire
    Bonjour,

    J'ai actuellement une base de donnée sous access 2000, elle est composée de plusieurs formulaires, et je souhaiterai que dés qu'une modification est effectuée sur une liste modifiable ou une case a cocher, qu'une zone de texte se masque. Comment pourrait-on détecter ces modifications a l'aide du code?

  2. #2
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Moi j'ai déja fait un truc du genre

    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
     
    Global change As Boolean
     
    Public Sub mettreOnChange(formulaire)
        Dim i As Integer
        For i = 0 To Forms(formulaire).Count - 1
            With Forms(formulaire).Controls(i)
               .OnChange = "=changement(true)"
            End With
        Next i
    End Sub
     
    Public Function changement(d As Boolean)
        change = d
    End Function
    et après dans ton code test la valeur du falg change
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2006
    Messages : 47
    Points : 29
    Points
    29
    Par défaut
    Tu souhaite que je mette cette partie de code dans un module ?

  4. #4
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Oui il faut que tu la mette dans un module et que dans le Load de ton formualire tu mette
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mettreOnChange ("nom du formulaire"
    J'ai oublié de te dire que si ton formulaire contient des CheckBox tu doit remplacer cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    .OnChange = "=changement(true)"
    par celle la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    .AfterUpdate= "=changement(true)"
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2006
    Messages : 47
    Points : 29
    Points
    29
    Par défaut
    Quand je Load le formulaire, avec la ligne :

    .AfterUpdate= "=changement(true)"

    Y me dit probléme d'exécution 438, "propriéte ou méthode non gérée par cet objet". Et comment je fais pour qu'une zone de texte ce masque lorsqu'il a détecter une modification ?

  6. #6
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    En fet jtexplique ce que j'avais fait. J'avais renommé tous mes composants de façon à pouvoir en ayant leur nom déterminer leurs natures (les noms des zones de texte commençait par TXB, les listes par LST) et ça me permettait de faire le .AfterUpdate= "=changement(true)" pour tous les champs sauf les Labels (Etiquette). C'est ça qui doit te faire planter.
    Il y a peut etre une propriété de l'objet Control qui permet de savoir quel est le type du composent mais je ne la connais pas.
    J'espère que je suis compréhensible

    Si tu arrive a le faire marcher tu n'auras plus qu'a faire ça pour déactiver la zone texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (change=true)then
        montexte.Enabled=false
    end if
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2006
    Messages : 47
    Points : 29
    Points
    29
    Par défaut
    Je joint ci dessous un aperçu de ce que je souhaite faire
    Fichiers attachés Fichiers attachés

  8. #8
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Pour masquer ta zone de texte tu peut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    montexte.visible=false
    et pour détecter le changement vu que tu n'a pas beacoup de composant tu peut mettre dans l'AfterUpdate de chacun la ligne que je viens de te donner
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2006
    Messages : 47
    Points : 29
    Points
    29
    Par défaut
    C'est une idée de mettre AfterUpdate pour chaque composants, mais le probléme c'est que ma base de donée est composé d'une trentaine de formulaires donc sa fait un peu long a faire, en plus y a pas les mêmes composants dans chaque formulaires.

    Je pensais que l'on pouvais détecter un changement sur le formulaire facilement, car pour l'instant j'ai une grande zone de texte que je place devant tous ces composants, et quand je passe avec la souris cela masque la zone de texte. Mais bon c'est pas une méthode trop propre

  10. #10
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Regarde du côte de la propriété et de l'événément Dirty du formulaire. Par contre je ne sais plus si c'est utile pour les form indépendants.
    (\ _ /)
    (='.'=)
    (")-(")

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2006
    Messages : 47
    Points : 29
    Points
    29
    Par défaut
    J'ai essayer de trouver quelque chose sur l'événement Dirty, mais j'ai pas trouvé comment m'en servir pour mon probléme. Donc si quelqu'un a une idée comment détecter un changement sur un formulaire a l'aide l'événement dirty, merci de me la faire parvenir.

Discussions similaires

  1. [AC-2010] refuser d'enregistrer une modif sur formulaire
    Par tibjedi dans le forum Sécurité
    Réponses: 1
    Dernier message: 06/09/2012, 18h56
  2. [AC-2010] Modif d'un enregistrement d'une table sur formulaire
    Par myrddin99 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 08/06/2012, 12h38
  3. Détecter une modification du code VBA
    Par elmagnifico dans le forum Excel
    Réponses: 4
    Dernier message: 26/08/2009, 18h53
  4. Détecter les modifications sur une base de données
    Par abdelhamidem dans le forum Débuter
    Réponses: 7
    Dernier message: 09/02/2009, 18h16
  5. Réponses: 3
    Dernier message: 07/07/2006, 16h06

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