activer macro au changement d'onglet

dionys0s

XLDnaute Impliqué
Bonjour le forum :)

une question un peu tirée par les cheveux peut-être, mais est-il possible de déclencher une macro à partir d'un évènement click sur tel ou tel onglet ?

En gros, je voudrais qu'à chaque fois que tel onglet est activé (pas seulement visible. Visible et activé), tous les autres soient masqués. Je me demandais si c'était possible.

J'ai bien remarqué le
Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)

End Sub
accessible depuis le module ThisWorkbook, mais je ne sais trop quoi en faire :confused:

Merci d'avance pour votre aide ^_^
 

dionys0s

XLDnaute Impliqué
Re : activer macro au changement d'onglet

J'ai essayé ces différents évènements sans succès :

(la Macro Call MasquerLesOnglets ferme tous les onglets sauf le dernier)

Code:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Sheets(Sheets.Count).Selected = True Then
Call MasquerLesOnglets
End If
End Sub

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sheets(Sheets.Count).Selected = True Then
Call MasquerLesOnglets
End If
End Sub
 

dionys0s

XLDnaute Impliqué
Re : activer macro au changement d'onglet

Re le forum... sorry pour le flood et le post pour rien j'y suis arrivé en tatonnant.

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)

If Sheets(Sheets.Count).Activate = True Then
Call MasquerLesOnglets
Else
End If

End Sub
 

dionys0s

XLDnaute Impliqué
Re : activer macro au changement d'onglet

Mouarf j'ai encore parlé trop vite...

Ma macro MasquerLesOnglets s'active dès que je sélectionne n'importe quelle feuille...
Pourtant ce n'est pas l'instruction donnée dans le Pirvate Sub je comprends pas trop là... :confused:
 

MJ13

XLDnaute Barbatruc
Re : activer macro au changement d'onglet

Bonjour Dionysos

Voici 2 codes pour afficher toutes les feuilles ou que celles que tu veux.
A toi de voir pour l'adapter :).

Code:
Sub A_MAsque_Feuilles_Inutiles()
'Stop
On Error Resume Next
Dim NOMFeuilleAgarder(100)
NOMFeuilleAgarder(1) = "Planning2010"
'NOMFeuilleAgarder(2) = "Scan sur"
'NOMFeuilleAgarder(3) = "Param"
'NOMFeuilleAgarder(4) = "BO"
'Sheets("Feuil3").Move After:=Sheets(4)
'delBO
ThisWorkbook.Activate
'MsgBox ThisWorkbook.Name
NF = ThisWorkbook.Sheets.Count
Sheets(NOMFeuilleAgarder(1)).Move After:=Sheets(NF)
'Sheets(NOMFeuilleAgarder(2)).Move After:=Sheets(NF)
'Sheets(NOMFeuilleAgarder(3)).Move After:=Sheets(NF)
'Sheets(NOMFeuilleAgarder(4)).Move After:=Sheets(NF)
'Stop
For i = 1 To NF - 1
Application.DisplayAlerts = False
If Sheets(i).Visible = True Then Sheets(i).Visible = False
Application.DisplayAlerts = True
Next
Sheets(1).Activate
End Sub
Sub Affiche_Toutes_Feuilles()
Application.ScreenUpdating = False
nc = ActiveWorkbook.Sheets.Count
For n = 1 To nc
Sheets(n).Visible = True
Next
Application.ScreenUpdating = True
End Sub
 

ballmaster

XLDnaute Occasionnel
Re : activer macro au changement d'onglet

Slt diony0s,

Sinon tu peux insérer ceci dans ton évenementielle de ta feuille (celle que tu souhaites conserver)

Code:
Private Sub Worksheet_Activate()

nf = ThisWorkbook.Sheets.Count
Sheets("garder").Move After:=Sheets(nf)  'nom de la feuille à adapter


For i = 1 To nf - 1
    Sheets(i).Visible = 0
Next

End Sub
 

ROGER2327

XLDnaute Barbatruc
Re : activer macro au changement d'onglet

Bonjour à tous
Un essai :
Code:
[COLOR=DarkSlateGray][B]Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim i&, SFeuil
  SFeuil = Array("Feuil2", "Feuil3") [COLOR=DarkOrange]'À adapter[/COLOR]
  For i = 0 To UBound(SFeuil)
    If Sh.Name = SFeuil(i) Then Exit For
  Next i
  If i > UBound(SFeuil) Then Exit Sub
  For i = 1 To ThisWorkbook.Sheets.Count
    If ThisWorkbook.Sheets(i).Name <> Sh.Name Then ThisWorkbook.Sheets(i).Visible = xlSheetHidden
  Next i
End Sub

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim i&, n&
  If Target.Address(0, 0) = "A1" Then
    For i = 1 To ThisWorkbook.Sheets.Count
      If ThisWorkbook.Sheets(i).Visible = xlSheetVisible Then n = n + 1
    Next i
    If n = 1 Then
      Cancel = True
      For i = 1 To ThisWorkbook.Sheets.Count
        ThisWorkbook.Sheets(i).Visible = xlSheetVisible
      Next i
    End If
  End If
End Sub[/B][/COLOR]
à placer dans le module du classeur (généralement ThisWorkbook).

Un clic sur l'onglet
Feuil2 ou Feuil3 laisse cette seule feuille visible.
Un double-clic sur la cellule A1 réaffiche toutes les feuilles. L'ordre des feuilles est respecté.
ROGER2327
#4695


Samedi 7 Sable 138 (Saint Birbe, juge, SQ)
17 Frimaire An CCXIX
2010-W49-2T13:24:58Z
 

Pièces jointes

  • Temp.xls
    19 KB · Affichages: 75
  • Temp.xls
    19 KB · Affichages: 81
  • Temp.xls
    19 KB · Affichages: 79
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : activer macro au changement d'onglet

Suite…
Variation sur le thème : Sélection d'onglets par groupes.
Code:
[COLOR=DarkSlateGray][B]Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim tf As Boolean, i&, j&, k&, l&, SFeuil
  SFeuil = Array(Array("Feuil2", "Feuil4"), Array("Feuil3", "Feuil5")) [COLOR=DarkOrange]'À adapter[/COLOR]
  For j = 0 To UBound(SFeuil)
    For i = 0 To UBound(SFeuil(j))
      If Sh.Name = SFeuil(j)(i) Then Exit For
    Next i
    If i <= UBound(SFeuil(j)) Then Exit For
  Next j
  If j > UBound(SFeuil) Then Exit Sub
  For l = 1 To ThisWorkbook.Sheets.Count
    tf = False
    For k = 0 To UBound(SFeuil(j))
      If ThisWorkbook.Sheets(SFeuil(j)(k)).Name = Sheets(l).Name Then tf = True
    Next k
    If Not tf Then ThisWorkbook.Sheets(l).Visible = xlSheetHidden
  Next l
End Sub

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim i&
  If Target.Address(0, 0) = "A1" Then
    For i = 1 To ThisWorkbook.Sheets.Count
      If ThisWorkbook.Sheets(i).Visible = xlSheetHidden Then Cancel = True: ThisWorkbook.Sheets(i).Visible = xlSheetVisible
    Next i
  End If
End Sub[/B][/COLOR]
Un clic sur l'onglet Feuil2 ou Feuil4 laisse visibles ces deux seules feuilles.
Un clic sur l'onglet Feuil3 ou Feuil5 laisse visibles ces deux seules feuilles.
Un double-clic sur la cellule A1 réaffiche toutes les feuilles. L'ordre des feuilles est respecté.
ROGER2327
#4696


Samedi 7 Sable 138 (Saint Birbe, juge, SQ)
17 Frimaire An CCXIX
2010-W49-2T14:03:10Z
 

Pièces jointes

  • Temp_2.xls
    22 KB · Affichages: 65
  • Temp_2.xls
    22 KB · Affichages: 63
  • Temp_2.xls
    22 KB · Affichages: 69

francis15

XLDnaute Occasionnel
Re : activer macro au changement d'onglet

Bonjour
et merci pour moi, la variante,ça fonctionne comme j'avais besoin que ça fonctionne,
le clic sur les feuilles non pas d'action, mais je masque en selectionnant les onglets et clic droit et masquer.
merci et bonne journée
Francis
 

Statistiques des forums

Discussions
312 327
Messages
2 087 315
Membres
103 515
dernier inscrit
Cherbil12345