Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Bonjour,
je cherche à faire un formulaire partagé entre différents service, et souhaiterais faire en sorte que certaines personnes puissent utiliser des cases à cocher, mais pas d'autres.
j'ai utilisé les cases à cocher sans savoir s'il y a un autre outil pour ce faire.
Auriez vous une piste pour m'aider?
Bonjour,
Pour le 1er avril, si les collègues apprécient l'humour, tu peux ajouter la plaisanterie classique du bouton qui s'esquive.
à mettre dans Feuil1
VB:
Option Explicit
Dim Cb1T As Double, Cb1L As Double, n As Long
Dim Neutralise As Boolean, Prem1 As Boolean
Private Sub CheckBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
'Les deux lignes de code en commentaire sont à activer
'pour que le gag ne se déclenche que le 1er avril
' If Month(Date) = 4 And Day(Date) = 1 Then
If Neutralise = False Then
If Prem1 = False Then
Cb1T = CheckBox1.Top
Cb1L = CheckBox1.Left
Prem1 = True
End If
If CheckBox1.Top = Cb1T Then
CheckBox1.Top = CheckBox1.Top + Int((40 * Rnd))
CheckBox1.Left = CheckBox1.Left + Int((40 * Rnd))
Else
CheckBox1.Top = Cb1T
CheckBox1.Left = Cb1L
End If
n = n + 1
If n > 50 Then
MsgBox "Poisson d'Avril !"
RestaurePoissonAvril
Neutralise = True
End If
End If
' End If
End Sub
Public Sub RestaurePoissonAvril()
If Prem1 = True Then
CheckBox1.Top = Cb1T
CheckBox1.Left = Cb1L
End If
'
'mettre ici les restaurations des éventuels autres éléments "mobiles"
'
End Sub
Je viens de faire la mise en page définitive, et j'ai ajouté des chekbox et ça fonctionne. C'est formidable.
pour un novice comme moi, c'est vriament géniale... Mais le langage VBA est vraiment trés dificile à comprendre et à apprendre en solo.
Merci encore pour ton aide.
Pour la blague, ça me ferais bien rire de mettre ça en place, malheuresement, le document que je suis en train de faire n'est pa fini... Bouhou.
j'essairais demain pour me faire une auto blague de 1er Avril.
Re,
Quand j'ai commencé, il n'y avait pas le soutien des forums et c'était effectivement la galère car un rien pouvait tout bloquer. Pour progresser, je te conseille
- le site de J. boigontier qui est bourré d'exemples Formation Excel VBA JB
- Le site developpez.com, plus orienté professionnels qui propose de nombreuses synthèses bien présentées excel.developpez.com/cours developpez.com/faq excel developpez.com/faq vba
et bien d'autres
Bonjour,
je suis en phase de test avec une collègue, j'ai mis le fichier sur notre réseau, avec son nom dans ADV et le mien dans BET. quand on ouvre le fichier sur le réseau, on a la boite qui nous dit si on est ADV ou BET, mais nous pouvons actionner toutes les chekbox. Par contre, si je coche une case et que je quite en enregistrant, quand je ré-ouvre le fichier, je ne peux cocher que les cases BET.
Sais tu d'où peut venir ce défaut ?
La désactivation des CheckBox se fait avec Workbook_BeforeClose.
Il faut donc forcer une première fois un enregistrement, macros activées, pour initialiser la désactivation des CheckBox.
SI cela ne provient pas de ça, je n'ai pas l'expérience des fichiers partagés, mais il est peut-être possible que le scénario suivant se soit passé :
- votre collègue ouvre le fichier, activant les CheckBox ADV
- vous ouvrez à votre tour, activant les CheckBox DET, et vous héritez de l'activation de votre collègue
Question : toutes les checkBox sont-elles activées pour tous ou seulement pour vous ?
Dans le premier cas il faut trouver une autre logique de condamnation, compatible avec le partage du fichier.
Dans le deuxième cas, il pourrait suffire dans Sub Workbook_Open() d'ajouter les lignes pour forcer à False les autres CheckBox :
VB:
Private Sub Workbook_Open()
Dim Toto As String, Autorise As String, AA As Range, i As Integer
'Récupère le nom de l'utilisateur
Toto = Environ("username")
'Recherhe dans la plage des personnes autorisées
Set AA = Feuil2.Range("A2:B10").Find(Toto, LookIn:=xlValues)
If Not AA Is Nothing Then Autorise = Feuil2.Cells(1, AA.Column)
If Autorise = Feuil2.Range("A1") Then
MsgBox "Autorisation BET"
'activation des checkbox concernées
For i = 1 To 3
Feuil1.OLEObjects("Checkbox1" & i).Enabled = True
Feuil1.OLEObjects("Checkbox2" & i).Enabled = False
Next i
End If
If Autorise = Feuil2.Range("B1") Then
MsgBox "Autorisation ADV"
'activation des checkbox concernées
For i = 1 To 3
Feuil1.OLEObjects("Checkbox2" & i).Enabled = True
Feuil1.OLEObjects("Checkbox1" & i).Enabled = False
Next i
End If
If Autorise = "" Then
MsgBox "Pas d'autorisation"
For i = 1 To 3
Feuil1.OLEObjects("Checkbox1" & i).Enabled = False
Feuil1.OLEObjects("Checkbox2" & i).Enabled = False
Next i
End If
End Sub
Avec toutefois une réserve : y a-t-il une incidence entre les deux utilisateurs si l'un d'eux enregistre sans fermer ?
Bons tests
A+
Bonjour,
je viens de mettre en ligne le formulaire car il fonctionne.
Merci beaucoup pour ton énorme aide et pour le temps passé à me répondre.
A une prochaine surement sur le forum.
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.