While Rows(z + SpinButton1).Hidden = True
z = z + 1
Wend
La nature d'Excel est d'être un tableur pas un proxénèteTout est dans le titre: Je cherche à ignorer l'affichage dans mon UserForm des lignes maquées.
Private Sub UserForm_Initialize()
Dim i&: z = SpinButton1
For i = 1 To 4: Me.Controls("TextBox" & i) = Sheets(1).Cells(z, i): Next
Me.Label2 = z
End Sub
Dim sens%, lig& 'mémorise les variables
Private Sub SpinButton1_SpinUp()
sens = 1
Change
End Sub
Private Sub SpinButton1_SpinDown()
sens = -1
Change
End Sub
Sub Change()
Dim i&, col%
Label1 = ""
With SpinButton1
.Min = 6
.Max = Cells(Rows.Count, 1).End(xlUp).Row
For i = .Value To IIf(sens = 1, .Max, .Min) Step sens
If Not Rows(i).Hidden Then lig = i: Exit For
Next i
.Value = lig
End With
For col = 1 To 4
Me("TextBox" & col) = Cells(lig, col)
Next col
Label1 = "Ligne " & lig
End Sub
Private Sub CommandButton1_Click()
If lig < 6 Then Exit Sub
Dim col%
For col = 1 To 4
Cells(lig, col) = Me("TextBox" & col)
Next
[A1] = lig
Unload Me
End Sub
Si vous voulez travailler sur la ligne sélectionnée le SpinButton ne sert plus à rien.
Rappelez-vous aussi qu'en VBA il est inutile, voire néfaste, de sélectionner.
Private Sub UserForm_Initialize()
SpinButton1.Max = ActiveCell.Row
SpinButton1 = ActiveCell.Row
sens = 1
Change
End Sub