Bonjour,
je cherche à recuperer l'onglet sur lequel je suis : quand c'est une feuille de données, pas de problèmemais quand c'est un chart,Code:ActiveSheet
ca ne marche pas trop.Code:ActiveChart
merci...
Version imprimable
Bonjour,
je cherche à recuperer l'onglet sur lequel je suis : quand c'est une feuille de données, pas de problèmemais quand c'est un chart,Code:ActiveSheet
ca ne marche pas trop.Code:ActiveChart
merci...
cela reste une Sheet
Sheets englobe toutes les feuilles
Worksheets ne tient compte que des feuilles "normales"
mon probleque est que je veux masquer une feuille en la quittant, qu'elle soit de données ou graphique...
et en mettant sur un onglet graphique :
si mon onglet source (graphique donc) s'appelle 'S' et celui de destination (data en l'occurance), 'C', en allant sur l'onglet 'C' à partir de 'S', c'est 'C' qui est marqué....Code:
1
2
3
4 Private Sub Chart_Deactivate() ActiveSheet.Visible = xlSheetVeryHidden End Sub
alors
1) pourquoii, c'est pas 'S',
2) comment faire pour que ce soit 'S' ???
Merci.
Bonjour,
Cordialement,Code:
1
2
3 Private Sub Chart_Deactivate() Me.Visible = xlSheetVeryHidden End Sub
Tirex28/
en fait, c'est un peu plus complexe, il faut que je me souvienne de l'onglet et j'ai pas acces à ce "me" parce que je suis dans une fonction de module (enfin, je crois que c'est pour ca) :
l'appel est le suivant
et le code de la procedure est:Code:
1
2
3
4 Private Sub Chart_Deactivate() allerA feuilleGestionDesRisques End Sub
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 Public Sub allerA(objetCible As Object, Optional hide As Boolean) ' on recupere la page courante Dim feuilleActuelle As Object If TypeOf ActiveSheet Is Chart Then Set feuilleActuelle = ActiveChart 'MsgBox ActiveChart.Name & " sera masquée" '--> ERREUR Else Set feuilleActuelle = ActiveSheet End If ' on affiche la nouvelle page objetCible.Visible = xlSheetVisible objetCible.Activate ' on masque la précedente si ce n'est pas la page d'acceuil If IsMissing(hide) Or hide = True Then If feuilleActuelle.Name <> feuilleAccueil.Name Then 'Me.Visible = xlSheetVeryHidden '--> ERREUR ' feuilleActuelle.Visible = xlSheetVeryHidden ' code idéal, mais ne marche pas quand il s'agit d'un onglet chart (c'est la tout le pb..) End If End If End Sub
Re,
Et comme ca:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Private Sub Worksheet_Deactivate()'Depuis une feuille de calcul allerA feuilleGestionDesRisques, Me End Sub Private Sub Chart_Deactivate()'Depuis un graphique allerA feuilleGestionDesRisques, Me End Sub Public Sub allerA(objetCible As Object, ObjetSource As Object, Optional hide As Boolean) ' on affiche la nouvelle page objetCible.Visible = xlSheetVisible objetCible.Activate ' on masque la précedente si ce n'est pas la page d'acceuil If ObjetSource.Name <> feuilleacceuil.Name Then ObjetSource.Visible = xlSheetVeryHidden End If End Sub
Cordialement,
Tirex28/
oui et non... ton code marche...ca oui mais la ligne :
renvoie toujours "false" pour etre plus precis :Code:If IsMissing(hide) Or hide = True Then...
l'appel qui est fait est celui de tout a l'heure, sans param 'hide'...Code:MsgBox IsMissing(hide) ' affiche false
bon j'ai changé ma fonction en :
si quelqu'un sait pourquoi ?Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Public Sub allerA(objetCible As Object, objetSource As Object, Optional hide As Boolean = True) ' on affiche la nouvelle page objetCible.Visible = xlSheetVisible objetCible.Activate ' on masque la précedente si ce n'est pas la page d'acceuil If hide = True Then ' ici, j'ai viré "isMissing(hide) or" mais ca me soul parce que je ne sais pas ca marche pas alors que c'est censé marcher If objetSource.Name <> feuilleAccueil.Name Then objetSource.Visible = xlSheetVeryHidden End If End If End Sub
sinon je fermerais demain le topic, encore merci tirex28
Bonsoir,
IsMissing n'est pertinent qu'avec des arguments de type Variant (F1)
Cordialement,
Tirex28/
merci, topic résolu :king: