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 SubBonjour,
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 SubBonjour 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