masquer des lignes (bis)

  • Initiateur de la discussion Alex
  • Date de début
A

Alex

Guest
Rebonjour,

Merci pour votre aide, ça marche bien.
J'ai encore un problème:j'ai créé deux userforms, l'un avec des checkbox et l'autre des boutons d'options.Voici une partie de ma procédure:

Pour le premier:

Private Sub CommandButton1_Click()

If CheckBox1.Value = True Then
Rows(37).Hidden = False
Rows(38).Hidden = False
Rows(39).Hidden = False
Rows(40).Hidden = False
Rows(41).Hidden = False
Rows(42).Hidden = False
Rows(43).Hidden = False
Else
Range("c37").Value = ""
Rows(37).Hidden = True
Rows(38).Hidden = True
Rows(39).Hidden = True
Rows(40).Hidden = True
Rows(41).Hidden = True
Rows(42).Hidden = True
Rows(43).Hidden = True
End If


Pour le second:

Private Sub CommandButton1_Click()

Dim choix As Byte

If OptionButton1 = True Then choix = 1
If OptionButton2 = True Then choix = 2

Select Case choix

Case 1
With Sheets(1)
.Range("e29") = "bpe"
.Range("i42").Formula = "=((f42*g42)/2)*h42"
.Range("i49").Formula = "=((f49+g49)/2)*h49"
.Range("i63").Formula = "=((f63+g63)/2)*h63"
.Range("i82").Formula = "=g82*h82"
.Range("i91").Formula = "=f91*h91"
.Range("i100").Formula = "=((f100+g100)/2)*h100"
.Range("i108").Formula = "=((f108+g108)/2)*h108"
.Range("i43") = 0
.Range("i50") = 0
.Range("i64") = 0
.Range("i83") = 0
.Range("i92") = 0
.Range("i101") = 0
.Range("i109") = 0
.Rows(43).Hidden = True
.Rows(50).Hidden = True
.Rows(64).Hidden = True
.Rows(83).Hidden = True
.Rows(92).Hidden = True
.Rows(101).Hidden = True
.Rows(109).Hidden = True
.Rows(42).Hidden = False
.Rows(49).Hidden = False
.Rows(63).Hidden = False
.Rows(82).Hidden = False
.Rows(91).Hidden = False
.Rows(100).Hidden = False
.Rows(108).Hidden = False
End With


Si je ne sélectionne pas la checkbox1, la ligne 42 est masquée.
Or, elle réapparait lorsque je clique sur l'optionbutton1.
Si vous avez une idée, merci beaucoup.

A+,

Alex
 
@

@+Thierry

Guest
Re Salut Alex,


Huuum ! Quelques recommandations....

Tu aurais dû rester dans le même fil...

Afin d'alléger ton code...Tu peux écrire :
Rows("37:43").Hidden = True

Pour ton problème, je ne sais pas si tes UserForms sont encore chargés ?...
Mais à prime abord tu te compliques la vie ! Pourquoi pouvoir accéder à cette possibilité par deux moyens différents ? (C'est aps du tout catholique !)

Enfin un soluce si tes checkboxs apparaissent dans le premier UserForm... et qu'il soit déchargé avant le second (ça marchera aussi si il ne l'est pas)

Dans un Module Standard (voir fil déclaration de variable d'hier que j'ai eu avec Ti)
Public Masquage As Boolean


Dans le Private Module de ton UserForm1

Private Sub CommandButton1_Click()
If CheckBox1.Value = True Then
Rows("37:38").Hidden = False
Masquage = False
Else
Range("c37").Value = ""
Rows("37:43").Hidden = True
Masquage = True
End If


Et dans le Private Module de ton UserForm2 tu pourras récupérer ce que le User a choisi.... avec cette variable "Masquage"... Mais bon c'est vraiment "Usine à Gaz"... C'est toi qui n'est pas clair dans tes idées, il faut parfois bien "dessiner" son appli avant d'esssayer de l'écrire en VBA...

Bonne Soirée
@+Thierry


PS pour alléger aussi tu peux écrire au lieu de toutes ces lignes...:
Range("I1,I3,I25,I55,I100") = 0
 
A

Alex

Guest
Rebonjour,

j'aimerais avoir des éclaircissements sur la procédure de Thierry.J'aimerais savoir l'intérêt de la variable 'masquage'.
Je te réexplique mon problème:

J'ai un premier userform avec checkboxs.Si je ne sélectionne pas la checkbox1, les lignes 37 à 43 sont masquées.Ensuite, le checkbox se décharge.J'ai alors un userform avec deux boutons d'options. Quand j'en sélectionne un, certaines lignes du tableau disparaissent (par exemple la ligne 64), et d'autres contiennent une formule. Le problème intervient alors: dans les lignes que j'avais masquées au début, il y en a une qui réapparait (par exemple la ligne 42).

C'est un peu compliqué...alors merci pour votre aide.

A+,

Alex
 

Discussions similaires

Statistiques des forums

Discussions
314 653
Messages
2 111 579
Membres
111 206
dernier inscrit
Dante76