Fonction Reset pour Checkbox

  • Initiateur de la discussion Stéphane D
  • Date de début
S

Stéphane D

Guest
Bonsoir le Forum,

j'ai un petit problème avec les 3 macros ci dessous:

dans la première macro, je crée des checkbox dans la colonne "I ";
dans la deuxième macro, je les supprime toutes;
et dans la 3ème macro, je voudrai faire changer de statut les cases cochées en cases non cochées... mais bizarrement Excel ne retrouve aucun object en dissant que la collection est vide !!!
Que faire ?
N'ai-je pas créé le bon type de Checkbox avec la macro "CreateCBx?
Ou y a t-il un problème dans le code de la macros "ResetCBx" ??

un coup de pouce serait le bienvenu
Merci & Bonne soirée



Sub CreateCBx()
'Insertion des CheckBox
Dim Plage As Range, CellCbx As Range
Dim Cbx As OLEObject
Dim L As Double, T As Double, W As Double, H As Double

Set Plage = Range("A2:A" & Range("A65536").End(xlUp).Row).Offset(0, 8)
For Each Cells In Plage2
L = CellCbx.Left
T = Cellcbx2.Top
W = CellCbx.Width
H = CellCbx.Height

Set Cbx = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, _
Left:=L, Top:=T, Width:=W, Height:=H)

Next CellCbx

End Sub
'********************
Sub DeleteCBx()
'Suppression des Checkbox
Sheets("General").Activate
Dim Plage1 As Range, Cells1 As Range
Set Plage1 = Range("I2:I" & Range("I2").End(xlDown).Row)
For Each Cells1 In Plage1
ActiveSheet.OLEObjects.Delete
Next Cells1

End Sub
'*****************************
Sub ResetCBx()


'Décocher toutes les Cases à cocher de General

Dim OLEObj As OLEObject
Sheets("General").Activate

For Each OLEObj In ActiveSheet.OLEObjects
If TypeOf OLEObj.Object Is MSForms.CheckBox Then
OLEObj.Object = False
End If
Next OLEObj

End Sub
 
R

Robert

Guest
Salut Stéphane, salut le forum,

Je pense que ton ploblème vient de la création car il y a des buggs.

Voici les macros modifiées :

Sub CreateCBx()
'Insertion des CheckBox
Dim Plage As Range, CellCbx As Range
Dim Cbx As OLEObject
Dim L As Double, T As Double, W As Double, H As Double

Set Plage = Range("A2:A" & Range("A65536").End(xlUp).Row).Offset(0, 8)
For Each CellCbx In Plage 'et non pas Cells2 In plage2 qui ne sont ni déclarées ni définies (en tout cas pas ici)
L = CellCbx.Left
T = CellCbx.Top 'cellCbx2 n'existe pas
W = CellCbx.Width
H = CellCbx.Height

Set Cbx = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, _
Left:=L, Top:=T, Width:=W, Height:=H)

Next CellCbx

End Sub

Sub DeleteCBx()
'la plage n'a aucune incidence sur les objets donc
'j'ai supprimé tout ce qui y faisait référence
ActiveSheet.OLEObjects.Delete
End Sub


Sub decochCBx()
Dim OLEObj As OLEObject
Sheets("General").Activate
For Each OLEObj In ActiveSheet.OLEObjects
If TypeOf OLEObj.Object Is MSForms.CheckBox Then
OLEObj.Object = False
End If
Next OLEObj
End Sub


À plus,

Robert
 
S

Stéphane D

Guest
bonjour le Forum et Robert,

Je viens de récupérer mon ordi, après une réinstallation complète de XP ....
Les macros CreateCBx et DeleteCBx fonctionne parfaitement mais rien ne se passe quand j'actionne la macro decochCBx, il semblerait qu'Ecxel ne retrouve pas les Checkbox dans la feuille car en exécutant ligne par ligne la collection OLEObjects est vide !

Que faire ?
je redonne les macros modifiées de Robert

Sub CreateCBx()
'Insertion des CheckBox
Dim Plage As Range, CellCbx As Range
Dim Cbx As OLEObject
Dim L As Double, T As Double, W As Double, H As Double

Set Plage = Range("A2:A" & Range("A65536").End(xlUp).Row).Offset(0, 8)
For Each CellCbx In Plage 'et non pas Cells2 In plage2 qui ne sont ni déclarées ni définies (en tout cas pas ici)
L = CellCbx.Left
T = CellCbx.Top 'cellCbx2 n'existe pas
W = CellCbx.Width
H = CellCbx.Height

Set Cbx = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, _
Left:=L, Top:=T, Width:=W, Height:=H)

Next CellCbx

End Sub


Sub decochCBx()
Dim OLEObj As OLEObject
Sheets("General").Activate
For Each OLEObj In ActiveSheet.OLEObjects
If TypeOf OLEObj.Object Is MSForms.CheckBox Then
OLEObj.Object = False
End If
Next OLEObj
End Sub


Bonne journée à tous
 

Statistiques des forums

Discussions
312 525
Messages
2 089 335
Membres
104 123
dernier inscrit
kiosqueexcel