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 Sub