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 :

VBA Changer la couleur d'un bouton sur clic


Sujet :

VBA Access

  1. #21
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 728
    Points : 14 747
    Points
    14 747
    Par défaut
    bonsoir,
    je n'ai pas compris ton problème, tu t'exprimes sans vraiment donner de cas précis: un Debug.Print sans le code se trouvant avant et après l'instruction n'aide pas vraiment à te donner une explication.
    1) pour qu'une "routine" s'exécute (une routine, j'imagine que c'est une Sub ou une Fonction), il faut qu'elle soit appelée quelque part dans le code à condition que l'instruction qui l'appelle est accessible (pas incluse dans un If qui empêcherait son exécution).
    2) Pour qu'il y ait message d'erreur, il faut une erreur quelque soit le logiciel utilisé et pas de On Error Resume Next qui empêche tout affichage de l'erreur.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  2. #22
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    580
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 580
    Points : 140
    Points
    140
    Par défaut
    Bon, faites excuses votre honneur. Tout était dans l'instruction elle-même. Il fallait écrire ' DebugPrint "Valeur = " & format(Champ) '

    En replaçant cela dans mon texte, ce sera plus compréhensible, j'espère.

    AMIcalement.

  3. #23
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 728
    Points : 14 747
    Points
    14 747
    Par défaut
    Bon, faites excuses votre honneur.
    je ne vois pas pourquoi cette ironie, je cherche à comprendre ce qui te pose problème, pour t'aider à y voir clair
    Tout était dans l'instruction elle-même. Il fallait écrire ' DebugPrint "Valeur = " & format(Champ) '
    ou plus exactement: Debug.Print "Valeur = " & format(Champ).


    Je viens de comprendre: tu as utilisé l'apostrophe ( ' pour les commentaires VBA) au lieu des guillemets ( " pour délimiter du texte): résultat l'instruction s'exécute mais rien ne s'affiche puisque le texte et la variable sont en commentaires et il n'y a pas non plus d'erreur puisque l'instruction est correcte syntaxiquement mais ne l'est pas vraiment pour afficher le résultat (aah, l'humain et ses erreurs )
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  4. #24
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    580
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 580
    Points : 140
    Points
    140
    Par défaut
    Non, j'ai utilisé l'apostrophe simple pour délimiter ma citation.L'instruction que j'avais écrite était fausse car elle prétendait concaténer un texte et un nombre, et l'erreur a été corrigée (et le module s'est exécuté) lorsque j'ai fat ce qu'il fallait : concaténer et un nombre FORMATE. Et toute mon ironie est dirigée contre la façon dont Microsoft a implémenté VBA pour Access, car j'ai vécu 24 heures de stress ridicule, car oui, en effet, mon erreur était ridicule, mais ce ridicule est sans commune mesure avec celui de ceux qui ont pensé que le stress des milliers d'utilisateurs d'Access VBA ne pesait rien à côté de celui du programmeur qui aurait dû se donner le mal de signaler cette erreur.

    Je ne sais pas si j'arrive à me faire comprendre, ou si je suis simplement rien d'autre qu'un boomer complètement dépassé par l'évolution du monde...

    Mais "AMIcalement" quand même...

  5. #25
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 728
    Points : 14 747
    Points
    14 747
    Par défaut
    Citation Envoyé par L'AMI Yves
    ]Non, j'ai utilisé l'apostrophe simple pour délimiter ma citation.
    désolé, mais tu as bien posté le code ci-dessous qui pouvait induire en erreur:

    Nom : _0.JPG
Affichages : 51
Taille : 71,2 Ko
    ou alors tu fais sans doute référence à ceci posté plus tard:

    Nom : _2.JPG
Affichages : 50
Taille : 23,5 Ko

    dans ce cas, quand on poste, on se doit d'être le plus précis possible, et mettre le code d'origine, sinon comment peut-on s'y retrouver ?

    Citation Envoyé par L'AMI Yves
    L'instruction que j'avais écrite était fausse car elle prétendait concaténer un texte et un nombre, et l'erreur a été corrigée (et le module s'est exécuté) lorsque j'ai fat ce qu'il fallait : concaténer et un nombre FORMATE.
    non plus... c'est tout à fait possible de concaténer un texte et un nombre ... la preuve dans la fenêtre d'exécution:
    Nom : _1.JPG
Affichages : 49
Taille : 5,0 Ko

    il faut donc chercher la cause du dysfonctionnement ailleurs (Le mauvais ouvrier a toujours de mauvais outils)
    Citation Envoyé par L'AMI Yves
    ]Je ne sais pas si j'arrive à me faire comprendre, ou si je suis simplement rien d'autre qu'un boomer complètement dépassé par l'évolution du monde...
    je déteste ce terme de "boomer" qui catégorise des personnes selon leur âge et qui a fini par avoir, il y a peu, une connotation négative véhiculée, comme d'habitude, par les réseaux sociaux ou tout est blanc ou noir, pour ou contre, avec ou sans ... sans jamais faire dans la nuance
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  6. #26
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    580
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 580
    Points : 140
    Points
    140
    Par défaut
    Merci de continuer à répondre avec patience.

    Je suis définitivement brouillé avec une certaine forme de précision, pourtant bien nécessaire dans les échanges par écrit. Je suppose que tu as maintenant compris que, quand j'ai inséré dans mon texte une instruction VBA, je l'ai encadrée par des apostrophes : c'était une maladresse qui t'a induit en erreur : ça n'était pas un commentaire en VBA.

    Mon texte précise cependant bien que le code VBA qui prétendait concaténer un texte et un nombre était refusé (le code associé au bouton ne s'exécutait pas), alors qu'avec le "format()", il s'exécutait.

    Quoi qu'il y ait derrière, ce qui me met littéralement hors de moi, c'est que le principe de fonctionnement des développeurs de VBA pour Access semble être d'arrêter l'exécution d'un module dans lequel il y a une erreur SANS EXPLICATION.

    Voila, j'ai poussé mon coup de gueule, je vais retourner à essayer de comprendre pourquoi ça continue à ne pas s'exécuter (un peu plus loin)...

    AMIcalement.

  7. #27
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 728
    Points : 14 747
    Points
    14 747
    Par défaut
    bonjour,
    Quoi qu'il y ait derrière, ce qui me met littéralement hors de moi, c'est que le principe de fonctionnement des développeurs de VBA pour Access semble être d'arrêter l'exécution d'un module dans lequel il y a une erreur SANS EXPLICATION.
    c'est ton ressenti, mais si il y a erreur il y a un message associé, pas forcément explicite mais quand même assez, selon moi, pour aiguiller l'utilisateur développeur.
    Mais effectivement, quelques fois, tant qu'on n'a pas l'explication d'un "non fonctionnement", c'est frustrant. Encore une fois le code peut être correct syntaxiquement et ne pas fonctionner à cause d'une mauvaise utilisation de cette syntaxe ...

    Et si tu veux toujours de l'aide, poste le code qui te pose problème et indique quelle ligne d'instruction semble ne pas fonctionner (encore faut-il nous donner aussi les mêmes éléments pour pouvoir reproduire le problème)
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  8. #28
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    580
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 580
    Points : 140
    Points
    140
    Par défaut
    Voici toute ma base de données. On ouvre le formulaire "Post-it", qui fait défiler les rendez-vous. Si l'on clique sur le nom, un autre formulaire s'ouvre, qui affiche toutes les données associées. Mais, dans l'état actuel, on ne peut plus rien faire : fermer ce formulaire et relancer les rendez-vous, ou se préparer à modifier/supprimer/ajouter sur la personne.

    Merci à qui voudra bien m'indiquer ce qui ne va pas.

    AMIcalement
    Fichiers attachés Fichiers attachés

  9. #29
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 728
    Points : 14 747
    Points
    14 747
    Par défaut
    bonsoir,
    je site dans l'ordre les anomalies trouvées dans le code qui, d'ailleurs, n'était pas compilé:
    - il manquait l'instruction End Function à la fonction Autoris
    - dans cette même fonction la variable Ajoute est utilisée alors que c'est Ajout qui est déclarée en début de module (raison pour laquelle il faut toujours déclarer Option Explicit (ou cocher "Déclaration des variables obligatoire" depuis le menu "Outils", puis "Options et dans l'onglet "Editeur" de la fenêtre VBA): cela oblige à déclarer toutes les variables, sans oublier de compiler pour que VBA détecte les non déclarées.
    - la propriété Datamode dans un formulaire n'existe pas (ou alors dans une ancienne version d'Access ?), j'ai utilisé les propriétés AllowEdits, AllowAdditions et AllowDeletions.

    Toutes ces erreurs sont probablement à l'origine du dysfonctionnement constaté (impossibilité de fermer les formulaires)
    Voici, en pièce jointe, la base corrigée: Post-it1 - revisité.zip

    - j'ai modifié les boutons pour qu'ils fonctionnent correctement
    - je n'ai pas touché au code Rouge dont je n'ai saisi ni l'utilité, ni le fonctionnement: peut-être faut-il une petite explication ...
    - je n'ai pas touché au code du bouton Suppression (à part autoriser l'action dans le formulaire) ne sachant pas comment tu souhaites t'y prendre pour supprimer sans le sélecteur d'enregistrement qui permet la suppression sans code.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  10. #30
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    580
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 580
    Points : 140
    Points
    140
    Par défaut
    Cela fonctionne très bien, je suis bien soulagé.

    Je n'avais pas fait assez attention (polarisé sur autre chose !) à la logique de mes boutons Supprimer, Modifier, Ajouter : quand le formulaire s'ouvre, ils sont (devraient être) rouge, et le formulaire est en lecture seule. L'utilisateur clique sur celui de ce qu'il veut faire, et il devient vert. Alors l'utilisateur fait ses modifs, et le enregistre grâce au bouton vert, qui est censé redevenir rouge, et le formulaire en lecture seule. Je vois que tu as mis es instructions qui autorisent ces différents fonctionnement dans les routines, mais il me manque l'action a effectuer au clic sur le bouton quand il est vert. Tu l'as mise pour la suppression :
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
            DoCmd.GoToRecord acDataForm, Me.Name, acNewRec
    Peux-tu me dire l'équivalent pour les deux autres, STP.

    AMIcalement

  11. #31
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 728
    Points : 14 747
    Points
    14 747
    Par défaut
    bonjour,
    L'utilisateur clique sur celui de ce qu'il veut faire, et il devient vert. Alors l'utilisateur fait ses modifs, et le enregistre grâce au bouton vert, qui est censé redevenir rouge, et le formulaire en lecture seule.
    pour moi, cela n'a aucun sens: l'utilisateur se donne lui-même les droits, avant de passer à l'action ; à quoi sert tout ça ?
    D'autant qu'en modification il n'enregistre pas vraiment en appuyant sur le bouton: c'est une illusion car il peut toujours appuyer sur Echap, je peux te certifier que dans ce cas la modification ne sera pas prise en compte.
    En l'état, il n'y a que le bouton "Annuler" (fermer le formulaire) qui valide la saisie.

    Peux-tu me dire l'équivalent pour les deux autres, STP.
    je te les donne:
    - la commande pour supprimer c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            Me.AllowDeletions = True ' autorisation
            DoCmd.RunCommand acCmdDeleteRecord ' action du système avec message de confirmation (sinon désactiver les avertissements (SetWarnings) avant et réactiver après)
    - pour la modification c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            Me.AllowEdits = True ' autorisation
            Me.Nom.SetFocus ' pour se positionner sur le nom, action de saisie à suivre
    - pour ajouter un nouvel enregistrement (et non pas pour la suppression) c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            Me.AllowAdditions = True ' autorisation
            DoCmd.GoToRecord acDataForm, Me.Name, acNewRec  ' pour se positionner sur un nouvel enregistrement, du formulaire, action de saisie à suivre
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Changer la couleur d'un bouton
    Par castel51 dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 02/11/2006, 10h36
  2. Réponses: 4
    Dernier message: 31/07/2006, 16h18
  3. Changer la Couleur d'un bouton
    Par fpinter dans le forum VC++ .NET
    Réponses: 4
    Dernier message: 15/07/2006, 12h09
  4. changer la couleur d'un bouton
    Par xenos dans le forum Delphi
    Réponses: 20
    Dernier message: 24/05/2006, 17h10
  5. Réponses: 3
    Dernier message: 19/04/2006, 16h45

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