Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

compter les onglets entre 2 feuilles [XL2000 VBA]

10 réponses
Avatar
J
Bonjour à tous
Excel 2000

1 onglet nommé debut
1 onglet nommé fin
Comment, svp, obtenir le nbre (variable) de feuilles existant entre ces
2 feuilles :
periode=((position-feuille-fin) - (position-feuille-début))-1
Cette valeur "periode" pouvant alors être récupérée dans une cellule.

Merci
@+
j@@

10 réponses

Avatar
FFO
On 3 mai, 06:02, "J@@" wrote:
Bonjour à tous
Excel 2000

1 onglet nommé debut
1 onglet nommé fin
Comment, svp, obtenir le nbre (variable) de feuilles existant entre ces
2 feuilles :
periode=((position-feuille-fin) - (position-feuille-début))-1
Cette valeur "periode" pouvant alors être récupérée dans une cell ule.

Merci
@+
j@@



Ce petit code devrait faire
Résultat en cellule A1

For i = 1 To Sheets.Count
If Sheets(i).Name = "Début" Then
premier = i
Else
If Sheets(i).Name = "Fin" Then
dernier = i
End If
End If
Next
Range("A1") = Abs(dernier - premier)

Fais des essais et dis moi !!!!!!
Avatar
J
Bonjour FFO
Excellent, cela fonctionne très bien.
J'ai juste ajouté -1 de façon à compter seulement les feuilles entre les
bornes : Range("A1") = Abs(dernier - premier)-1
Merci
@+
J@@

Le 02/05/2011 20:09, FFO a écrit :
For i = 1 To Sheets.Count
If Sheets(i).Name = "Début" Then
premier = i
Else
If Sheets(i).Name = "Fin" Then
dernier = i
End If
End If
Next
Range("A1") = Abs(dernier - premier)
Avatar
J
Bonjour FFO

Le code est inséré dans le code de feuille
Private Sub Worksheet_Activate,
petit problème :
cela fonctionne parfaitement si la feuille est activée d'un clic sur
l'onglet,

*Mais* pas si on rejoint cette feuille d'un clic sur un hyperlien (créé
par Insérer=>lien Hypertexte) situé dans une feuille "ListeFeuilles".
Ce lien conduit à une cellule de la feuille voulue, mais sans déclencher
le code lié à l'activation de cette feuille.

Comment faire, stp
merci pour l'aide
@+
J@@


Le 02/05/2011 20:09, FFO a écrit :
On 3 mai, 06:02, "J@@" wrote:
Excel 2000

1 onglet nommé debut
1 onglet nommé fin
Comment, svp, obtenir le nbre (variable) de feuilles existant entre ces
2 feuilles :
periode=((position-feuille-fin) - (position-feuille-début))-1
Cette valeur "periode" pouvant alors être récupérée dans une cellule.



Ce petit code devrait faire
Résultat en cellule A1

For i = 1 To Sheets.Count
If Sheets(i).Name = "Début" Then
premier = i
Else
If Sheets(i).Name = "Fin" Then
dernier = i
End If
End If
Next
Range("A1") = Abs(dernier - premier)

Fais des essais et dis moi !!!!!!
Avatar
MichD
Bonjour,

J'ai fait un petit test en utilisant Excel 2007.
Dans la "Feuil1", j'ai un lien hypertexte vers une cellule de la "feuil2"
Dans le module "Feuil2", j'ai une petite macro utilisant l'événement
Private Sub Worksheet_Activate

Chaque fois que je clique sur le lien hypertexte en "Feul1", je me retrouve
sur la cellule déterminée par le lien hypertexte dans la "feuil2" et la procédure
événementielle est déclenchée.

Quelle version Excel possèdes-tu ? Si tes manipulations sont différentes de
celles que j'ai citées, que fais-tu exactement ?

MichD
--------------------------------------------
Avatar
J
Bonjour MichD,

Je fais exactement la même manipulation, sous Excel 2000 le plus à jour
possible (Windows 2000).
Mais la procédure événementielle ne se lance pas lorsque j'applique
cette procédure.
Si, ensuite, je clique sur l'onglet de la feuille 3 puis je reviens sur
la feuille 2 en cliquant sur son onglet, la procédure événementielle se
lance bien.

J'y perd mon latin, comme dirait Mgr.
Merci pour l'aide.
@+
J@@


Le 04/05/2011 00:25, MichD a écrit :
Bonjour,

J'ai fait un petit test en utilisant Excel 2007.
Dans la "Feuil1", j'ai un lien hypertexte vers une cellule de la "feuil2"
Dans le module "Feuil2", j'ai une petite macro utilisant l'événement
Private Sub Worksheet_Activate

Chaque fois que je clique sur le lien hypertexte en "Feul1", je me retrouve
sur la cellule déterminée par le lien hypertexte dans la "feuil2" et la procédure
événementielle est déclenchée.

Quelle version Excel possèdes-tu ? Si tes manipulations sont différentes de
celles que j'ai citées, que fais-tu exactement ?

MichD
--------------------------------------------

Avatar
MichD
Refais le test, mais cette fois, assure-toi que les procédures événementielles sont activées.

Exécute une fois cette macro, au cas où ...
'--------------------------------
Sub Test()
Application.EnableEvents = True
End Sub
'--------------------------------

Comme je n'ai pas la version Excel 2000, une autre façon de faire :

Insère ceci dans le ThisWorkbook de ton classeur.
Dans la procédure Sheet2 est le nom de l'onglet de la feuille où
doit te conduire le lien hypertexte. Cela aura pour effet de lancer
la procédure du module Feuille de l'objet "Sheet2" (propriété Name)

dans Application.Run "Sheet2.Worksheet_Activate"
Sheet2 est la propriété Name de l'objet Feuille visible seulement en VBA
à ne pas confondre à Sheet2 : nom de l'onglet

'---------------------------
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
If InStr(1, Target.SubAddress, "Sheet2", vbTextCompare) > 0 Then
Application.Run "Sheet2.Worksheet_Activate"
Range("G25").Select 'la cellule que tu veux activer
End If
End Sub
'---------------------------

MichD
--------------------------------------------
"J@@" a écrit dans le message de groupe de discussion : ipru2q$5ah$

Bonjour MichD,

Je fais exactement la même manipulation, sous Excel 2000 le plus à jour
possible (Windows 2000).
Mais la procédure événementielle ne se lance pas lorsque j'applique
cette procédure.
Si, ensuite, je clique sur l'onglet de la feuille 3 puis je reviens sur
la feuille 2 en cliquant sur son onglet, la procédure événementielle se
lance bien.

J'y perd mon latin, comme dirait Mgr.
Merci pour l'aide.
@+
J@@


Le 04/05/2011 00:25, MichD a écrit :
Bonjour,

J'ai fait un petit test en utilisant Excel 2007.
Dans la "Feuil1", j'ai un lien hypertexte vers une cellule de la "feuil2"
Dans le module "Feuil2", j'ai une petite macro utilisant l'événement
Private Sub Worksheet_Activate

Chaque fois que je clique sur le lien hypertexte en "Feul1", je me retrouve
sur la cellule déterminée par le lien hypertexte dans la "feuil2" et la procédure
événementielle est déclenchée.

Quelle version Excel possèdes-tu ? Si tes manipulations sont différentes de
celles que j'ai citées, que fais-tu exactement ?

MichD
--------------------------------------------

Avatar
J
Bonjour MichD

En faisant le même manipulation que toi, en complément de ma réponse de
06:15, cela ne marche pas mieux avec Excel 2000 SP3 sous Windows 7 pro-64.

Aurais-tu une idée ?
merci
J@@

Le 04/05/2011 00:25, MichD a écrit :
Bonjour,

J'ai fait un petit test en utilisant Excel 2007.
Dans la "Feuil1", j'ai un lien hypertexte vers une cellule de la "feuil2"
Dans le module "Feuil2", j'ai une petite macro utilisant l'événement
Private Sub Worksheet_Activate

Chaque fois que je clique sur le lien hypertexte en "Feul1", je me retrouve
sur la cellule déterminée par le lien hypertexte dans la "feuil2" et la procédure
événementielle est déclenchée.

Quelle version Excel possèdes-tu ? Si tes manipulations sont différentes de
celles que j'ai citées, que fais-tu exactement ?

MichD
--------------------------------------------

Avatar
J
Bonjour
J'ai ajouté une macro événementielle dans la feuille où est le lien
hypertexte (en cellule A10].
***Mais cela fonctionne 1 fois sur 2***
Que dois-je modifier, s'il vous plait?
mon code est bizarre ; je me réfère 2 fois à SomEntrOngletsDebutFin
Merci
J@@

'**Feuille des liens
'fonctionne 1 fois sur 2 environ : si je clique sur l'onglet d'une
feuille quelconque, puis retour vers cette feuille de liens et clique
vers la feuille résultat, alors cela fonctionne.

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Target = [a10] And Target.Hyperlinks.Count Then '< DoEvents
SomEntrOngletsDebutFin
End If
End Sub

'**feuille des résultats
'fonctionne parfaitement si on sort d e la feuille puis y retourne par
clic d'onglets
Private Sub Worksheet_Activate()
SomEntrOngletsDebutFin
End Sub

'**le code dans un module std :
'fonctionne parfaitement
Sub SomEntrOngletsDebutFin()
For i = 1 To Sheets.Count
If Sheets(i).Name = "debut" Then
premier = i
Else
If Sheets(i).Name = "fin" Then
dernier = i
End If
End If
Next
Range("B1") = Abs(dernier - premier) - 1
End sub
'***********************************

Le 04/05/2011 17:54, J@@ a écrit :
Bonjour MichD

En faisant le même manipulation que toi, en complément de ma réponse de
06:15, cela ne marche pas mieux avec Excel 2000 SP3 sous Windows 7 pro-64.

Aurais-tu une idée ?
merci
J@@

Le 04/05/2011 00:25, MichD a écrit :
Bonjour,

J'ai fait un petit test en utilisant Excel 2007.
Dans la "Feuil1", j'ai un lien hypertexte vers une cellule de la "feuil2"
Dans le module "Feuil2", j'ai une petite macro utilisant l'événement
Private Sub Worksheet_Activate

Chaque fois que je clique sur le lien hypertexte en "Feul1", je me
retrouve
sur la cellule déterminée par le lien hypertexte dans la "feuil2" et
la procédure
événementielle est déclenchée.

Quelle version Excel possèdes-tu ? Si tes manipulations sont
différentes de
celles que j'ai citées, que fais-tu exactement ?

MichD
--------------------------------------------
Avatar
MichD
Je t'ai répondu à ton premier fil sur le sujet.

Pour une raison hors de mon contrôle, je ne peux publier
mes réponses... j'ai vu qu'il y avait un message qui a réussi à passer !

Je ne connais pas la raison de ces interruptions de connexions...



MichD
--------------------------------------------
"J@@" a écrit dans le message de groupe de discussion :

Bonjour
J'ai ajouté une macro événementielle dans la feuille où est le lien
hypertexte (en cellule A10].
***Mais cela fonctionne 1 fois sur 2***
Que dois-je modifier, s'il vous plait?
mon code est bizarre ; je me réfère 2 fois à SomEntrOngletsDebutFin
Merci
J@@

'**Feuille des liens
'fonctionne 1 fois sur 2 environ : si je clique sur l'onglet d'une
feuille quelconque, puis retour vers cette feuille de liens et clique
vers la feuille résultat, alors cela fonctionne.

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Target = [a10] And Target.Hyperlinks.Count Then '< DoEvents
SomEntrOngletsDebutFin
End If
End Sub

'**feuille des résultats
'fonctionne parfaitement si on sort d e la feuille puis y retourne par
clic d'onglets
Private Sub Worksheet_Activate()
SomEntrOngletsDebutFin
End Sub

'**le code dans un module std :
'fonctionne parfaitement
Sub SomEntrOngletsDebutFin()
For i = 1 To Sheets.Count
If Sheets(i).Name = "debut" Then
premier = i
Else
If Sheets(i).Name = "fin" Then
dernier = i
End If
End If
Next
Range("B1") = Abs(dernier - premier) - 1
End sub
'***********************************

Le 04/05/2011 17:54, J@@ a écrit :
Bonjour MichD

En faisant le même manipulation que toi, en complément de ma réponse de
06:15, cela ne marche pas mieux avec Excel 2000 SP3 sous Windows 7 pro-64.

Aurais-tu une idée ?
merci
J@@

Le 04/05/2011 00:25, MichD a écrit :
Bonjour,

J'ai fait un petit test en utilisant Excel 2007.
Dans la "Feuil1", j'ai un lien hypertexte vers une cellule de la "feuil2"
Dans le module "Feuil2", j'ai une petite macro utilisant l'événement
Private Sub Worksheet_Activate

Chaque fois que je clique sur le lien hypertexte en "Feul1", je me
retrouve
sur la cellule déterminée par le lien hypertexte dans la "feuil2" et
la procédure
événementielle est déclenchée.

Quelle version Excel possèdes-tu ? Si tes manipulations sont
différentes de
celles que j'ai citées, que fais-tu exactement ?

MichD
--------------------------------------------
Avatar
J
Bonjour MichD

Les procédures événementielles étaient bien activées.
Ta solution passant par TWB est parfaite. Tout fonctionne parfaitement
grâce à cela.

Encore merci
@+
J@@

Le 04/05/2011 07:29, MichD a écrit :
Refais le test, mais cette fois, assure-toi que les procédures événementielles sont activées.

Exécute une fois cette macro, au cas où ...
'--------------------------------
Sub Test()
Application.EnableEvents = True
End Sub
'--------------------------------

Comme je n'ai pas la version Excel 2000, une autre façon de faire :

Insère ceci dans le ThisWorkbook de ton classeur.
Dans la procédure, Sheet2 est le nom de l'onglet de la feuille où
doit te conduire le lien hypertexte. Cela aura pour effet de lancer
la procédure du module Feuille de l'objet "Sheet2" (propriété Name)

dans Application.Run "Sheet2.Worksheet_Activate"
Sheet2 est la propriété Name de l'objet Feuille visible seulement en VBA
à ne pas confondre à Sheet2 : nom de l'onglet

'---------------------------
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
If InStr(1, Target.SubAddress, "Sheet2", vbTextCompare)> 0 Then
Application.Run "Sheet2.Worksheet_Activate"
Range("G25").Select 'la cellule que tu veux activer
End If
End Sub
'---------------------------

MichD
--------------------------------------------
"J@@" a écrit
Je fais exactement la même manipulation, sous Excel 2000 SP3 (Windows 2000 ou W7pro64).
Mais la procédure événementielle ne se lance pas lorsque j'applique
cette procédure.
Si, ensuite, je clique sur l'onglet de la feuille 3 puis je reviens sur
la feuille 2 en cliquant sur son onglet, la procédure événementielle se
lance bien.

Le 04/05/2011 00:25, MichD a écrit :
J'ai fait un petit test en utilisant Excel 2007.
Dans la "Feuil1", j'ai un lien hypertexte vers une cellule de la "feuil2"
Dans le module "Feuil2", j'ai une petite macro utilisant l'événement
Private Sub Worksheet_Activate

Chaque fois que je clique sur le lien hypertexte en "Feul1", je me retrouve
sur la cellule déterminée par le lien hypertexte dans la "feuil2" et la procédure
événementielle est déclenchée.

Quelle version Excel possèdes-tu ? Si tes manipulations sont différentes de
celles que j'ai citées, que fais-tu exactement ?

MichD
--------------------------------------------