VBA checkbox

Bonjour à tous,

Alors tout d'abor, je suis nouveau sur ce forum et je chipote un petit en excel et vba pour le boulot...

Voici ma petite question (quesqtion idiote réponse idiote)

j'ai eu bon retourner tout le moteur de recherche google et rien y fait je ne trouve pas ma réponse...

J'ai un userform, qui me sert a créer des bon de commande pour une gestion de planning ambulances...

Suite à la demande de mon chef, j'ai du ajouter des checkbox dans celui ci...

Jusqu'ici tout ce passe super bien depuis 2 ans mais je souhaiterais changer la réponse de mes checkbox qui s'inscrit dans mon tableau... C'est à dire, pour l'instant quand la checkbox est validée un VRAI s'affiche et inversement un FAUX si elle n'est pas validée..

Je souhaiterais changer ce VRAI ou FAUX par un 0 ou 1... J'ai bon essayer toute modif rien y fait...

Merci à vous tous pour vos réponses

Bonjour loulou0589 et bienvenue sur le forum,

Petite question ton VRAI ou FAUX s'affiche ou ?

Dans mon tableau apres validation de mon userform

Sans fichier difficile de répondre précisément, je te propose ce petit code à adapter à ton fichier

Private Sub CommandButton1_Click()
Dim a As Byte

If CheckBox1 = True Then a = 1 Else a = 0
Sheets("Feuil1").Cells(1, "A") = a
End Sub

Pour etre plus précis, lors d'une commande ambulances, j'ai un boutton click sur mon tableau qui ouvre un userform.

Celui contient plusieur infors (nom, service, destination, rue, n°, CP, Ville, chambre, etc).

Une fois tout remplis, j'ai un bouton click sur mon userform qui le valide, qui imprime un print screen de mon userform, qui insert toutes les info dans un tableau, qui trie le tableau par dates et heures, et qui sauvegarde mon fichier.

Dans le cas présent j'ai du rajouter des checkbox pour me donner les infos suivantes: Isolement, Oxygène, Facturation Patient, Facturation Clinique.

J'ai donc ajouter a mon tableau c'est 4 colonnes suplémentaires pour y insérer l'info.

Le problème c'est que quand je valide ou non la checkbox, l'info vient bien s'inscrire dans mon tableau mais sous forme de VRAI ou Faux et j'aurais préferé que l'information ce note sous forme de 0 ou 1 ou éventuellement oui ou non....

Merci pour ton aide


Voici mon fichier...

L'onglet principale est celui de couleur rouge (planning ambulances mensuel)

Et tu ouvre l'userform principal avec le bouton click en haut à gauche "créer une ambulances"

Attention: c'est peut etre le cafoui dans mes codes car je suis novice mais comme sa fonction très bien je ne touche plus a rien


je ne parvien pas a l'envoyer il est trop gros

essai avec Ci joint

Merci pour ton aide

Malheureusement nous n'avons pas la meme version d'excel donc je ne peux pas lancer la macro.

Je te propose de tester ceci

Private Sub Ok_Click()
dim a, b, c, d as byte 'ajout déclaration des variables
Range("A4:P4").Select
...
If Isolement.Value = true then a = 1 Else a = 0
Range("G4").value = a
If Oxygene.Value = true then b = 1 Else b = 0
Range("H4").Value = b
If Facturationpatient.Value = true then c = 1 Else c = 0
Range("I4").Value = c
If Facturationclinique.Value = true then d = 1 Else d = 0
Range("J4").Value = d

Je te confirme que ton code pourrait être quelque peu simplifié, mais je n'ai pas la bonne version d'excel pour travailler dessus.

J'ai donc mis une solution parmis tant d'autre en espérant qu'elle te convienne


Pour du texte comme "oui" ou "non"

Remplacer byte par string

0 par "non" et 1 par "oui" avec les guillemets

If Oxygene.Value = true then b = "oui" Else b = "non"

Malheureusement ca ne fonctionne pas, malgrés la ligne de code, pas de bug mais je reste avec mon vrai ou faux

Tu as bien mis cette ligne au tout début

dim a, b, c, d as byte 'ajout déclaration des variables

et remplacer

Range("G4").value = Isolement.Value

par

If Isolement.Value = true then a = 1 Else a = 0
Range("G4").value = a

Parce que je ne vois pas de raison que ça ne fonctionne pas

voilà le ligne de code:

Ecris comme ce, il me note la réponse des chexkbox dans la ligne inférieur exemple création de la ligne en A4 et il note la reponse en B4

(sorry pour la longueur... et merci encore)

Private Sub Ok_Click()

Dim a, b, c, d As Byte 'ajout déclaration des variables

Range("A4:P4").Select

If Isolement.Value = True Then a = 1 Else a = 0

Range("G4").Value = a

If Oxygene.Value = True Then b = 1 Else b = 0

Range("H4").Value = b

If Facturationpatient.Value = True Then c = 1 Else c = 0

Range("I4").Value = c

If Facturationclinique.Value = True Then d = 1 Else d = 0

Range("J4").Value = d

Range("A4:T4").Select

Selection.Insert Shift:=xlDown

Selection.Interior.ColorIndex = xlNone

Selection.Borders(xlDiagonalDown).LineStyle = xlNone

Selection.Borders(xlDiagonalUp).LineStyle = xlNone

Selection.Borders(xlEdgeLeft).LineStyle = xlNone

Selection.Borders(xlEdgeTop).LineStyle = xlNone

Selection.Borders(xlEdgeBottom).LineStyle = xlNone

Selection.Borders(xlEdgeRight).LineStyle = xlNone

Selection.Borders(xlInsideVertical).LineStyle = xlNone

Selection.Borders(xlInsideHorizontal).LineStyle = xlNone

Range("A2:T2").Select

Selection.Borders(xlDiagonalDown).LineStyle = xlNone

Selection.Borders(xlDiagonalUp).LineStyle = xlNone

With Selection.Borders(xlEdgeLeft)

.LineStyle = xlContinuous

.Weight = xlThin

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlEdgeTop)

.LineStyle = xlContinuous

.Weight = xlThin

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlEdgeBottom)

.LineStyle = xlContinuous

.Weight = xlThin

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlEdgeRight)

.LineStyle = xlContinuous

.Weight = xlThin

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlInsideVertical)

.LineStyle = xlContinuous

.Weight = xlThin

.ColorIndex = xlAutomatic

End With

Range("A4:N4").Select

Selection.Font.Bold = False

With Selection.Font

.Name = "Arial"

.Size = 11

.Strikethrough = False

.Superscript = False

.Subscript = False

.OutlineFont = False

.Shadow = False

.Underline = xlUnderlineStyleNone

.ColorIndex = xlAutomatic

End With

Range("A4:N4").Select

With Selection

.HorizontalAlignment = xlCenter

.VerticalAlignment = xlBottom

.WrapText = False

.Orientation = 0

.AddIndent = False

.ShrinkToFit = False

.MergeCells = False

End With

Range("D4:A4").Select

With Selection

.HorizontalAlignment = xlLeft

.VerticalAlignment = xlBottom

.WrapText = False

.Orientation = 0

.AddIndent = False

.ShrinkToFit = False

.MergeCells = False

End With

Range("S4").Select

With Selection

.HorizontalAlignment = xlLeft

.VerticalAlignment = xlBottom

.WrapText = False

.Orientation = 0

.AddIndent = False

.ShrinkToFit = False

.MergeCells = False

End With

Range("N4").NumberFormat = "000"

Range("O4").NumberFormat = "0000"

ActiveWindow.ScrollColumn = 1

Range("A2").Select

Range("A4").Value = DTPicker1.Value

Range("B4").Value = Heure.Value

Range("C4").Value = Transport.Value

Range("D4").Value = Nom.Value

Range("E4").Value = Chambre.Value

Range("F4").Value = Motif.Value

Range("K4").Value = Destination1.Value

Range("L4").Value = Destination2.Value

Range("M4").Value = Rue.Value

Range("N4").Value = N°.Value

Range("O4").Value = CP.Value

Range("P4").Value = Ville.Value

Range("Q4").Value = Remarque.Value

Range("R4").Value = Demandeur.Value

Range("S4").Value = Commandée.Value

Range("T4").Value = Jours.Value

UserForm1.PrintForm

Rows("4:500").Select

ActiveWorkbook.Worksheets("Planning Ambulances Mensuel").Sort.SortFields.Clear

ActiveWorkbook.Worksheets("Planning Ambulances Mensuel").Sort.SortFields.Add _

Key:=Range("A4:A500"), SortOn:=xlSortOnValues, Order:=xlAscending, _

DataOption:=xlSortNormal

ActiveWorkbook.Worksheets("Planning Ambulances Mensuel").Sort.SortFields.Add _

Key:=Range("B4:B500"), SortOn:=xlSortOnValues, Order:=xlAscending, _

DataOption:=xlSortNormal

With ActiveWorkbook.Worksheets("Planning Ambulances Mensuel").Sort

.SetRange Range("A4:T500")

.Header = xlGuess

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With

Unload UserForm1

ActiveWorkbook.Save

End Sub

Bonjour,

A tester : (j'ai un peu raccourci ton code)

Private Sub Ok_Click()
Dim a, b, c, d As Byte

Range("A4:T4").Insert Shift:=xlDown

'Partie fixe qui ne change jamais donc code inutile
With Range("A2:T2").Font
    .Name = "Arial"
    .FontStyle = "Normal"
    .Size = 11
    .ColorIndex = xlAutomatic
End With

With Range("A2:T2").Borders
    .LineStyle = xlContinuous
    .Weight = xlThin
End With
'Fin de la partie de code inutile

With Range("A4:T4")
    .HorizontalAlignment = xlLeft
    .VerticalAlignment = xlBottom
    .WrapText = False 'non util
    .Orientation = 0 'non util
    .AddIndent = False 'non util
    .ShrinkToFit = False 'non util
    .MergeCells = False 'non util
End With

Range("E4:N4").HorizontalAlignment = xlCenter
Range("N4").NumberFormat = "000"
Range("O4").NumberFormat = "0000"

Range("A4").Value = DTPicker1.Value
Range("B4").Value = Heure.Value
Range("C4").Value = Transport.Value
Range("D4").Value = Nom.Value
Range("E4").Value = Chambre.Value
Range("F4").Value = Motif.Value

If Isolement.Value = True Then a = 1 Else a = 0
Range("G4").Value = a
If Oxygene.Value = True Then b = 1 Else b = 0
Range("H4").Value = b
If Facturationpatient.Value = True Then c = 1 Else c = 0
Range("I4").Value = c
If Facturationclinique.Value = True Then d = 1 Else d = 0
Range("J4").Value = d

Range("K4").Value = Destination1.Value
Range("L4").Value = Destination2.Value
Range("M4").Value = Rue.Value
Range("N4").Value = N°.Value
Range("O4").Value = CP.Value
Range("P4").Value = Ville.Value
Range("Q4").Value = Remarque.Value
Range("R4").Value = Demandeur.Value
Range("S4").Value = Commandée.Value
Range("T4").Value = Jours.Value

UserForm1.PrintForm

ActiveWorkbook.Worksheets("Planning Ambulances Mensuel").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Planning Ambulances Mensuel").Sort.SortFields.Add _
Key:=Range("A4:A500"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Planning Ambulances Mensuel").Sort.SortFields.Add _
Key:=Range("B4:B500"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal

With ActiveWorkbook.Worksheets("Planning Ambulances Mensuel").Sort
    .SetRange Range("A4:T500")
    .Header = xlGuess
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

Unload UserForm1
ActiveWorkbook.Save

End Sub

Bonjour Fred35,

Tout d'abor, un big merci pour l'éparation de mon code...

Celui-ci fonctionne a merveille

Malheureusement la reponse de mes checkbox reste VRAI ou FAUX dans mon tableau alors que je souhaiterais 1 ou 0 voir eventuellement oui ou non...

Décidement je vais faire attraper des cheveux blancs a tout le monde

Merci encore pour votre aide

Autre problème rencontré depuis l'épuration du code

Et oui je vais ennuyer mon monde désolé...

En fin de nuit hier, pour des raison pratique, les colonnes facturation clinique et facturation patient on été deplacer...

Bref en soit rien de garde j'ai juste modifier les importation du code... mais quid...

Range("A4").Value = DTPicker1.Value
Range("B4").Value = Heure.Value
Range("C4").Value = Transport.Value
Range("D4").Value = Nom.Value
Range("E4").Value = Chambre.Value
Range("F4").Value = Motif.Value

If Isolement.Value = True Then a = 1 Else a = 0
Range("G4").Value = a
If Oxygene.Value = True Then b = 1 Else b = 0
Range("H4").Value = b
If Facturationpatient.Value = True Then c = 1 Else c = 0
Range("I4").Value = c
If Facturationclinique.Value = True Then d = 1 Else d = 0
Range("J4").Value = d

Range("K4").Value = Destination1.Value
Range("L4").Value = Destination2.Value
Range("M4").Value = Rue.Value
Range("N4").Value = N°.Value
Range("O4").Value = CP.Value
Range("P4").Value = Ville.Value
Range("Q4").Value = Remarque.Value
Range("R4").Value = Demandeur.Value
Range("S4").Value = Commandée.Value
Range("T4").Value = Jours.Value

D'après ce code Les colonne importation patient ce trouvaient en I et J...

Maintenant elles sont en P et Q donc voici mon code

Range("A4").Value = DTPicker1.Value
Range("B4").Value = Heure.Value
Range("C4").Value = Transport.Value
Range("D4").Value = Nom.Value
Range("E4").Value = Chambre.Value
Range("F4").Value = Motif.Value

If Isolement.Value = True Then a = 1 Else a = 0
Range("G4").Value = a
If Oxygene.Value = True Then b = 1 Else b = 0
Range("H4").Value = b
If Facturationpatient.Value = True Then c = 1 Else c = 0
Range("P4").Value = c
If Facturationclinique.Value = True Then d = 1 Else d = 0
Range("Q4").Value = d

Range("I4").Value = Destination1.Value
Range("J4").Value = Destination2.Value
Range("K4").Value = Rue.Value
Range("L4").Value = N°.Value
Range("M4").Value = CP.Value
Range("N4").Value = Ville.Value
Range("O4").Value = Remarque.Value
Range("R4").Value = Demandeur.Value
Range("S4").Value = Commandée.Value
Range("T4").Value = Jours.Value

Le problème c'est qu'il m'insert le colonne R en P, la colonne P en Q et la colonne Q en R...

Pourquoiii ?

Et le souci de la réponse des checkbox dans mes colonne reste d'actualité... j'ai toujours un vrai ou faux et non un 1 et 0

Je vais m'arracher les cheveux :( help me

Vous avez remplacé votre code par le mien ?

Parce que mes tests affichent bien des 0 ou des 1 pour les valeurs des checkbox...

Je vais regarder dès que j'ai un peu de temps

Oui, j'ai fais un copie coller donc c'est exactement le meme

Bon sur ce j'ai fais mon blond

Bref j'ai copie ta ligne de code sur le fichier de novembre alors que je travaille sur celui de décembre... oupssss sorry...

Bon tout fonctionne maintenant sauf un petit truc l'info de la checbox qui doit se transcrire dans la colonne Q4 ne se note pas...

Pour le reste tout fonctionne à merveille!!!!!!!!

MERCIIIIIII Fred35

Tant que j'y suis, en plus du problème de la colonne Q4 qui ne se remplis pas avec les info de la checkbox de mon userform...

(Drole de truc car tout le reste fonctionne a merveille maintenant.... )

Voilà la nouvelle question avant de chlore le sujet...

Est il possible d'obliger l'utilisateur a cocher une checkbox ou l'autre mais il doit y avoir obligatoirement une des deux de remplie.

Exemple: j'ai une checkbox "Facturation Patient" (95% des cas donc elle pourrait etre automatiquement remplis) et une autre checkbox "Facturation Clinique" (5% des cas).

Mais question est:

1) Pouvons nous remplir d'office une checkbox (dans ce cas ci "Facturation Patient")?

2) Pouvons nous lorsque l'utilisateur selectionne l'autre checkbox (dans ce cas ci "Facturation Clinique") cette action surpprime la coche de la première checkbox qui elle serait remplie d'office a l'ouverture du fichier?

J'espere avoir ete claire dans ma question ...

Encore une big merci pour vos aides précieuses

Bonsoir,

Les 2 checkbox sont dans ce cas à remplacer par des optionbutton plus approprié dans ce cas

ensuite mettre ce code dans ton userform

Private Sub UserForm_Initialize()
    Me.OptionButton1 = True
End Sub

Remplacer le code du bouton de validation par celui-ci :

(j'avais déclaré des variables dans le code précédent alors qu'il n'y en avait pas besoin)

Private Sub Ok_Click()

With Sheets("Planning Ambulances Mensuel").Range("A4:T4")
    .Insert Shift:=xlDown
    .HorizontalAlignment = xlLeft
    .VerticalAlignment = xlBottom
End With

With Sheets("Planning Ambulances Mensuel")
    .Range("E4:N4").HorizontalAlignment = xlCenter
    .Range("N4").NumberFormat = "000"
    .Range("O4").NumberFormat = "0000"

    .Range("A4").Value = DTPicker1.Value
    .Range("B4").Value = Heure.Value
    .Range("C4").Value = Transport.Value
    .Range("D4").Value = Nom.Value
    .Range("E4").Value = Chambre.Value
    .Range("F4").Value = Motif.Value

    If Isolement.Value = True Then .Range("G4").Value = 1 Else .Range("G4").Value = 0
    If Oxygene.Value = True Then .Range("H4").Value = 1 Else .Range("H4").Value = 0

    .Range("I4").Value = Destination1.Value
    .Range("J4").Value = Destination2.Value
    .Range("K4").Value = Rue.Value
    .Range("L4").Value = N°.Value
    .Range("M4").Value = CP.Value
    .Range("N4").Value = Ville.Value
    .Range("O4").Value = Remarque.Value

    If Me.OptionButton1 = True Then
        .Range("P4") = 1
        .Range("Q4") = 0
    Else
        .Range("P4") = 0
        .Range("Q4") = 1
    End If

    .Range("R4").Value = Demandeur.Value
    .Range("S4").Value = Commandée.Value
    .Range("T4").Value = Jours.Value
End With

UserForm1.PrintForm

ActiveWorkbook.Worksheets("Planning Ambulances Mensuel").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Planning Ambulances Mensuel").Sort.SortFields.Add _
Key:=Range("A4:A500"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Planning Ambulances Mensuel").Sort.SortFields.Add _
Key:=Range("B4:B500"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal

With ActiveWorkbook.Worksheets("Planning Ambulances Mensuel").Sort
    .SetRange Range("A4:T500")
    .Header = xlGuess
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

Unload UserForm1
ActiveWorkbook.Save

End Sub

Si vous renommez les optionbutton, n'oubliez pas de faire de même dans la macro.

C'est parfait exactement ce que je voulais!!!!

Cepandant petit souchis qui apparait

chaque fois que j'insert une ligne (insertation sur la ligne 4 il change l'alignement du texte sur la ligne 5... Quid??

Aller plus que sa a résoudre et je pourrais mettre que mon sujet a été magnifiquement bien réglé et rapidement

Encore merci Fred35

Rechercher des sujets similaires à "vba checkbox"