OVH Cloud OVH Cloud

Case à cocher

6 réponses
Avatar
point
Bonjour,

dans une feuille de 600 ligne, j'ai une colone Vrai/Faux. Je voudrais
que pour chaque ligne, la valeur de cette colone, soit controlée par une
case à cocher.

Je dois donc inserer 600 cases à cocher, les aligner, et pour chaque
donner la cellule qu'elle controle, y a til moyen de faire tout ça en
une seule opération ?

En espérant avoir été clair

Merci par avance de votre aide

The Raissac

6 réponses

Avatar
Michel Pierron
Bonjour point;

' Création Checkbox en colonne 1 à gauche de la mention VRAI / FAUX
Sub CheckBoxesInit()
Dim lRow&, i&, l#, h#
Application.ScreenUpdating = False
With ActiveSheet
.Columns(1).HorizontalAlignment = xlRight
l = (.Cells(1, 2).Left - Cells(1, 1).Left) - 2
h = (.Cells(2, 1).Top - Cells(1, 1).Top) - 2
lRow = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 1 To lRow
If .Cells(i, 1) <> "" Then
.CheckBoxes.Add(.Cells(i, 1).Left - 2, .Cells(i, 1).Top - 1, l, h).Text = ""
.CheckBoxes(i).Display3DShading = True
.CheckBoxes(i).Name = "CBox" & i
.CheckBoxes(i).OnAction = ThisWorkbook.Name & "!CheckBoxAction"
.CheckBoxes("CBox" & i).Value = Abs(CBool((.Cells(i, 1).Text = "VRAI")))
End If
Next i
End With
End Sub

Sub CheckBoxAction()
Dim nCbox&
With ActiveSheet
nCbox = Val(Mid(.CheckBoxes(Application.Caller).Name, 5))
If .CheckBoxes(Application.Caller).Value = 1 Then
.Cells(nCbox, 1).Value = "VRAI"
Else
.Cells(nCbox, 1).Value = "FAUX"
End If
End With
End Sub

MP

"point" <"raissac(at)msn(point)com"> a écrit dans le message de news:
#
Bonjour,

dans une feuille de 600 ligne, j'ai une colone Vrai/Faux. Je voudrais
que pour chaque ligne, la valeur de cette colone, soit controlée par une
case à cocher.

Je dois donc inserer 600 cases à cocher, les aligner, et pour chaque
donner la cellule qu'elle controle, y a til moyen de faire tout ça en
une seule opération ?

En espérant avoir été clair

Merci par avance de votre aide

The Raissac


Avatar
point
Merci de ton aide, mais je suis pas tres tres fort en VBA, j'ai donc
collé tout ça dans VBA, et lorsque j'envoi les macros pour la premiere,
il me dit : objet requi et pour la deuxième il y a une croix rouge et 400...

Que dois-je faire? Et quels sont les éléments à modifier pour que ça tourne?

Merci

Point

Bonjour point;

' Création Checkbox en colonne 1 à gauche de la mention VRAI / FAUX
Sub CheckBoxesInit()
Dim lRow&, i&, l#, h#
Application.ScreenUpdating = False
With ActiveSheet
.Columns(1).HorizontalAlignment = xlRight
l = (.Cells(1, 2).Left - Cells(1, 1).Left) - 2
h = (.Cells(2, 1).Top - Cells(1, 1).Top) - 2
lRow = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 1 To lRow
If .Cells(i, 1) <> "" Then
.CheckBoxes.Add(.Cells(i, 1).Left - 2, .Cells(i, 1).Top - 1, l, h).Text = ""
.CheckBoxes(i).Display3DShading = True
.CheckBoxes(i).Name = "CBox" & i
.CheckBoxes(i).OnAction = ThisWorkbook.Name & "!CheckBoxAction"
.CheckBoxes("CBox" & i).Value = Abs(CBool((.Cells(i, 1).Text = "VRAI")))
End If
Next i
End With
End Sub

Sub CheckBoxAction()
Dim nCbox&
With ActiveSheet
nCbox = Val(Mid(.CheckBoxes(Application.Caller).Name, 5))
If .CheckBoxes(Application.Caller).Value = 1 Then
.Cells(nCbox, 1).Value = "VRAI"
Else
.Cells(nCbox, 1).Value = "FAUX"
End If
End With
End Sub

MP

"point" <"raissac(at)msn(point)com"> a écrit dans le message de news:
#

Bonjour,

dans une feuille de 600 ligne, j'ai une colone Vrai/Faux. Je voudrais
que pour chaque ligne, la valeur de cette colone, soit controlée par une
case à cocher.

Je dois donc inserer 600 cases à cocher, les aligner, et pour chaque
donner la cellule qu'elle controle, y a til moyen de faire tout ça en
une seule opération ?

En espérant avoir été clair

Merci par avance de votre aide

The Raissac







Avatar
Michel Pierron
Re point;
Fais un copier-coller des procédures ci-dessous dans un module standard de
ton
classeur et sauvegarde le sous un autre nom pour faire le test.
Remplace le 1 de Private Const Col As Byte = 1 par le numéro de ta colonne
dans laquelle se trouvent VRAI ou FAUX
Exécute Menu Débogage / Compliler VBAProject
Tu ne dois pas avoir d'erreur signalée.
Menu Outils / Macro / Macros / Sélectionne et exécute CheckBoxesCreate.
Ensuite, vérifie le changement VRAI / FAUX lorque tu coches ou décoches
les checkboxes créés et si tout est bon, tu peux effacer la procédure
CheckBoxesCreate; sinon reviens à la charge sur le forum.

Private Const Col As Byte = 1

' Création Checkbox à gauche de VRAI ou FAUX
Sub CheckBoxesCreate()
Dim lRow&, i&, l#, h#
Application.ScreenUpdating = False
With ActiveSheet
.Columns(1).HorizontalAlignment = xlRight
l = (.Cells(1, 2).Left - Cells(1, 1).Left) - 2
h = (.Cells(2, 1).Top - Cells(1, 1).Top) - 2
lRow = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 1 To lRow
If .Cells(i, Col) <> "" Then
.CheckBoxes.Add(.Cells(i, Col).Left - 2 _
, .Cells(i, Col).Top - Col, l, h).Text = ""
.CheckBoxes(i).Display3DShading = True
.CheckBoxes(i).Name = "CBox" & i
.CheckBoxes(i).OnAction = ThisWorkbook.Name _
& "!CheckBoxAction"
.CheckBoxes("CBox" & i).Value = Abs(CBool(( _
.Cells(i, Col).Text = "VRAI")))
End If
Next i
End With
End Sub

Private Sub CheckBoxAction()
Dim nCbox&
With ActiveSheet
nCbox = Val(Mid(.CheckBoxes(Application.Caller).Name, 5))
If .CheckBoxes(Application.Caller).Value = 1 Then
.Cells(nCbox, Col).Value = "VRAI"
Else
.Cells(nCbox, Col).Value = "FAUX"
End If
End With
End Sub

MP

"point" <"raissac(at)msn(point)com"> a écrit dans le message de news:
#
Merci de ton aide, mais je suis pas tres tres fort en VBA, j'ai donc
collé tout ça dans VBA, et lorsque j'envoi les macros pour la premiere,
il me dit : objet requi et pour la deuxième il y a une croix rouge et
400...


Que dois-je faire? Et quels sont les éléments à modifier pour que ça
tourne?


Merci

Point

Bonjour point;

' Création Checkbox en colonne 1 à gauche de la mention VRAI / FAUX
Sub CheckBoxesInit()
Dim lRow&, i&, l#, h#
Application.ScreenUpdating = False
With ActiveSheet
.Columns(1).HorizontalAlignment = xlRight
l = (.Cells(1, 2).Left - Cells(1, 1).Left) - 2
h = (.Cells(2, 1).Top - Cells(1, 1).Top) - 2
lRow = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 1 To lRow
If .Cells(i, 1) <> "" Then
.CheckBoxes.Add(.Cells(i, 1).Left - 2, .Cells(i, 1).Top - 1, l, h).Text
= ""


.CheckBoxes(i).Display3DShading = True
.CheckBoxes(i).Name = "CBox" & i
.CheckBoxes(i).OnAction = ThisWorkbook.Name & "!CheckBoxAction"
.CheckBoxes("CBox" & i).Value = Abs(CBool((.Cells(i, 1).Text = "VRAI")))
End If
Next i
End With
End Sub

Sub CheckBoxAction()
Dim nCbox&
With ActiveSheet
nCbox = Val(Mid(.CheckBoxes(Application.Caller).Name, 5))
If .CheckBoxes(Application.Caller).Value = 1 Then
.Cells(nCbox, 1).Value = "VRAI"
Else
.Cells(nCbox, 1).Value = "FAUX"
End If
End With
End Sub

MP

"point" <"raissac(at)msn(point)com"> a écrit dans le message de news:
#

Bonjour,

dans une feuille de 600 ligne, j'ai une colone Vrai/Faux. Je voudrais
que pour chaque ligne, la valeur de cette colone, soit controlée par une
case à cocher.

Je dois donc inserer 600 cases à cocher, les aligner, et pour chaque
donner la cellule qu'elle controle, y a til moyen de faire tout ça en
une seule opération ?

En espérant avoir été clair

Merci par avance de votre aide

The Raissac









Avatar
point
Merci Michel,
j'ai bien suivi ta procédure, mais le laancement de la macro n'a créé
qu'une seule case à cocher (premiere ligne vrai) et cette case ne
controle pas la valeur vrai faux de la ligne.

Ai-j fait une erreur?? Merci de ton aide en tout cas.

point

Re point;
Fais un copier-coller des procédures ci-dessous dans un module standard de
ton
classeur et sauvegarde le sous un autre nom pour faire le test.
Remplace le 1 de Private Const Col As Byte = 1 par le numéro de ta colonne
dans laquelle se trouvent VRAI ou FAUX
Exécute Menu Débogage / Compliler VBAProject
Tu ne dois pas avoir d'erreur signalée.
Menu Outils / Macro / Macros / Sélectionne et exécute CheckBoxesCreate.
Ensuite, vérifie le changement VRAI / FAUX lorque tu coches ou décoches
les checkboxes créés et si tout est bon, tu peux effacer la procédure
CheckBoxesCreate; sinon reviens à la charge sur le forum.

Private Const Col As Byte = 1

' Création Checkbox à gauche de VRAI ou FAUX
Sub CheckBoxesCreate()
Dim lRow&, i&, l#, h#
Application.ScreenUpdating = False
With ActiveSheet
.Columns(1).HorizontalAlignment = xlRight
l = (.Cells(1, 2).Left - Cells(1, 1).Left) - 2
h = (.Cells(2, 1).Top - Cells(1, 1).Top) - 2
lRow = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 1 To lRow
If .Cells(i, Col) <> "" Then
.CheckBoxes.Add(.Cells(i, Col).Left - 2 _
, .Cells(i, Col).Top - Col, l, h).Text = ""
.CheckBoxes(i).Display3DShading = True
.CheckBoxes(i).Name = "CBox" & i
.CheckBoxes(i).OnAction = ThisWorkbook.Name _
& "!CheckBoxAction"
.CheckBoxes("CBox" & i).Value = Abs(CBool(( _
.Cells(i, Col).Text = "VRAI")))
End If
Next i
End With
End Sub

Private Sub CheckBoxAction()
Dim nCbox&
With ActiveSheet
nCbox = Val(Mid(.CheckBoxes(Application.Caller).Name, 5))
If .CheckBoxes(Application.Caller).Value = 1 Then
.Cells(nCbox, Col).Value = "VRAI"
Else
.Cells(nCbox, Col).Value = "FAUX"
End If
End With
End Sub

MP

"point" <"raissac(at)msn(point)com"> a écrit dans le message de news:
#

Merci de ton aide, mais je suis pas tres tres fort en VBA, j'ai donc
collé tout ça dans VBA, et lorsque j'envoi les macros pour la premiere,
il me dit : objet requi et pour la deuxième il y a une croix rouge et


400...

Que dois-je faire? Et quels sont les éléments à modifier pour que ça


tourne?

Merci

Point


Bonjour point;

' Création Checkbox en colonne 1 à gauche de la mention VRAI / FAUX
Sub CheckBoxesInit()
Dim lRow&, i&, l#, h#
Application.ScreenUpdating = False
With ActiveSheet
.Columns(1).HorizontalAlignment = xlRight
l = (.Cells(1, 2).Left - Cells(1, 1).Left) - 2
h = (.Cells(2, 1).Top - Cells(1, 1).Top) - 2
lRow = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 1 To lRow
If .Cells(i, 1) <> "" Then
.CheckBoxes.Add(.Cells(i, 1).Left - 2, .Cells(i, 1).Top - 1, l, h).Text



= ""

.CheckBoxes(i).Display3DShading = True
.CheckBoxes(i).Name = "CBox" & i
.CheckBoxes(i).OnAction = ThisWorkbook.Name & "!CheckBoxAction"
.CheckBoxes("CBox" & i).Value = Abs(CBool((.Cells(i, 1).Text = "VRAI")))
End If
Next i
End With
End Sub

Sub CheckBoxAction()
Dim nCbox&
With ActiveSheet
nCbox = Val(Mid(.CheckBoxes(Application.Caller).Name, 5))
If .CheckBoxes(Application.Caller).Value = 1 Then
.Cells(nCbox, 1).Value = "VRAI"
Else
.Cells(nCbox, 1).Value = "FAUX"
End If
End With
End Sub

MP

"point" <"raissac(at)msn(point)com"> a écrit dans le message de news:
#


Bonjour,

dans une feuille de 600 ligne, j'ai une colone Vrai/Faux. Je voudrais
que pour chaque ligne, la valeur de cette colone, soit controlée par une
case à cocher.

Je dois donc inserer 600 cases à cocher, les aligner, et pour chaque
donner la cellule qu'elle controle, y a til moyen de faire tout ça en
une seule opération ?

En espérant avoir été clair

Merci par avance de votre aide

The Raissac













Avatar
Salut,

Je te déconseille d'utiliser autant de cases à cocher sur une feuille.
C'est difficile (quoique faisable par code) de les aligner, mais ça va
ralentir ton programme passablement.

Autre façon de gérer des pseudo-cases à cocher, c'est de mettre la
police d'une colonne à "Symbol" et d'utiliser le caractère 214, du moins
sur un clavier "qwerty". Le caractère ressemble à celui d'un crochet
(racine carrée)

Avec le code ci-dessous, sur double-click d'une cellule, ça inscrira ou
effacera ce caractère

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
If Target.Column = 2 Then
If Target.Value = Chr(214) Then
Target.Value = ""
Target.Offset(1, 0).Select
Else
Target.Value = Chr(214)
Target.Offset(1, 0).Select
End If
End If

End Sub

Michel

Bonjour,

dans une feuille de 600 ligne, j'ai une colone Vrai/Faux. Je voudrais
que pour chaque ligne, la valeur de cette colone, soit controlée par une
case à cocher.

Je dois donc inserer 600 cases à cocher, les aligner, et pour chaque
donner la cellule qu'elle controle, y a til moyen de faire tout ça en
une seule opération ?

En espérant avoir été clair

Merci par avance de votre aide

The Raissac


Avatar
Michel Pierron
Bonjour point;
J'ai testé et ça marche sans soucis. Si ton classeur n'est pas confidentiel,
fais le moi parvenir.
MP


"point" <"raissac(at)msn(point)com"> a écrit dans le message de news:

Merci Michel,
j'ai bien suivi ta procédure, mais le laancement de la macro n'a créé
qu'une seule case à cocher (premiere ligne vrai) et cette case ne
controle pas la valeur vrai faux de la ligne.

Ai-j fait une erreur?? Merci de ton aide en tout cas.

point

Re point;
Fais un copier-coller des procédures ci-dessous dans un module standard
de


ton
classeur et sauvegarde le sous un autre nom pour faire le test.
Remplace le 1 de Private Const Col As Byte = 1 par le numéro de ta
colonne


dans laquelle se trouvent VRAI ou FAUX
Exécute Menu Débogage / Compliler VBAProject
Tu ne dois pas avoir d'erreur signalée.
Menu Outils / Macro / Macros / Sélectionne et exécute CheckBoxesCreate.
Ensuite, vérifie le changement VRAI / FAUX lorque tu coches ou décoches
les checkboxes créés et si tout est bon, tu peux effacer la procédure
CheckBoxesCreate; sinon reviens à la charge sur le forum.

Private Const Col As Byte = 1

' Création Checkbox à gauche de VRAI ou FAUX
Sub CheckBoxesCreate()
Dim lRow&, i&, l#, h#
Application.ScreenUpdating = False
With ActiveSheet
.Columns(1).HorizontalAlignment = xlRight
l = (.Cells(1, 2).Left - Cells(1, 1).Left) - 2
h = (.Cells(2, 1).Top - Cells(1, 1).Top) - 2
lRow = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 1 To lRow
If .Cells(i, Col) <> "" Then
.CheckBoxes.Add(.Cells(i, Col).Left - 2 _
, .Cells(i, Col).Top - Col, l, h).Text = ""
.CheckBoxes(i).Display3DShading = True
.CheckBoxes(i).Name = "CBox" & i
.CheckBoxes(i).OnAction = ThisWorkbook.Name _
& "!CheckBoxAction"
.CheckBoxes("CBox" & i).Value = Abs(CBool(( _
.Cells(i, Col).Text = "VRAI")))
End If
Next i
End With
End Sub

Private Sub CheckBoxAction()
Dim nCbox&
With ActiveSheet
nCbox = Val(Mid(.CheckBoxes(Application.Caller).Name, 5))
If .CheckBoxes(Application.Caller).Value = 1 Then
.Cells(nCbox, Col).Value = "VRAI"
Else
.Cells(nCbox, Col).Value = "FAUX"
End If
End With
End Sub

MP

"point" <"raissac(at)msn(point)com"> a écrit dans le message de news:
#

Merci de ton aide, mais je suis pas tres tres fort en VBA, j'ai donc
collé tout ça dans VBA, et lorsque j'envoi les macros pour la premiere,
il me dit : objet requi et pour la deuxième il y a une croix rouge et


400...

Que dois-je faire? Et quels sont les éléments à modifier pour que ça


tourne?

Merci

Point


Bonjour point;

' Création Checkbox en colonne 1 à gauche de la mention VRAI / FAUX
Sub CheckBoxesInit()
Dim lRow&, i&, l#, h#
Application.ScreenUpdating = False
With ActiveSheet
.Columns(1).HorizontalAlignment = xlRight
l = (.Cells(1, 2).Left - Cells(1, 1).Left) - 2
h = (.Cells(2, 1).Top - Cells(1, 1).Top) - 2
lRow = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 1 To lRow
If .Cells(i, 1) <> "" Then
.CheckBoxes.Add(.Cells(i, 1).Left - 2, .Cells(i, 1).Top - 1, l, h).Text



= ""

.CheckBoxes(i).Display3DShading = True
.CheckBoxes(i).Name = "CBox" & i
.CheckBoxes(i).OnAction = ThisWorkbook.Name & "!CheckBoxAction"
.CheckBoxes("CBox" & i).Value = Abs(CBool((.Cells(i, 1).Text "VRAI")))
End If
Next i
End With
End Sub

Sub CheckBoxAction()
Dim nCbox&
With ActiveSheet
nCbox = Val(Mid(.CheckBoxes(Application.Caller).Name, 5))
If .CheckBoxes(Application.Caller).Value = 1 Then
.Cells(nCbox, 1).Value = "VRAI"
Else
.Cells(nCbox, 1).Value = "FAUX"
End If
End With
End Sub

MP

"point" <"raissac(at)msn(point)com"> a écrit dans le message de news:
#


Bonjour,

dans une feuille de 600 ligne, j'ai une colone Vrai/Faux. Je voudrais
que pour chaque ligne, la valeur de cette colone, soit controlée par
une





case à cocher.

Je dois donc inserer 600 cases à cocher, les aligner, et pour chaque
donner la cellule qu'elle controle, y a til moyen de faire tout ça en
une seule opération ?

En espérant avoir été clair

Merci par avance de votre aide

The Raissac