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 :

Clignotement des contrôles ActiveX [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club Avatar de Yosko
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2008
    Messages : 61
    Points : 64
    Points
    64
    Par défaut Clignotement des contrôles ActiveX
    Bonjour à tous,

    Toujours sur ma migration Excel 2003 > 2010, j'ai un autre souci. Voici ma configuration :
    - Feuille excel 2010 xlsm avec 10 contrôles ActiveX (8 boutons, 2 champs texte).
    Après divers actions (dont l'aperçu avant impression), les contrôles ActiveX se mettent à clignoter, même s'ils fonctionnent toujours aussi bien. Le clignotement est franchement violent (attentions aux épylepsies ).
    Pendant un temps, j'ai pensé que le soucis pouvait venir du code VBA présent dans le classeur, je l'ai donc supprimé dans son intégralité, mais le problème persiste.

    J'ai noté que ce problème ne survient que parce que j'ai des lignes fixées ("figer les volets") sur ma feuille. Lorsque je les défige, le bug ne se produit plus. Malgré tout il m'est nécessaire de les garder figer.

    Auriez-vous une idée de l'origine du problème, et de la solution ?
    D'avance merci de votre aide.

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut heu
    bonsoir
    n'y a t_il pas moyen de metre tes controls dans un userform plutot ?

    tu n'aura plus ce probleme

    au plaisir

  3. #3
    Membre du Club Avatar de Yosko
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2008
    Messages : 61
    Points : 64
    Points
    64
    Par défaut
    Hélas non. Ces contrôles servent à agir en direct sur le contenu de la feuille de telle manière qu'on a besoin qu'il soit visible en même temps que les données.

    Toujours pas de solution en vue, j'ai exploré déjà pas mal de possibilités et suis en train de m'arracher le peu de cheveux qu'il me reste...

    Premièrement, il faut préciser que les ActiveX ne sont pas les seuls concernés. Tout les types d'élément (rectangles, zone de textes, contrôles,... en bref tout ce qui se pose "au dessus" de la feuille) sont concernés. De plus, seuls ceux situés dans la zone "figée" clignotent. En bref, on dirait qu'Excel ne sait plus qui doit être au dessus : le volet figé ou les contrôles et autre...

    J'ai supprimés et recréé les contrôles via 2010 (puisqu'ils avaient été créés à l'origine dans 2003), j'ai tenté de jouer sur le visible du volet, de la feuille, du workbook ou de la fenêtre pour mettre fin au clignotement, mais rien n'y fait...
    Je ne peux hélas pas non plus me permettre de fermer/réouvrir automatiquement le classeur pour contourner le problème...

    EDIT : j'ai oublié de préciser que le clignotement n'a lieu que lorsque le focus est sur la partie non figée (ce qui arrive souvent dans mon cas).

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    et alors ca n'a rien a voir le fait qu'il soit dans un userform

    au contraire le userform sera toujour au premier plan je vois pas ou est le probleme



    il suffit de l'activer a l'ouverture du fichier et de le placer de facon a ce que ca coresponde a l'affichage que tu avais sans


    au plaisir

  5. #5
    Membre du Club Avatar de Yosko
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2008
    Messages : 61
    Points : 64
    Points
    64
    Par défaut
    Oh, tu veux dire : utiliser un userform non modal, afin de pouvoir passer rapidement/facilement entre les contrôles du userform et les cellules de la feuille ? Ca pourrait le faire.
    Je garde cette idée en stock, merci beaucoup !
    Comme ça nécessiterait du redéveloppement, je vais encore farfouiller un peu avant de me pencher sur ça.

    Pour l'instant j'essaie de voir si je peux faire une sorte de "repaint/redraw/refresh" sur la "page/le volet/les contrôles" afin de couper court à ce bug. Comme je ne connais pas trop ce genre de méthodes je galère un peu, mais bon...

    Je vous tiens au courant de mes recherches, et si vous avez d'autres idées concernant cette solution de "repaint", je suis tout ouïe (enfin "tout vue", plutôt).

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut
    tien voila un exemple

    j'ai volontairement figés les volet a la lignes 13

    dans la feuille 1 les controls sont dans le sheets
    dans la deuxieme feuille les controls sont dans le userform

    au plaisir

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 53
    Points : 51
    Points
    51
    Par défaut
    Bonsoir tout le monde, Patrick, dans le code de la Feuil2, d'ou vient [m1] et [n1]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_Activate()
    UserForm1.Show 0
    UserForm1.Top = [m1].Top + Application.CommandBars("standard").Height * 6
    UserForm1.Left = [n1].Left
    End Sub
    Merci de m'éclairer…

    PS : les deux solutions fonctionnent parfaitement sans clignoter [Excel 2010].

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    bonjours

    c'est une facon de marquer en plus court


    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [A1].left= range("A1") .left

    tout simplement


    au plaisir

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 53
    Points : 51
    Points
    51
    Par défaut
    OK, merci bien…

  10. #10
    Membre du Club Avatar de Yosko
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2008
    Messages : 61
    Points : 64
    Points
    64
    Par défaut
    Bonjour,

    Tout d'abord, merci à Patrick pour ton aide. Ta solution est effectivement pas mal, même si je ne vais pas me tourner vers ça au final (il m'aurait fallut pour cela masquer la barre des titre du UserForm, et rendre son fond transparent, ce qui m'aurait compliqué la tâche, même si j'ai vu que des solutions existaient pour ça).

    J'ai enfin compris le cas de test EXACT qui produit ce bug, et je vais donc pouvoir le contourner plus facilement. Pour le reproduire, il faut remplir les conditions suivantes :
    • Etre sous Excel 2010 (c'est peut-être le cas aussi sous 2007)
    • Figer les volets sur 1 ou plusieurs lignes
    • Afficher des "objets flottants" (boutons ActiveX, formes, etc...) au dessus du volet figé
    • Avoir définit la plage nommée "Zone_d_impression" (un nom spécifique servant uniquement à définir la zone d'impression), et ce sur des lignes ou colonnes entières
    • Effectuer une impression ou un aperçu avant impression (sans doute reproductible après d'autres actions).


    Le résultat : ControlesClignotants.xls
    (Je l'ai créé en .xls car visiblement le forum n'accepte pas les .xlsx)

    Je pense donc ne créer la plage nommée "Zone_d_impression" qu'au moment du clic sur mon bouton d'aperçu avant impression et mon bouton d'impression, et de la supprimer ensuite.

    A ce sujet, une idée de comment créer une plage nommée via VBA ?
    EDIT : j'ai trouvé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Set MaRange = Sheets("Feuil1").Range("A:K") 
        ActiveWorkbook.Names.Add Name:="Zone_d_impression", RefersTo:=MaRange
    Dans le pire des cas, même si le problème survient de manière aléatoire (et pas uniquement avec l'aperçu/impression, il suffit de supprimer cette plage à chaque changement de sélection sur la feuille, même si cela nécessite une boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For Each nom In ActiveWorkbook.Names
        If nom.Name = "Zone_d_impression"' Then
          nom.Delete
        End If
      Next nom
    Je marque le sujet comme résolu.

  11. #11
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    si c'est que larrangement de l'userform ca n'a rien de compliqué tout est dans la faq

  12. #12
    Membre du Club Avatar de Yosko
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2008
    Messages : 61
    Points : 64
    Points
    64
    Par défaut
    Certes, mais quand les chefs disent : prend cette solution, c'est plus rapide, on obéit
    Dans tous les cas, je testerai le form chez moi pour faire joujou quand même

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

Discussions similaires

  1. [XL-2010] Verrouillage des contrôles ActiveX.
    Par ateppaz dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/02/2015, 14h12
  2. Réponses: 0
    Dernier message: 02/07/2012, 16h12
  3. Activer des contrôles activeX
    Par funkyjul dans le forum Sécurité
    Réponses: 1
    Dernier message: 14/06/2012, 17h34
  4. Réinitialiser les n° de versions des contrôles activex
    Par soso78 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 30/08/2007, 16h10
  5. Réponses: 1
    Dernier message: 21/02/2006, 17h13

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