Figer les valeurs d'une CheckBox

Kristof

XLDnaute Nouveau
Bonjour à tous,

Le fichier dont je parle est joint à ce mail.

1. Dans ce fichier, j'ai déjà fait une sélection grâce au formulaire (userform1) cependant si je reviens en A1 ou une sléection à déjà été faite toutes les informations disparaissent. Comment faire pour que lors du retour sur une cellule les informations ne disparaissent pas ? (C'est à dire que les cases restent toujours cochées lors d'une nouvelle sélection de la cellule et que cette sélection soit modifiable).

2. Comment faire également pour déclencher l'apparition du formulaire sans être obligé de faire un va et vient ? Je m'explique : en A6, je fais ma sélection grâce au formulaire, je termine en cliquant sur Ok mais là je m'aperçois que j'ai fais une erreur sur ma sélection. Dans l'état actuel , je suis obligé de changer de cellule et de revenir sur la cellule A6 pour faire ma modification (et même tout recommencer sinon mon anciene sélction disparaît (Cf question 1).

Merci pour l'aide apportée.

Kristof
 

Pièces jointes

  • Classeur2.xls
    32 KB · Affichages: 43
  • Classeur2.xls
    32 KB · Affichages: 54
  • Classeur2.xls
    32 KB · Affichages: 53
G

Guest

Guest
Re : Figer les valeurs d'une CheckBox

1- Dans un module standard:
Public UsfVisible As Boolean

2- Dans le Userform
'Evenements du userform
Private Sub UserForm_Initialize()
UsfVisible = True
End Sub

Private Sub UserForm_Terminate()
UsfVisible = False
End Sub

'Créer une procédure public dans le userform
Public Sub AnalyseCellule(c As Range)
Dim tbl
Dim i As Integer

' Tableau recevant les noms des controls suivant le contenu de la cellule
tbl = Split(c, "/")

' Si au moins 1 nom a été trouvé
If IsArray(tbl) Then
on error Resume Next
For i = 1 To 3
'réinitialise les controls à False
Me.Controls("CheckBox" & i).Value = False
Next i

For i = 0 To UBound(tbl)
'Initialise les controls à True si leur nom est dans le tableau
Me.Controls(tbl(i)).Value = True
Next i
End If
End Sub

3 - Dans le module de code de la feuille
'Evenement SelectionChange
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Not Application.Intersect(Target, Range("A1:A7")) Is Nothing Then
If Not UsfVisible Then UserForm1.Show False
'Afficher la form non modale
UserForm1.AnalyseCellule Target.Range("A1") ' Seule la première cellule de la sélection est prise en compte
End If

End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 467
Messages
2 088 676
Membres
103 915
dernier inscrit
VT14907