Checkbox synchronisés sur 2 feuilles différentes

C

cyb-cd

Guest
Bon dans l'optique d'améliorer mon fichier de notation spectro (voir post: "Graphique et regression linéaire sans point abérrants"), je voudrais savoir si il est possible de synchroniser Des checkbox sur 2 feuilles différente d'un méme classeur. L'interet? pouvoir choisir des options de deux endroits différents. Ainsi si je coche ou je decoche la checkbox A de la feuille 1, une checkbox de la feuiile B fait de même, et même chose si je coche ou je decoche la checkbox de la feuille 2 (avec synchro avec check de feuille 1). Vous comprenez ce que je veux dire?
Merci d'avance...Cyb-cd
 
C

cyb-cd

Guest
Pendant que je suis dans les checkbox......
dansma nouvelle version de fichier, il risque d'y avoir énormement de checkbox... checkboc9,checkbox10,checkbox11.....checbox40
Y aurait il une macro qui me permettrait de toute les cocher d'un coup ou les decocher d'un coup (sans tapper dans la macro 40 commandes)????
Merci d'avance
cyb-cd
 
G

Gérard POEZEVARA

Guest
Bonjour
Une boucle devrait suffire à cocher ou décocher tous tes checkbox...

For i = 1 To nb checkbox
ActiveSheet.Shapes("Check Box " & i & "").Select
Selection.Value = xlOn (ouxlOff)
Next i

(voir exemple joint)
si tu as plusieurs Sheet la solution: autant de boucles car tes checkbox sont numérotés à partir de 1 dans chaque feuille

Bon courage gérard
 

Pièces jointes

  • test.xls
    25.5 KB · Affichages: 99
  • test.xls
    25.5 KB · Affichages: 104
  • test.xls
    25.5 KB · Affichages: 103
@

@+Thierry

Guest
Bonsoir Cyd-cd et Gérard...

Réponse PREMIERE QUESTION
=======================
Oui on peut synchroniser des checkbox de feuilles différentes en pratiquant comme suit : (attention on parle ici de CheckBox ActiveX... voir plus bas)

Dans le Private module de la Sheet1 :
Private Sub CheckBox1_Click()
If CheckBox1 = True Then
Range("C23").Formula = "=C3"
Sheets("sheet2").CheckBox1.Value = True
If CheckBox1 = False Then
Range("C23").Value = ""
Sheets("sheet2").CheckBox1.Value = False
End If
End Sub

Inversement dans le Private module de la Sheet2 :
Private Sub CheckBox1_Click()
If CheckBox1 = True Then
Sheets("sheet1").CheckBox1.Value = True
If CheckBox1 = False Then
Sheets("sheet1").CheckBox1.Value = False
End If
End Sub

Etc etc...


Réponse SECONDE QUESTION
=======================
Attention...

Les checkbox utilIsées par Cyd-cd ne sont pas les même que celles utilisées par Gérard...

Les premières sont des ActiveX
Les Secondes sont des Controles XL4

Pour mémoire voir mon post 09-12-02 01:42 sur ce fil de discussion
<http://www.excel-downloads.com/html/French/forum/messages/1_9979_9979.htm>

La macro de Gérard ne marchera pas sur les activeX...

Si Cyd-cd, tu veux vider tous les checkbox de la feuille d'un seul coup un seul, il faut une macro comme celle ci :

Option Explicit
Sub CheckBoxClear()
Dim CheckBoite As OLEObject
For Each CheckBoite In [Feuille Test].OLEObjects
If CheckBoite.ProgId = "Forms.CheckBox.1" Then CheckBoite.Object = False
Next CheckBoite
End Sub

NB : Attention renommer "Feuille Test" avec le nom de la feuille....

C'est grace à Ti que je sais çà, car il me l'a bien expliqué dans ce fil :
<http://www.excel-downloads.com/html/French/forum/read.php?f=1&i=9554&t=9508>

(Comme quoi Ti j'ai retenu la leçon !!!)


For Question 1 to 2
Voilà comme çà c'est bouclé...
Next... ?
lol
Bonne soirée
@+Thierry
 
C

Cyb-cd

Guest
Pour associer cette fonction à un bouton et tester cette macro, g crée le bouton et ajouté ce code....ne marche pas.... ouin!!!!

Private Sub CommandButton1_Click()
Sub CheckBoxClear()
Dim CheckBoite As OLEObject
For Each CheckBoite In [résultats].OLEObjects
If CheckBoite.progID = "Forms.CheckBox.1" Then CheckBoite.Object = False
Next CheckBoite
End Sub
End Sub

PS.a quoi serte le "Option Explicit" au début????
 
C

Cyb-cd

Guest
Pour associer cette fonction à un bouton et tester cette macro, g crée le bouton et ajouté ce code....ne marche pas.... ouin!!!!

Private Sub CommandButton1_Click()
Sub CheckBoxClear()
Dim CheckBoite As OLEObject
For Each CheckBoite In [résultats].OLEObjects
If CheckBoite.progID = "Forms.CheckBox.1" Then CheckBoite.Object = False
Next CheckBoite
End Sub
End Sub

PS.a quoi serte le "Option Explicit" au début????
Merci d avance....
cyb-cd
 
C

Cyb-cd

Guest
en fait dans ma feuille actuellement g cela:

Private Sub CommandButton1_Click()

Dim CheckBoite As OLEObject
For Each CheckBoite In [résultats].OLEObjects
If CheckBoite.progID = "Forms.CheckBox.1" Then CheckBoite.Object = False
Next CheckBoite
End Sub

mais cela ne marche pas :-(
voila, a+
Cyb-cd
 
C

cyb-cd

Guest
Voila, en fait, c'etait le nom de la feuille qui n'etait pas utilisé correctement...
Le résultat fonctionnel est celui-la, et il marche nickel!!!!



Private Sub CommandButton1_Click()

Dim CheckBoite As OLEObject
For Each CheckBoite In Worksheets("résultats").OLEObjects
If CheckBoite.progID = "Forms.CheckBox.1" Then CheckBoite.Object = True
Next CheckBoite
End Sub


Vraiment Merci à tous!!!
a+
Cyb-cd
 

Discussions similaires

Statistiques des forums

Discussions
312 108
Messages
2 085 361
Membres
102 874
dernier inscrit
Petro2611