XL 2016 CheckBox et OptionButon

Choco2x

XLDnaute Occasionnel
Bonjour à toutes et à tous !

J'ai trouvé beaucoup de réponses concernant ce que je cherche, mais chaque fois soit je n'ai pas réussi à l'adapter, soit ça ne correspondait pas à mes besoins...
Précision : je suis d'un niveau très faible en VBA, si je suis déjà allé aussi loin c'est uniquement grâce à votre aide (surtout JM27 🙏).

J'ai deux problèmes :
- J'ai un formulaire avec des CheckBox, et quand je coche les cases pour les retrouver dans la feuille "Commande", les résultats vont toujours sur la ligne 3
, remplaçant chaque fois le résultat précédent, au lieu d'aller juste en dessous, sur la ligne correspondant à la nouvelle entrée du formulaire.

- Ensuite, mais c'est plus optionnel, je n'arrive pas à remplacer les ComboBoxCivilité et ComboTps par des OptionButon, tout en résupérant les résultats dans la feuille "Commande" pour les deux, et dans la feuille "BD Patients" pour la civilité.

La userform est en vrac, je sais, mais j'ai changé si souvent que j'attends à présent que tout fonctionne pour la mettre en forme...

Quelqu'un pourrait-il m'aider ?...

Merci d'avance...
 

Pièces jointes

  • Transport Hopital 8.6 OK avant tentative BR pour XLD.xlsm
    85.6 KB · Affichages: 76

Choco2x

XLDnaute Occasionnel
:(
Tout fonctionne nickel, semble-t-il...
J'essaye de comprendre...

Je crée un module à part et je mets tout en haut :

dim LigneDeTransfert As Long
With Sheets("BD patients")
LigneDeTransfert = .Range("A10000").End(xlUp).Row + 1
.Range("A" & LigneDeTransfert) = Sheets("Commande").Range("A" & LigneDeDestination)
.Range("B" & LigneDeTransfert) = Me.ComboNom
.Range("C" & LigneDeTransfert) = Me.ComboPrénom
.Range("D" & LigneDeTransfert) = CDate(Me.TxtDateDeNaissance)
End With


C'est bien çà ? Rien de plus rien de moins ?

(Je ne sais pas reporter l'indentation ici, mais elle est bien là dans mon fichier)
 

Choco2x

XLDnaute Occasionnel
Bonjour le forum !

Merci ChTi pour ce fichier !
Et merci JM d'avoir continué à te pencher dessus !

ChTi > Le mien fonctionnait impec', mais comme JM me demandait des modifs que je suis incapable de faire à mon niveau, j'imagine que ton fichier sera plus sûr que le mien !

Est-il possible, pour terminer, promis !, de faire en sorte que les cases à cocher soient invalides quand on demande un VSL ?
Ou sinon mettre une Msgbox si on demande un VSL en ayant une des cases cochées, même si c'est dans la feuille ? Ou modifier les transport automatiquement sur "Ambulance" avec une Msgbox qui prévient ? Qu'est-ce qui serait le plus simple à réaliser ?
En gros, tant qu'on coche une case, il s'agit forcément d'une ambulance...
 

JM27

XLDnaute Barbatruc
Bonjour
Effectivement cela marche
mais moi j'aurai mis
Mais les deux marchent

Code:
If TypeName(ctrl) = "checkBox" Then
                            If ctrl.Value = True Then .Cells(LigneDeDestination, CByte(Split(ctrl.Tag, " ")(0))) = "X"
                       ElseIf TypeName(ctrl) = "OptionButton" Then
                            If ctrl.Value = True Then .Cells(LigneDeDestination, CByte(Split(ctrl.Tag, " ")(0))) = ctrl.Caption
                       Else
                        .Cells(LigneDeDestination, CByte(Split(ctrl.Tag, " ")(0))) = ctrl.Value

a la place de

VB:
 Select Case CInt(Split(ctrl.Tag, " ")(0))
                           Case 1, 6
                               If ctrl.Value = True Then .Cells(LigneDeDestination, CByte(Split(ctrl.Tag, " ")(0))) = ctrl.Caption
                           Case 13 To 17
                               If ctrl.Value = True Then .Cells(LigneDeDestination, CByte(Split(ctrl.Tag, " ")(0))) = "X"
                           Case Else 'ajout ici
                        ' Transfert des strings
                           .Cells(LigneDeDestination, CByte(Split(ctrl.Tag, " ")(0))) = ctrl.Value
 

Choco2x

XLDnaute Occasionnel
J'ai remis le transfert de la civilité du post 86, justement, dans le fichier de ChTi...
Mais comme je ne sais pas ce que veut dire "ne pas oublier de déclarer en début de macro LigneDeTransfert en integer ou long "...
Pourtant, ça fonctionne super bien ! (pour le moment...).
 

JM27

XLDnaute Barbatruc
@Choco2x

t'est sur que cela fonctionne nickel ?;)

regardes ce qui se passe après une saisie.( il faut prendre en compte les erreurs possible et inévitables des infirmières)

et si tu fais une saisie suivante , ca va très mal se passer pour la base de données

Capture.JPG
 

Choco2x

XLDnaute Occasionnel
Je sèche...C'est rageant, car je suis certain que c'est un truc tout simple, mais je ne sais même pas si c'est dans les propriétés des objets ou un code à taper, ni où il faudrait le taper...
Quand je pense à ma toute première version qui n'était faite que de formules et de menus déroulants dynamiques !... 😆
 

Choco2x

XLDnaute Occasionnel
J'ai trouvé çà :

Private Sub UserForm_Activate()

Me.Frame4.Visible = False
Me.ChkBxContentions.Visible = False
Me.ChkBxBar.Visible = False
Me.ChkBxBMR.Visible = False
Me.ChkBxCOV.Visible = False
Me.ChkBxO2.Visible = False
End Sub
Private Sub OptbtnAmb_change()

If OptbtnAmb <> 1 Then
Me.Frame4.Visible = False
Me.ChkBxContentions.Visible = False
Me.ChkBxBar.Visible = False
Me.ChkBxBMR.Visible = False
Me.ChkBxCOV.Visible = False
Me.ChkBxO2.Visible = False

Else
Me.Frame4.Visible = True
Me.ChkBxContentions.Visible = True
Me.ChkBxBar.Visible = True
Me.ChkBxBMR.Visible = True
Me.ChkBxCOV.Visible = True
Me.ChkBxO2.Visible = True
End If

End Sub

Mais comme d'habitude je ne sais pas comment l'intérgrer. Je l'ai mis juste sous "Private Sub UserForm_Activate()", et juste avant
"
Dim I As Byte
Set MonLabel"

J'ai faux ?
 

Discussions similaires