Boutons activex qui disparaissent

Bonjour

Je suis dans la construction d'un programme sport pour un club de ma commune .

Sur une feuille j'ai un bouton avec une macro pour effacer 3 plages.

Cela fonctionne presque bien, pourquoi presque ,tout simplement quand je déclenche la macro avec le bouton, les autres boutons qui sont

sur la feuille disparaissent le temps de l’exécution de cette macro, puis reviennent a la fin de l’exécution.

Si vous avez une idée pour résoudre ce problème ,je suis preneur

Je vous remercie

je vous met la macro

Sub EffacerValeursSansFormulesMultiplePartie1()
    Dim ws As Worksheet
    On Error Resume Next
    Set ws = Worksheets("Partie 1")
   ' On Error GoTo
    If ws Is Nothing Then
        MsgBox "La feuille 'Partie 1' n'existe pas.", vbCritical
        Exit Sub
    End If

    ws.Unprotect "joco"

    Dim btn As OLEObject
    For Each btn In ws.OLEObjects
        btn.Visible = True
    Next btn

    Application.EnableEvents = False
    Application.ScreenUpdating = False

    Dim plages As Variant
    Dim plage As Range
    Dim cellule As Range
    Dim i As Long

    plages = Array("C3:H46", "J3:J72")

    For i = LBound(plages) To UBound(plages)
        Set plage = ws.Range(plages(i))

        For Each cellule In plage
            If Not cellule.HasFormula Then
                cellule.ClearContents
            End If
        Next cellule
    Next i

    Application.ScreenUpdating = True
    Application.EnableEvents = True

    ws.Calculate

    ws.Protect "joco"
    MsgBox "Les valeurs ont été effacées sans supprimer les formules dans toutes les plages spécifiées."
End Sub

Bonjour,

Sans voir le fichier ....

Peut-être que je dis une "connerie" mais ce ne serait l'instruction Screenupdating qui vous joue des tours ?....

Rem : Cela n'a rien avoir avec votre souci mais j'éviterais d'utiliser "Cellule" comme nom de variable sachant que Cellule fait partie des formules Excel.

Cordialement

bonjour dan, joco7918

un essai

Sub EffacerValeursSansFormulesMultiplePartie1()
     Dim ws As Worksheet, btn As OLEObject
     Dim Plages: Plages = Array("C3:H46", "J3:J72")

     Application.ScreenUpdating = False
     On Error Resume Next
     Set ws = Worksheets("Partie 1")

     If ws Is Nothing Then
          MsgBox "La feuille 'Partie 1' n'existe pas.", vbCritical
     Else
          ws.Unprotect "joco"

          For Each btn In ws.OLEObjects
               btn.Visible = True
          Next btn

          Application.EnableEvents = False
          ws.Range(Join(Plages, ",")).SpecialCells(xlCellTypeConstants).ClearContents
          Application.EnableEvents = True
          ws.Calculate

          ws.Protect "joco"
          MsgBox "Les valeurs ont été effacées sans supprimer les formules dans toutes les plages spécifiées."
     End If

     On Error GoTo 0
     Application.ScreenUpdating = True
End Sub

Bonjour Bart,

Merci pour ton code cela fonctionne très bien

Bonne journée

Joco7915 à écrit :

Bonjour Bart,
Merci pour ton code cela fonctionne très bien
Bonne journée

Ok mais cela n'explique pourquoi vos boutons disparaissaient.
L'explication se trouve peut être dans l'instruction "Enableevents" qui permet de suspendre d'autres codes qui provoquaient votre souci.

Cordialement

re,

dès qu'on utilise "specialcells", on a besoin d'ignorer les "events" pour cette instruction. Autrement je ne vois pas à quoi ça (EnableEvents) sert.

Maintenant les cellules sans formules (s'il y a en, sinon l'erreur est ignorée avec le "on error") sont vidées dans une instruction.

Puis les 3 boutons étaient déjà visible avant le lancement de la macro ? Sinon ,cela sert à quoi ?

C'est peut-être utile de télécharger le fichier ?

Bonjour,

J'ai eu un problème semblable avec des contrôles ActiveX sur feuille qui se déplaçaient ou se dédoublaient. L'explication que j'avais eu à l'époque, c'était que les ActiveX n'avaient pas été conçu à l'origine pour être utilisés sur une feuille. Dans mon cas, j'ai dû fixer la position du bouton via VBA à l'ouverture du classeur. Dans ce cas, je ne vois pas comment faire.

EDIT : je viens de trouver ceci

Sorry this has happened, it was notorious in my old world as a long-standing, known bug... we stopped using in-sheet controls and started putting buttons as hyperlinks and activeX controls on separate popup userforms because buttons would resize, move, text would shrink or grow... it always happened when plugging in a laptop to a 2nd screen or after resolution changes, we tried to have routines to resize and reshape buttons etc. but it became more trouble than it was worth. I recommend rewiring your books if it's not too troublesome! We never looked back. –

jamheadart

Commented Jun 1, 2020 at 16:38

https://stackoverflow.com/questions/62136619/excel-form-activex-control-moving-itself

@Bsalv :

re,

dès qu'on utilise "specialcells", on a besoin d'ignorer les "events" pour cette instruction. Autrement je ne vois pas à quoi ça (EnableEvents) sert.
Maintenant les cellules sans formules (s'il y a en, sinon l'erreur est ignorée avec le "on error") sont vidées dans une instruction.
Puis les 3 boutons étaient déjà visible avant le lancement de la macro ? Sinon ,cela sert à quoi ?
C'est peut-être utile de télécharger le fichier ?

EnableEvents : oui effectivement sauf s'il a un code de Type Worksheet_change dans la feuille où on efface les cellules.
Sinon j'aime assez bien le code proposé.
Reste qu'il est vrai et comme je l'avais écrit au début, avec le fichier on aurait peut-être pu mieux cerner.


@DanielC :

Intéressant mais de mon coté je n'ai jamais eu le souci.
Pour la question d'utiliser les ActiveX sur une feuille, si MS l'a prévu ils ont bien dû contrôler avant.
Excel permet de fixer le bouton sur la feuille dans les réglages sans VBA ou alors dessiner un bouton plutôt que d'utiliser les boutons ActiveX. C'est d'ailleurs ce que je préfère d'autant que cela permet une portabilité sur Excel MAC et qui sont probablement plus stables.
NB : Notez que pour doubler un bouton ActiveX, il suffit d'appuyer sur la touche CTRL puis de cliquer sur le bouton et de le déplacer.

Edit : Dans les gestionnaire de confidentialité, il y a aussi une option à choisir pour utiliser les ActiveX. Ce qui suppose qu'il y a probablement un problème de sécurité qui a été soulevé par MS

Rechercher des sujets similaires à "boutons activex qui disparaissent"