Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Initialisation CheckBox

6 réponses
Avatar
moustic
Bonjour à tous, par toutatis !

Sur Feuil1 d'un classeur "Caisse.xls", j'ai placé quelques controles
CheckBox de la boite à outils "Controles". Comment faire pour les initialiser
à "False" au démarrage du classeur ?. J'ai déja vu un code qui fait cela sur
un UserForm.
Sur une feuille, je ne trouve pas. Pouvez-vous m'aider ?

Merci d'avance et @ + car la, je m'en vais au boulot !

Moustic

6 réponses

Avatar
Daniel
Bonsoir.
Dans "ThisWorkbook", mets la macro :

Private Sub Workbook_Open()
Sheets("Feuil1").CheckBox1.Value = False
'etc.
End Sub

Cordialement.
Daniel
"moustic" a écrit dans le message de news:

Bonjour à tous, par toutatis !

Sur Feuil1 d'un classeur "Caisse.xls", j'ai placé quelques controles
CheckBox de la boite à outils "Controles". Comment faire pour les
initialiser
à "False" au démarrage du classeur ?. J'ai déja vu un code qui fait cela
sur
un UserForm.
Sur une feuille, je ne trouve pas. Pouvez-vous m'aider ?

Merci d'avance et @ + car la, je m'en vais au boulot !

Moustic


Avatar
LSteph
Bonsoir, par Benelos,

Private Sub Workbook_Open()
Dim i As Integer
With Feuil1

For i = 1 To .OLEObjects.Count

If Left(.OLEObjects(i).Name, 5) = "Check" Then
.OLEObjects(i).Object.Value = False
End If
Next
End With
End Sub


'@+

'LSteph


Bonjour à tous, par toutatis !

Sur Feuil1 d'un classeur "Caisse.xls", j'ai placé quelques controles
CheckBox de la boite à outils "Controles". Comment faire pour les initialiser
à "False" au démarrage du classeur ?. J'ai déja vu un code qui fait cela sur
un UserForm.
Sur une feuille, je ne trouve pas. Pouvez-vous m'aider ?

Merci d'avance et @ + car la, je m'en vais au boulot !

Moustic


Avatar
moustic
Salut les p'tits loups

La nuit ne fut pas trop tourmentée mais passée en bonne compagnie (pour le
boulot évidement : faut pas trop rêver !) et de plus m'apporta 2 réponses.
Et ça fonctionne, en +. C'est y pas beau tout ça ?

Désolé, Daniel mais je préfère la solution de LSteph à cause de la boucle.
22 contrôles = 22 lignes de code et comme je n'utilise que des CheckBox, je
n'ai même pas besoin du test. 6 lignes de code seulement et ça reste valable
pour 50 contrôles si on veux.

Par contre, LSteph, si je n'abuse pas, peux-tu me dire comment on pourrait
récupérer le .count avant le déroulement de la boucle ?

MyVar = .OLEObjects.Count me donne une erreur: Référence incorrect ou non
qualifiée.

Je vais maintenant un peu me reposer afin de reprendre des forces pour
potasser sur les OLEObject !!!

Encore merci à tous les deux et bonne journée.

Moustic
Avatar
Francois L
Salut les p'tits loups
(...)

MyVar = .OLEObjects.Count me donne une erreur: Référence incorrect ou non
qualifiée.

Je vais maintenant un peu me reposer afin de reprendre des forces pour
potasser sur les OLEObject !!!



Bon repos,

Sub compte()
Dim i As Integer
With Feuil1
i = .OLEObjects.Count
MsgBox i
End With
End Sub

--
François L

Avatar
LSteph
Bonjour,

si tu t'en tiens à ce que j'ai suggèré , le .count
va te ramener le compte de tous les OleObjects de la feuille
c'est seulement dans la boucle qu'on test si c'est un checkbox

Pour le reste , si tu définis ta variable il n'y a pas de raison qu'elle
ne soit pas valide.
Exemple pour afficher un msgbox avec le nb de tous les objets OLE

Sub compteAfficheOle()
Dim myVar As Integer
myVar = Feuil1.OLEObjects.Count
MsgBox myVar
End Sub

'ou bien avec un with comme tu semblais faire

Sub compteAfficheOle()
Dim myVar As Integer
with Feuil1
myVar = .OLEObjects.Count
end with
MsgBox myVar
End Sub

'Sinon pour compter une fonction peut être pas mal aussi:

Function OLECount()
Application.Volatile
OLECount = ActiveSheet.OLEObjects.Count
End Function

'si on veut seulement les CheckBox

Function ChBCount()
Dim oLb As OLEObject
Application.Volatile
ChBCount = 0
For Each oLb In ActiveSheet.OLEObjects
If Left(oLb.Name, 5) = "Check" Then
ChBCount = ChBCount + 1
End If
Next
End Function

Petit pb tout de même, malgré volatile, si on veut tester cela dans la
feuille ,
l'ajout d'un contrôle ou oleobject n'a pas vocation à déclancher un
recalcul.

'LSteph

Salut les p'tits loups

La nuit ne fut pas trop tourmentée mais passée en bonne compagnie (pour le
boulot évidement : faut pas trop rêver !) et de plus m'apporta 2 réponses.
Et ça fonctionne, en +. C'est y pas beau tout ça ?

Désolé, Daniel mais je préfère la solution de LSteph à cause de la boucle.
22 contrôles = 22 lignes de code et comme je n'utilise que des CheckBox, je
n'ai même pas besoin du test. 6 lignes de code seulement et ça reste valable
pour 50 contrôles si on veux.

Par contre, LSteph, si je n'abuse pas, peux-tu me dire comment on pourrait
récupérer le .count avant le déroulement de la boucle ?

MyVar = .OLEObjects.Count me donne une erreur: Référence incorrect ou non
qualifiée.

Je vais maintenant un peu me reposer afin de reprendre des forces pour
potasser sur les OLEObject !!!

Encore merci à tous les deux et bonne journée.

Moustic


Avatar
moustic
Hello les p'tits loups

Merci beaucoup pour toutes ces précisions. C'est un vrai plaisir de
travailler avec vous.
Elles m'ouvrent de nouvelles portes pour explorer quelques unes des
nombreuses voies "insondables".... que comporte VBA.
Je trouve astucieux de se servir d'une partie du nom des contrôle pour les
filtrer.
Donc je retiens l'idée de la boucle pour une autre fois.

Merci aussi à tous ceux qui consacrent de leur temps pour aider les p'tites
têtes comme moi ;-)

@+ et bon dimanche à tous.