J'essaye de faire en sorte que la macro envoie un msgbox au cas où une checkbox de la feuille active (ActiveX) est cochée.Excel - Envoyer un msgbox si toutes les cases à cocher (ActiveX) sont décochées
Je ne sais pas pourquoi, mais quand je lance la macro, il saute la ligne « x = x + 1 » même si j'ai une case à cocher cochée ...
quelqu'un peut me aider?
Private Sub adecoagrobox1_Click()
If adecoagrobox1.Value = True Then
On Error Resume Next
ThisWorkbook.Sheets("Comps_pivot").PivotTables("compspivot1").AddDataField Sheets("Comps_pivot").PivotTables(_
"compspivot1").PivotFields("Adecoagro"), "Adecoagro ", xlSum
Else
On Error Resume Next
ThisWorkbook.Sheets("Comps_pivot").PivotTables("compspivot1").PivotFields("Adecoagro "). _
Orientation = xlHidden
End If
Dim control as OLEObject
Dim x as integer
x = x + 1
For Each control In ActiveSheet.OLEObjects
If TypeName(control.Object) = "Checkbox" And control.Object.Value = 1 Then
x = x + 1
End If
Next control
If x = 0 Then
MsgBox ("You must select at least one option")
On Error Resume Next
adecoagrobox1.Value = True
ThisWorkbook.Sheets("Comps_pivot").PivotTables("compspivot1").AddDataField Sheets("Comps_pivot").PivotTables(_
"compspivot1").PivotFields("Adecoagro"), "Adecoagro ", xlSum
End If
End Sub
Merci beaucoup d'avance!
Retirez le 'on error Resume déclarations Next' et voir quelle erreur vous rencontrez – YowE3K
et notez que votre test fo r 'Si x = 0 Then' est inutile parce que vous avez un' x = x + 1' immédiatement après le 'Dim x comme entier' (hmmm, pourquoi ne pas le' i' dans 'integer' en majuscule - l'EDI devrait automatiquement changer cela?!?!) ce qui signifie que 'x' sera toujours au moins' 1'. – YowE3K
Salut! Merci pour la réponse rapide! Lorsque je lance la macro, elle saute toujours le x = x + 1 ... Donc x est toujours égal à 0. Il ne lit pas quand une case est cochée ... x = 0 signifie qu'aucune case n'est cochée et il devrait montrer le msgbox –