J’ai ce code qui me permet de montrer les rangées 34 à 37 que j’ai cachés :
Sub UnhideObjectives()
Rows(« 34:37 »).EntireRow.Hidden = False
End Sub
J’aimerais savoir comment mon bouton auquel est affecté mon code pourrait aussi montrer les rangées 44 à 47 et 54 à 57, mais pas en même temps. Un bloc de quatre cellules à la fois.
Presque. Merci beaucoup. Je vois que les trois blocs s’affichent un après l’autre, mais je me demandais si c’était possible que le bloc 34:37 reste visible quand on passe au bloc 44:47. En fait, je voudrais que certaines sections du document soit cachées et que lorsqu’on clique sur un bouton créé à partir d’une forme, on affiche les rangées 34:37 la première fois et les rangées 44:47 la deuxième fois et ainsi de suite.
Select Case currentStage
Case 0
Rows(« 34:37 »).EntireRow.Hidden = False
currentStage = 1
Case 1
Rows(« 34:37 »).EntireRow.Hidden = False
Rows(« 44:47 »).EntireRow.Hidden = False
currentStage = 2
Case 2
Rows(« 34:37 »).EntireRow.Hidden = False
Rows(« 44:47 »).EntireRow.Hidden = False
Rows(« 54:57 »).EntireRow.Hidden = False
currentStage = 0
End Select
End Sub
Pour répondre à votre demande, j’ai ajusté le code de telle sorte que les rangées 34:37 restent affichées lors du passage aux autres étapes (cases 1 et 2). Cela signifie que lorsque vous passez à l’étape 1, les rangées 34:37 et 44:47 seront visibles, et lors du passage à l’étape 2, les rangées 34:37, 44:47, et 54:57 seront toutes visibles.
après la case 2, le code reviendra à la case 0 lors de la prochaine exécution.
Ainsi, en cliquant plusieurs fois sur le bouton assigné à cette macro, vous verait les sections du document s’afficher progressivement
Entre temps j’ai trouvé ce code qui était intéressant :
Sub UnhideObjectives()
Static currentStage As Integer
With ActiveSheet ’ (Or, for example, With ThisWorkbook.Sheets(1)
.Rows(« 34:37 »).EntireRow.Hidden = False
.Rows(« 42:45 »).EntireRow.Hidden = (currentStage < 1)
.Rows(« 50:53 »).EntireRow.Hidden = (currentStage < 2)
End With
currentStage = (currentStage + 1) Mod 3
End Sub
Ceci dit, j’aimerais savoir comment on arrête la fonction current stage pour qu’en cliquant plusieurs fois le code ne reviennent pas à 0 et qu’après avoir montré les cases dans l’ordre, les cases ne disparaissent pas.
Sub UnhideObjectives()
Static currentStage As Integer
With ActiveSheet ' (Or, for example, With ThisWorkbook.Sheets(1)
s = WorksheetFunction.Dec2Bin(7 - currentStage, 3)
MsgBox currentStage & vbLf & s
.Rows("34:37").EntireRow.Hidden = (Mid(s, 1, 1) = "0")
.Rows("42:45").EntireRow.Hidden = (Mid(s, 2, 1) = "0")
.Rows("50:53").EntireRow.Hidden = (Mid(s, 3, 1) = "0")
End With
currentStage = (currentStage + 1) Mod 8
End Sub
Sub RAZ()
currentStage = 0
End Sub
Une macro « RAZ » pour remettre currentstage à 0
L’autre macro qui incrèmente currentstage avec 1, donc les 8 (de 0 à 7) possibilités.