Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Autres Pb Macro Page Précédente & feuille(s) masquée(s)

Oliver77

XLDnaute Occasionnel
Bonjour le forum,

Dans un fichier j'ai des feuilles masquées qui empêchent à ma macro "page_precedente" de fonctionner.

---------------------------------
For i = 1 To Sheets.Count + 1
If Sheets(i).Name = ActiveSheet.Name Then
Sheets(i - 1).Activate
Exit Sub
End If
Next i
---------------------------------

Le comble est que la même macro fonctionne très bien dans l'autre sens (c'est-à-dire qu'elle ignore les feuilles masquer).


Merci

Oliver77
 

dg62

XLDnaute Barbatruc
VB:
For i = 1 To Sheets.Count
If Sheets(i).Name = ActiveSheet.Name Then
    If Sheets(i - 1).Visible = True Then
        Sheets(i - 1).Activate
        Exit Sub
    Else
        ' code si feuille masquée
    End If
End If
Next i
 

dg62

XLDnaute Barbatruc
Avec gestion de l'erreur si première itération vrai
VB:
Sub essai()
For i = 1 To Sheets.Count
    If Sheets(i).Name = ActiveSheet.Name Then
        If i = 1 Then Exit Sub
        If Sheets(i - 1).Visible = True Then
            Sheets(i - 1).Activate
            Exit Sub
        Else
            ' code si feuille masquée
        End If
    End If
Next i
End Sub
 
Dernière édition:

Oliver77

XLDnaute Occasionnel
Merci,

Je me suis inspiré de ton code pour éviter les feuilles masquées.
Je n'en ai pas beaucoup mais j'en ai 2 qui se suivent.

J'ai donc mis 2 lignes de codes et mis -2 sur la prèmière et -3 sur la
suivante...

Super,
Encore merci !

Oliver77
 

Oliver77

XLDnaute Occasionnel
Bonjour à tous,

Je reviens à la charge avec mon problème de retour pages car j'ai fait évoluer mon projet.
Pour en faciliter la lecture je masque les feuilles dont je n'ai pas besoin (90 au total).
Il me reste au max une dizaine de feuilles visibles (10/90).
Pour naviguer entre elles je n'ai pas trouvé mieux que de faire 2 pages de codes.

For i = 1 To Sheets.Count
If Sheets(i).Name = ActiveSheet.Name Then
If Sheets(i - 1).Visible = True Then
Sheets(i - 1).Activate
Exit Sub
Else

If Sheets(i - 2).Visible = True Then
Sheets(i - 2).Activate
Exit Sub
Else
...
If Sheets(i - 60).Visible = True Then
Sheets(i - 60).Activate
Exit Sub
Else
Sheets(i - 61).Activate
End If '1
End If '2
...
End If '60

Next i
 

fanch55

XLDnaute Barbatruc
Salut à tous, à essayer:
VB:
Sub En_Arrière()
Dim WsV As Worksheet
    Set WsV = ActiveSheet
    For i = 1 To Worksheets.Count
        Select Case True
            Case Sheets(i).Name = ActiveSheet.Name:
                WsV.Activate
                Exit For
            Case Sheets(i).Visible: Set WsV = Sheets(i)
        End Select
    Next
    Set WsV = Nothing
End Sub
Sub En_Avant()
Dim WsV As Worksheet
    Set WsV = ActiveSheet
    For i = Worksheets.Count To 1 Step -1
        Select Case True
            Case Sheets(i).Name = ActiveSheet.Name:
                WsV.Activate
                Exit For
            Case Sheets(i).Visible: Set WsV = Sheets(i)
        End Select
    Next
    Set WsV = Nothing
End Sub
 

Discussions similaires

Réponses
8
Affichages
644
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…