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. #1
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    538
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 538
    Points : 132
    Points
    132
    Par défaut VBA Changer la couleur d'un bouton sur clic
    Bonjour à tous.

    Je ne comprends pas où peut être le problème : j'ai un formulaire en readonly qui contient trois boutons. En procédure événementielle "sur ouverture", j'exécute une fonction qui les colore tous en rouge, et trois procédures "on clic" qui est censée les mettre tous au rouge, puis celui qui a été cliqué en vert. Jusque là, ça marche.

    Pour poursuivre le développement de mon application, je désire passer le formulaire en mode "éditable", donc, derrière mon instruction "BackColor = RGB(0,255,0)", je rajoute l'instruction "Me.DataMode = acFormEdit". Là, je n'ai pas testé le mode éditable, mais le bouton ne se met pas au vert !

    Pour résumer, ma routine de Click contient deux instructions : "tous en rouge" et "moi en vert" : ça marche. Si je rajoute "formulaire éditable" ça marche pas !

    J'aimerais comprendre...

    AMIcalement.

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 285
    Points : 19 484
    Points
    19 484
    Billets dans le blog
    64
    Par défaut
    Bonjour,

    Regardez du côté des propriétés AllowEdits, AllowAdditions et AllowDeletions du formulaire.

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  3. #3
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    538
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 538
    Points : 132
    Points
    132
    Par défaut
    Je n'ai pas trouvé de rubrique "Allow" ("Autoriser") pour les boutons, et je n'ai pas trouvé de rubrique "Allow Edit" ("Autoriser Modification" ou semblable) pour un bouton de formulaire ou pour un formulaire). Si je mets "Couleur au clic" sur vet, il est bien vert tant que je maintiens le bouton, mais il revient si je lâche.

    Merci d'avoir répondu, mais le problème n'est pas résolu.

    AMIcalement.

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 285
    Points : 19 484
    Points
    19 484
    Billets dans le blog
    64
    Par défaut
    Dans la feuille des propriétés du formulaire :

    "Ajout autorisé"
    "Suppr. autotisée"
    "Modif autorisée"

    En VBA dans le code du module du formulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Me.AllowAdditions = True
    Me.AllowDeletions = True
    Me.AllowEdits = True
    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  5. #5
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    538
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 538
    Points : 132
    Points
    132
    Par défaut
    En effet, je ne les avais pas vues, pas bien cherchées (j'ai cherché "Autoriser ..."). Mais elles sont toutes les trois à "Oui".

    Il y a aussi "Verrouillage" = "Aucun". Dans "Autoriser ...", il n'y a que "mode Formulaire" qui est sur "Oui".

    Le mystère reste entier...

    AMIcalement.

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 285
    Points : 19 484
    Points
    19 484
    Billets dans le blog
    64
    Par défaut
    Ce que vous modifier manuellement dans la feuille des propriétés du formulaire (en mode création) est conservé après enregistrement des changements.

    Ce n'est pas le cas pour le code VBA :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_Open(Cancel As Integer)
     
    Me.AllowEdits = False
     
    End Sub
    Les "modifs ne sont pas autoriées" durant la session du formulaire, une fois fermé, sa propriété "Modif autorisée" revient à Oui.

    Pour moi le paramètre DataMode n'existe que pour la méthode openform :

    https://learn.microsoft.com/fr-fr/of...docmd.openform

    Enfin, si vous ouvrez votre formulaire en mode readonly normalement les 3 propriétés en question devraient être à False.
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  7. #7
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    538
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 538
    Points : 132
    Points
    132
    Par défaut
    Ah ! J'ai le cerveau un peu embué, ce soir. Ce que vous me dites, c'est que je n'ai pas le droit de modifier dynamiquement le "DataMode" de mon formulaire : soit je l'ouvre en mode "Edit", soit en mode "ReadOnly", mais je ne peux pas changer. Et, en plus, si j'essaie, Access se contente de ne rien faire et rien dire. C'est bien ça ?

    AMIcalement.

  8. #8
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 285
    Points : 19 484
    Points
    19 484
    Billets dans le blog
    64
    Par défaut
    Citation Envoyé par L'AMI Yves Voir le message
    Ah ! J'ai le cerveau un peu embué, ce soir. Ce que vous me dites, c'est que je n'ai pas le droit de modifier dynamiquement le "DataMode" de mon formulaire : soit je l'ouvre en mode "Edit", soit en mode "ReadOnly", mais je ne peux pas changer. Et, en plus, si j'essaie, Access se contente de ne rien faire et rien dire. C'est bien ça ?

    AMIcalement.
    Oui, vous l'ouvrez en mode "readOnly", et si vous souhaitez rétablir en VBA le mode édition depuis un bouton de commande, vous utilisez dans votre code sur clic :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    '...
    Me.AllowEdits = True
    Me.AllowAdditions = True
    Me.AllowDeletions = True
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  9. #9
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    538
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 538
    Points : 132
    Points
    132
    Par défaut
    A vrai dire, pour le moment, le problème n'est pas vraiment de savoir si le formulaire est en mode "Edit", je ne l'ai pas testé, mais de changer la couleur du bouton. Il doit y avoir un truc "énorme" que je ne perçois pas (et personne pour le moment qui ait répondu à mon post) : il y a dans le code un ' msgbox "truc" ' qui n'est pas exécuté par le code VBA, sauf si c'est la seule instruction de la routine associée au bouton.

    AMIcalement.

  10. #10
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    538
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 538
    Points : 132
    Points
    132
    Par défaut
    Voici le code associé à mon bouton :
    Code VBA : 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
     
    Private Sub Modifier_Click()
        On Error GoTo Err
        Rouge
        If Me.DataMode = acFormReadOnly Then
            Me.AllowEdits = True
            Me.AllowAdditions = True
            Me.AllowDeletions = True
            Me.Modifier.BackColor = RGB(0, 255, 0)  ' vert
            MsgBox "Fait"
        Else
            MsgBox "Je ferme"
            DoCmd.Close
        End If
        GoTo 0
    Err:
        MsgBox "erreur"
    End Sub
    Je ne comprends pas le fonctionnement de VBA : quand j'amène la souris sur le bouton, il change d'aspect (ce qui est, apparemment, le fonctionnement normal d'un bouton de formulaire), mais quand je clique, il ne se passe rien ! Aucun message, aucun changement sur le bouton, un peu comme si le code n'était pas exécuté. Pourtant, s'il n'y avait que le "msgbox" dans le code, je le verrais, je l'ai testé.

    AMIcalement.

  11. #11
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 285
    Points : 19 484
    Points
    19 484
    Billets dans le blog
    64
    Par défaut
    Essayer ceci sans la gestion d'erreur et sans le datamode :

    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
     
    Private Sub Modifier_Click()
        ' On Error GoTo Err
        Rouge
        If Me.AllowEdits = False Then
            Me.AllowEdits = True
            Me.AllowAdditions = True
            Me.AllowDeletions = True
            Me.Modifier.BackColor = RGB(0, 255, 0)  ' vert
            MsgBox "Fait"
        Else
            MsgBox "Je ferme"
            DoCmd.Close
        End If
     
     
    End sub
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  12. #12
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    538
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 538
    Points : 132
    Points
    132
    Par défaut
    Et bien non, ça ne marche pas. Et je n'arrive toujours pas à comprendre pourquoi VBA ne fait pas ce que j'en attends SANS RIEN FAIRE D'AUTRE ! Est-ce qu'il y a un mécanisme, dans les options de configuration d'Access, qui empêche la publication des messages d'erreur ? J'ai beaucoup fait de VB6, en son temps, et dieu sait s'il n'était pas toujours facile d’interpréter les messages d'erreur, mais au moins, il y en avait, on savait à quelle ligne ça plantait. Il n'est pas possible de développer du logiciel dans un environnement qui ne signale pas où et quoi quand il y a une erreur !

    AMIcalement, toujours.

  13. #13
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 285
    Points : 19 484
    Points
    19 484
    Billets dans le blog
    64
    Par défaut
    Bonjour,

    Pouvez-vous nous donner le code qui permet d'ouvrir le formulaire ?

    Apparemment vous exécutez une procédure rouge au début, pouvez-vous nous donner le code ?

    Si le code ne s'exécute pas c'est en général parce que les macros ne sont pas activés dans les options, mais ce n'est apparemment pas votre cas.

    Sinon, vous pouvez poster votre base..

    Cdlt
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  14. #14
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    538
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 538
    Points : 132
    Points
    132
    Par défaut
    Il y a deux formulaires : l'un pour afficher le contenu d'une requête, l'autre pour afficher un enregistrement d'un table. Le premier, associé au formulaire "Post-It" :
    Code VBBA : 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
     
    Option Compare Database
    Public ModePersonne As Integer, Occupé As Boolean
     
    Private Sub Form_Open(Cancel As Integer)
        Me.TimerInterval = 5000
        Occupé = False
    End Sub
     
    Private Sub form_timer()
        If Not Occupé Then
            DoEvents
            If Me.Recordset.RecordCount = Me.Recordset.AbsolutePosition + 1 Then
                DoCmd.GoToRecord acDataForm, Me.Name, acFirst
            Else
                DoCmd.GoToRecord acDataForm, Me.Name, acNext
            End If
        End If
    End Sub
     
    Private Sub Nom_Click()
        Dim Num As Long
        Occupé = True
        Num = DLookup("Numéro", "Personnes", "Nom = '" & Me.Nom.Value & "'")
        If Not IsNull(Num) Then
            DoCmd.OpenForm "Personne", WhereCondition:="Numéro=" & Num
        Else
            MsgBox "Enregistrement non trouvé pour '" & Me.Nom & "'", vbInformation
        End If
    End Sub

    et le second, associé au fermulaire "Personne" si l'on clique sur le xase "Nom" de "Post-It" :
    Code VBA : 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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
    Public Modif As Boolean, Ajout As Boolean, Suppr As Boolean
    Option Compare Database
     
    Private Function Autoris()
        Me.AllowEdits = Modif
        Me.AllowAdditions = Ajoute
        Me.AllowDeletions = Suppr
     
    Private Sub Form_Current()
    '    DoEvents
    '    Rouge
        Modif = False
        Ajout = False
        Suppr = False
    '    Autoris
    End Sub
     
    Private Function Rouge()
        Me.Nouveau.BackColor = RGB(255, 0, 0)
        Me.Modifier.BackColor = RGB(255, 0, 0)
        Me.Supprimer.BackColor = RGB(255, 0, 0)
    End Function
     
    Private Sub Nouveau_Click()
        Rouge
        Me.Nouveau.BackColor = RGB(0, 255, 0)
        Me.DataMode = acFormEdit
    End Sub
     
    Private Sub Modifier_Click()
    '    On Error GoTo Err
        Rouge
        If Me.AllowEdits = False Then
            Me.AllowEdits = True
            Me.AllowAdditions = True
            Me.AllowDeletions = True
    '    Modif = True
    '    Autoris
            Me.Modifier.BackColor = RGB(0, 255, 0)  ' vert
            MsgBox "Fait"
        Else
            MsgBox "Je Ferme"
            Occupé = False
            DoCmd.Close
        End If
    '    GoTo 0
    'Err:
    '    MsgBox " Erreur"
    End Sub
     
    Private Sub Supprimer_Click()
        Rouge
        Me.Supprimer.BackColor = RGB(0, 255, 0)
    End Sub
     
    Private Sub Annuler_Click()
        Rouge
        DoCmd.Close
    End Sub
     
    Private Sub Form_Close()
        Dim Oc As String
        Occupé = False
        If Occupé Then Oc = "O" Else Oc = "L"
        MsgBox "Je Ferme" + " " + Oc
        Forms("Post-it").SetFocus
    End Sub
    Je ne sais pas envoyer des images, mais est-ce nécessaire ?

    AMIcalement.

  15. #15
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 285
    Points : 19 484
    Points
    19 484
    Billets dans le blog
    64
    Par défaut
    A première vue, Le code sur timer du 1er formulaire "Post-It" pourrait avoir une incidence sur le déroulement du code du formulaire "Personne". Il pourrait reprendre la main et perturber le fonctionnement du code du form. "Personne", à vérifier..

    Pas moyen de fermer le form. "Post-It" après ouverture de "Personne" (ou de désactiver le timer) ?
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  16. #16
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    538
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 538
    Points : 132
    Points
    132
    Par défaut
    Je désespère d'arriver à quoi que ce soit : tant que VBA ne me dira pas pourquoi il ne fait pas ce que j'attends, je ne vois pas comment je pourrais avancer - ni d'ailleurs comment qui que ce soit le pourrait. J'ai beau aller cocher "arrêter sur toutes les erreurs" ou que sais-je encore, il n'y a pas moyen : je fais une petite routine VBA de rien du tout, ça marche : j’ajoute une bricole (un "msgbox", par exemple) : ce qui marchait ne marche plus : tout se passe comme si le code VBA ne s'exécutait pas. Les développeurs ont décidé que le code faux ne s'exécutera pas, sans explication ? Il y en a qui arrivent à mettre au point leur code, ici ?

    Bon, ce soir j'ai le moral en berne. J'espère qu'il existe quand-même un moyen d'afficher les erreurs, et que quelqu'un va me le donner...

    AMIcalement.

  17. #17
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 686
    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 686
    Points : 14 686
    Points
    14 686
    Par défaut
    bonsoir,
    Essaie d'ouvrir ton formulaire "Personne" en mode dialogue...
    problème: le mode dialogue stoppe le VBA mais pas le timer : il faut mettre l'instruction Me.TimerInterval = 0 avant l'ouverture du formulaire et après, mettre l'instruction Me.TimerInterval = 5000 la suite du code reprendra à la fermeture de "Personne" et plus besoin de la variable "Occupé"...
    tu peux aussi enlever l'instruction DLookup pour trouver "Numéro", il suffit de mettre le champ en invisible dans "post-it"
    ci-joint l'exemple de l'utilisation de tout ça avec en prime une gestion simple d'affichage des erreurs (dans Contact_Click)
    DefilementAutoFrm1.zip
    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 ?

  18. #18
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    538
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 538
    Points : 132
    Points
    132
    Par défaut
    Merci de répondre.

    Mais ma frustration reste entière : comment se fait-il qu'il n'y ait pas moyen de savoir ce qu'il se passe ?.

    Tu me dis d'ouvrir "Personne" en mode dialogue. Qu'est-ce que c'est, en quoi est-ce différent de ce que je faisais, qu'est-ce que ça va m'autoriser à faire, et m'interdire de faire ?

    J'ai jadis un peu pratiqué Access, je n'ai pas le souvenir d'avoir été dans un tel embarras. Et je pratique couramment VBA sous Word et sous Excel : ça n'a rien à voir : comment cela s'explique-t-il ?

    AMIcalement.

  19. #19
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 686
    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 686
    Points : 14 686
    Points
    14 686
    Par défaut
    bonjour,
    comme je l'explique, l'ouverture en mode dialogue permet de ne pas continuer le code VBA: c'est comme l'écran pop-up d'une boite message : il s'ouvre en mode modal (on ne peut pas quitter l'écran pour aller à un autre formulaire ou la fenêtre Access) il exécute l'instruction d'ouverture du formulaire et c'est à sa fermeture que la suite du code s'effectuera.
    Pour ce qui est du Timer, il faut l'interrompre car c'est la seule instruction (sans doute gérée par une dll interne) qui continue à actualiser le formulaire appelant (post-it) d'où la neccessité de le redémarrer après l'instruction d'ouverture.
    J'ai jadis un peu pratiqué Access, je n'ai pas le souvenir d'avoir été dans un tel embarras. Et je pratique couramment VBA sous Word et sous Excel : ça n'a rien à voir : comment cela s'explique-t-il ?
    Je n'ai pas d'explication plus claire à donner, je connais le paramètre WindowMode de la commande OpenForm par l'aide Microsoft et même si ce n'est pas écrit explicitement on peut supposer que le mode pop-up a une conséquence dans le déroulement d'un code quel qu'il soit.
    Cela dit, ce que tu veux faire est un peu complexe à mettre en œuvre et demande une pratique un peu plus poussée que le niveau intermédiaire.
    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 ?

  20. #20
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    538
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 538
    Points : 132
    Points
    132
    Par défaut
    Je viens de résoudre un problème qui m'a pris la tête pendant 24 heures (oui, ça me travaille même pendant mon sommeil !) : J'ai codé une instruction "Debug.Print" dans une routine dont je voulais vérifier le comportement. Il s'agissait d'afficher la valeur (numérique) du champ d'un formulaire, et j'ai codé
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print 'Valeur : ' & champ
    Bien sûr, c'est une erreur grossière. Mais le résultat observable, c'est que la routine ne s'exécutait pas. En VB6, et en VBA pour Excel ou Word, il y aurait eu un message d'erreur, et c'était réglé en 5 secondes. Y a-t-il une explication à ce phénomène, Microsoft est-il au courant de la frustration que cela provoque, certainement, à des milliers d'autres développeurs que moi ?

    AMIcalement.

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

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