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

Macros et VBA Excel Discussion :

Latence bouton userform [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Latence bouton userform
    Bonjour à tous,

    J'ai un problème de latence avec mon userform, je m'explique.

    Comme vous pouvez le voir sur la photo ci-dessous, les boutons 1, 5, 10, me permettent de modifier une variable dans mon code VBA (variable qui sera par la suite affichée dans la textbox à droite).
    Tout simplement quand je vais cliquer sur un bouton à plusieurs reprises, ma quantité ce cumule.

    Mon pb : Si je clique 2x de suite sur le même bouton trop vite (double clique), la macro liée au bouton marche 1x. Si j'attend un peu ou je clique 3x de suite elle marche.

    Nous parlons de fractions de secondes mais ça me pose tout de même un problème, je dois cliquer 3x pour 2.

    Nom : Capture.PNG
Affichages : 590
Taille : 2,5 Ko

    Pouvez vous m'aider à supprimer cette latence ?
    Merci d'avance.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Bonjour,

    Est-ce que tu ne peux pas remplacer la macro double clic par une macro clic droit ? Ou insérer un message de confirmation dans la macro double clic ?
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 6
    Points : 1
    Points
    1
    Par défaut suite
    Bnojour Daniel,

    Merci pour votre réponse.

    Quand je clique sur le bouton dans le userform il lance une macro.
    Quand je clique deux fois c'est pour lancer deux fois la macro, par exemple je veux une variable à 2 je vais cliquer deux fois sur le bouton 1.
    Je n'ai rien lié à la macro double clique.

    Par contre maintenant, je me demande si le fait de vouloir lancer rapidement deux fois la macro, la prise en compte d'un double clique ne se fait pas à la place d'un deuxieme simple clique.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Les boutons on un temp de latence! Difficile de le réduire sens toucher aux paramètres Windows!

    La meilleure solution c'est de laisser l'utilisateur se calmer, quand il aura compris que ça n'est pas utile il se calmera!

    la tu tombe dans l’excès inverse!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim Cl As Boolean
    Private Sub CommandButton1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Cl = True
    While Cl = True
        If Me.TextBox1 = "" Then Me.TextBox1 = 0
       Me.TextBox1 = Me.TextBox1 + 1
    DoEvents
    Wend
    MsgBox "r"
    End Sub
     
    Private Sub CommandButton1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Cl = False
    End Sub
    Dernière modification par Invité ; 27/08/2015 à 13h18.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 6
    Points : 1
    Points
    1
    Par défaut suite
    Bnojour rdurupt,

    Merci pour votre réponse,

    Pour être franc, je suis également l'utilisateur. Ce n'est pas vital en permanence d'aller aussi vite, mais il arrive des situations ou j'en aurais vraiment besoin.

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    Bonjour
    perso plutot que m'ennuyer a controler le tickcount(ou un eventuel timer)voir doubleclick pour arriver au nombre que je veux
    je ferait un menu contextuel(popup) sur le bouton
    un peu comme ceci:
    Nom : Capture.JPG
Affichages : 622
Taille : 57,5 Ko

    exemple en piece jointe

    Fichiers attachés Fichiers attachés
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 6
    Points : 1
    Points
    1
    Par défaut suite
    Bonjour Patrick,

    Merci pour votre réponse,

    La solution est trop fragile, l'utilité de supprimer la latence est de pouvoir cliquer rapidementavec la précision liée à la taille du bouton. En gros je veux pouvoir taper comme une brute les yeux fermés pour augementer mon compteur.

    Si je veux rentrer dans le détails je peux directement saisir ma valeur dans la textbox.

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut
    re j'ai oublié d'argumenter le sous menu "de 1 en 1"
    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 CommandButton1_Click()
        On Error Resume Next
        Application.CommandBars("boutonX").Delete
        On Error GoTo 0
        Set mabarre = Application.CommandBars.Add(Name:="boutonX", Position:=msoBarPopup)
        Set cpop1 = mabarre.Controls.Add(Type:=msoControlPopup)
        cpop1.Caption = "de 1 en 1"
        With cpop1
            For X = 1 To 9
                Set bout = cpop1.Controls.Add(Type:=msoControlButton)
                With bout
                    .Caption = X & "fois"
                    .OnAction = "'pasteontextbox " & a & "'"
                End With
            Next
        End With
    
        Set cpop2 = mabarre.Controls.Add(Type:=msoControlPopup)
        cpop2.Caption = "de 5 en 5"
        With cpop2
            For a = 5 To 100 Step 5
                Set bout = cpop2.Controls.Add(Type:=msoControlButton)
                With bout
                    .OnAction = "'pasteontextbox " & a & "'"
                    .Caption = a & "fois"
                End With
            Next
        End With
        mabarre.ShowPopup
    Application.CommandBars("boutonX").Delete
    End Sub
    La solution est trop fragile

    on a pas la meme définition de "fragile" alors
    bon courage
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 6
    Points : 1
    Points
    1
    Par défaut suite
    Fragile dans le sens ou je risque de cliquer ailleur et devoir recommencer la procédure. Sachant qu'aux max je serais sur 5x et que la répartion de mon utilisation est grosso modo à 90% entre 2x et 3x.
    Mais merci pour votre retour, cette outil pourra mettre utile je pense.

  10. #10
    Invité
    Invité(e)
    Par défaut
    sauf utiliser une sourie avec un indice de pression supérieur au niveau du click! Nom : 2825.gif
Affichages : 561
Taille : 25,0 Ko

  11. #11
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Bonjour.

    Si on désactive le bouton et qu'on le réactive, ça fonctionne.

    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
     
    Private Sub CommandButton1_Click()
     Set obj = CommandButton1
     
     obj.Enabled = False
     obj.Enabled = True
     
     Call macro
     TextBox1 = Val(TextBox1) + 1
     
    End Sub
     
    Sub macro()
     TextBox2 = Val(TextBox2) + 1
     For i = 1 To 100
      Cells(i, 1) = ""
      Cells(i, 1) = i
     Next
    End Sub
    Cordialement

    Docmarti.

  12. #12
    Invité
    Invité(e)
    Par défaut
    @ Docmarti

    je suis d'accord avec toi mais ça ne guéri pas Parkinson !

    notre amis veut faire des click intempestif et que l'appli réagis au doit faute de pouvoir à l’œil!
    Dernière modification par AlainTech ; 05/09/2015 à 10h29. Motif: Suppression de la citation inutile

  13. #13
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Citation Envoyé par rdurupt Voir le message
    je suis d'accord avec toi mais ça ne guéri pas Parkinson !
    Ça ne le guérit pas encore, mais ça permet de le diagnostiquer.
    Cordialement

    Docmarti.

  14. #14
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    Bon allez j'en rajoute une couche

    vous avez tous tendance a oublier les chose simple

    regarder du coté de TakeFocusOnClick




    avec la mise a jour du textbox dans le mouse up pour etre sur
    essayé garanti meme a grande vitesse 10 click= 10 points

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    TextBox1.Value = TextBox1.Value + 1
    End Sub
    j'ai meme essayé avec les doigts de pied ca marche aussi
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  15. #15
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 6
    Points : 1
    Points
    1
    Par défaut suite
    Merci pour vos réponses,

    je viens d'essayer bouton.enabled et ça marche au top ! Merci beaucoup !!

  16. #16
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Points : 1 219
    Points
    1 219
    Par défaut
    Bonjour,

    J'ai supposé que le problème de latence est lié aux MSForms Controls qui possèdent les événements Click et DblClick et qui, selon l'interprétation d'Excel, entrent en conflit.
    Le Control ScrollBar n'a aucun des deux mais on peut intercepter l'action d'un clic par son événement Change.

    J'ai construit un exemple à parfaire d'après cette constatation (voir la pièce jointe).
    Fichiers attachés Fichiers attachés

  17. #17
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    PmO @ sur un pc un peu lent du bulbe le probleme reste inchangé

    le probleme n'est pas le decompte mais la latence entre deux click sur le control quelqu'il soit et selon la puisance du pc ou de son UC occupée

    j'ai testé en poussant mon pc a 95% procc et 70%memoire

    la solution de (disabled /enabled) est bonne mais perso, suprimer la prise de focus resout le soucis amplement et simplement car cette seule action elimine la latence engendrée par la prise de focus en memoire
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. [XL-2007] Activer bouton userform depuis un autre userform
    Par stephadm dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 13/10/2012, 21h45
  2. Changer nom bouton Userform de façon permanente.
    Par jackborogar dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/06/2012, 16h32
  3. griser bouton userform
    Par fny_bnfnt dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/11/2010, 10h45
  4. Bouton userform confirmer et annuler
    Par chrisssou dans le forum Excel
    Réponses: 12
    Dernier message: 25/03/2010, 03h06
  5. Double action sur un seul bouton (userform)VBA)
    Par willybass dans le forum VBA Access
    Réponses: 5
    Dernier message: 14/05/2008, 15h10

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