Macro sur cases à cocher

Cassetête

XLDnaute Nouveau
Bonjour, je suis débutant sur VBA et nouveau membre sur ce site.
Je dois récupérer plusieurs données (coches) dans plusieurs fichiers similaire pour faire un bilan général. Lors de la création du fichier "originel" avec des cases à cocher, je n'ai pas créer la cellule liée à chaque case pour pouvoir traiter ces coches. Maintenant j'arrive à faire cellule après cellule le lien mais lorsque j'enregistre cette manip dans une macro celà modifie les coches et je n'ai plus la valeur initiale. C'est les valeurs de l'enregistrement qui reviennent.
Y aurai il une méthode pour que s'inscrive seulement la valeur "vrai" ou "faux" réelle de la case cochée dans la cellule liée?
Ci dessous une partie de la macro qui s'est créée lors de l'enregistrement:

Sub Coches_Stages()
'
' Coches_Stages Macro
'

'
ActiveSheet.Shapes("Check Box 4").Select
With Selection
.Value = xlOn
.LinkedCell = "$H$4"
.Display3DShading = False
End With
ActiveSheet.Shapes("Check Box 5").Select
With Selection
.Value = xlOn
.LinkedCell = "$H$5"
.Display3DShading = False
End With
ActiveSheet.Shapes("Check Box 12").Select
With Selection
.Value = xlOn
.LinkedCell = "$H$6"
.Display3DShading = False
End With
ActiveSheet.Shapes("Check Box 13").Select
With Selection
.Value = xlOn
.LinkedCell = "$H$7"
.Display3DShading = False
End With

End Sub

Si ma mémoire est bonne j'ai créé ces cases avec "formulaires" et excel 2003
Milles excuses si c'est un peu brouillon mais j'ai du mal à comprendre.
Merci et bonne année 2008
 

fanfan38

XLDnaute Barbatruc
Re : Macro sur cases à cocher

Bonjour et bienvenu

ActiveSheet.Shapes("Check Box 4").Select
With Selection
.Value = xlOn
.LinkedCell = "$H$4"
.Display3DShading = False
End With
le problème vient du: .value=xlon
C'est donc toi par cette commande qui dit de cocher la case
Supprime cette ligne et essai

A+ François
 

Cassetête

XLDnaute Nouveau
Re : Macro sur cases à cocher

Bonjour et bienvenu

ActiveSheet.Shapes("Check Box 4").Select
With Selection
.Value = xlOn
.LinkedCell = "$H$4"
.Display3DShading = False
End With
le problème vient du: .value=xlon
C'est donc toi par cette commande qui dit de cocher la case
Supprime cette ligne et essai

A+ François

Merci, Merci, je viens d'essayer et apparemment celà FONCTIONNE! Je n'osais pas enlever la ligne je croyais que celà initialisé la cellule. le False de la dernière ligne que veut il dire? Celà n'écrit pas faux?

Une autre question (puisque tu est très compétent) Dans mon fichier il y a 4 feuilles avec 8 cases à cocher dans la 1er, 16 dans la 2iéme puis 48 puis celà peut aller jusqu'à 1000 dans la dernière. Peut on comme dans une cellule normale recopier la formule en se servant de la poignée (croix) avec la souris. Pour m'éviter de faire le lien de cellule en macro pour chaque coche?

Je te remercie de ta réponse très rapide et efficace. je te souhaite une très bonne année 2008.
A+ Didier
 

fanfan38

XLDnaute Barbatruc
Re : Macro sur cases à cocher

Bonjour,
Cette fonction je ne l'ai pas sur ma version d'excel.
Quand tu sais pas tu mets en surbrillance le mot et tu appuie sur F1
Apparemment c'est une fonction affichage en 3d que tu deconnectes...

Pour ajouter des checkbox et leur affecter une macro :
ActiveSheet.CheckBoxes.Add(198, 179.25, 148.5, 22.5).Select
Selection.OnAction = "Macro1"
'198 c'est la distance coté droit en pixel; 179.25 c'est la distance par rapport au haut
'148.5 c'est la largeur; 22.5 c'est la hauteur...

A+ François
 

Cassetête

XLDnaute Nouveau
Re : Macro sur cases à cocher

Bonjour,
Cette fonction je ne l'ai pas sur ma version d'excel.
Quand tu sais pas tu mets en surbrillance le mot et tu appuie sur F1
Apparemment c'est une fonction affichage en 3d que tu deconnectes...

Pour ajouter des checkbox et leur affecter une macro :
ActiveSheet.CheckBoxes.Add(198, 179.25, 148.5, 22.5).Select
Selection.OnAction = "Macro1"
'198 c'est la distance coté droit en pixel; 179.25 c'est la distance par rapport au haut
'148.5 c'est la largeur; 22.5 c'est la hauteur...

A+ François
Merci pour ta réponse toujours rapide. En fait je ne veux pas recréer des CheckBoxes mais éviter pour chaque coche de faire clic droit puis lié la cellule "x" et celà un grand nombre de fois. Le fichier source est créer et pour cette année je ne peux plus le modifier. Donc chaque personne qui doit me répondre (40) le fond sur ce même modèle et moi je récupère ces données dans un fichier similaire pour avoir un suivi total.
C'est pas grave je vais prendre le temps, je te remercie de ta réactivité.
A+ MERCI grâce à toi j'ai débloqué ma situation!
Didier
 

bqtr

XLDnaute Accro
Re : Macro sur cases à cocher

Bonjour Cassetête, François,

Si tu repasses par là Cassetête, voici une macro qui lie le CheckBox à une cellule.
Seule condition que les numéros de tes checkBox se suivent et que les cellules liées aussi.

Ex CHBox de 1 à 10, les cellules liées de H1 à H10.

Code:
Sub Cellule_Liée_CHB()
Dim i As Integer
  For i = 1 To 10
     With ActiveSheet.Shapes("Check Box " & i)
       .ControlFormat.LinkedCell = Range("H" & i).Address
     End With
  Next
End Sub

Si les cellules liées ne sont pas en H1 à H10, mais en H20 à H29 par exemple, tu modifies la variable i comme ceci
Code:
.ControlFormat.LinkedCell = Range("H" & i + [COLOR=blue]19[/COLOR]).Address


A+
 

Cassetête

XLDnaute Nouveau
Re : Macro sur cases à cocher

Merci, je vais essayé mais je crois bien que mes Check Box non pas toujours des numéros qui se suivent! Le fichier a été modifié plusieurs fois. Je te remercie pour la réponse que je vais essayer d'appliquer.
A+ Didier
 

Statistiques des forums

Discussions
312 345
Messages
2 087 477
Membres
103 553
dernier inscrit
jhnm