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

vba sélectionner feuille suivante

11 réponses
Avatar
j-pascal
Bonjour,

Pour sélectionner la feuille suivante à partir d'une feuille donnée,
j'ai fait ceci :

'------
Sub essai()
On Error Resume Next 'au cas où la feuille active est la dernière !
x = ActiveSheet.Index
Worksheets(x + 1).Select
End Sub
'------

Ca fonctionne, mais je pense qu'on peut faire mieux ...

Merci pour vos lumières,

JP

10 réponses

1 2
Avatar
isabelle
bonjour JO,

ActiveSheet.Next.Select
ActiveSheet.Previous.Select

isabelle

j-pascal a écrit :
Bonjour,

Pour sélectionner la feuille suivante à partir d'une feuille donnée,
j'ai fait ceci :

'------
Sub essai()
On Error Resume Next 'au cas où la feuille active est la dernière !
x = ActiveSheet.Index
Worksheets(x + 1).Select
End Sub
'------

Ca fonctionne, mais je pense qu'on peut faire mieux ...

Merci pour vos lumières,

JP




Avatar
isabelle
désolé Jp, à cette heure mes doigts font de fausses man½uvres
isabelle

j-pascal a écrit :
Bonjour,

Pour sélectionner la feuille suivante à partir d'une feuille donnée,
j'ai fait ceci :

'------
Sub essai()
On Error Resume Next 'au cas où la feuille active est la dernière !
x = ActiveSheet.Index
Worksheets(x + 1).Select
End Sub
'------

Ca fonctionne, mais je pense qu'on peut faire mieux ...

Merci pour vos lumières,

JP




Avatar
j-pascal
Bonjour Isabelle,

Merci.
A priori cela n'empêche pas "On Error Resume ..." si le dernière (ou
première) feuille est la feuille active ?!
JP
bonjour JO,

ActiveSheet.Next.Select
ActiveSheet.Previous.Select

isabelle

j-pascal a écrit :
Bonjour,

Pour sélectionner la feuille suivante à partir d'une feuille donnée, j'ai
fait ceci :

'------
Sub essai()
On Error Resume Next 'au cas où la feuille active est la dernière !
x = ActiveSheet.Index
Worksheets(x + 1).Select
End Sub
'------

Ca fonctionne, mais je pense qu'on peut faire mieux ...

Merci pour vos lumières,

JP




Avatar
Jacky
Bonsoir,

A priori cela n'empêche pas "On Error Resume ..."


'---------
Sub essai()
Worksheets(ActiveSheet.Index - Not ActiveSheet.Index + 1 >
Worksheets.Count).Select
End Sub
'-------------

--
Salutations
JJ


"j-pascal" a écrit dans le message de news:

Bonjour Isabelle,

Merci.
A priori cela n'empêche pas "On Error Resume ..." si le dernière (ou
première) feuille est la feuille active ?!
JP
bonjour JO,

ActiveSheet.Next.Select
ActiveSheet.Previous.Select

isabelle

j-pascal a écrit :
Bonjour,

Pour sélectionner la feuille suivante à partir d'une feuille donnée,
j'ai fait ceci :

'------
Sub essai()
On Error Resume Next 'au cas où la feuille active est la dernière !
x = ActiveSheet.Index
Worksheets(x + 1).Select
End Sub
'------

Ca fonctionne, mais je pense qu'on peut faire mieux ...

Merci pour vos lumières,

JP








Avatar
j-pascal
Bonjour Jacky,

Merci. Je n'ai pas essayé, mais j'imagine que ça fonctionne ; peut-on
combiner cela avec l'autre proposition d'Isabelle, à savoir :
"ActiveSheet.Previous.Select" ?
Soit, gérer sur les 2 bouts !

JP

Bonsoir,

A priori cela n'empêche pas "On Error Resume ..."


'---------
Sub essai()
Worksheets(ActiveSheet.Index - Not ActiveSheet.Index + 1 >
Worksheets.Count).Select
End Sub
'-------------

--
Salutations
JJ


"j-pascal" a écrit dans le message de news:

Bonjour Isabelle,

Merci.
A priori cela n'empêche pas "On Error Resume ..." si le dernière (ou
première) feuille est la feuille active ?!
JP
bonjour JO,

ActiveSheet.Next.Select
ActiveSheet.Previous.Select

isabelle

j-pascal a écrit :
Bonjour,

Pour sélectionner la feuille suivante à partir d'une feuille donnée, j'ai
fait ceci :

'------
Sub essai()
On Error Resume Next 'au cas où la feuille active est la dernière !
x = ActiveSheet.Index
Worksheets(x + 1).Select
End Sub
'------

Ca fonctionne, mais je pense qu'on peut faire mieux ...

Merci pour vos lumières,

JP










Avatar
Jacky
Re,
Merci. Je n'ai pas essayé...


C'est pas bien du tout ça ;o)))

Soit, gérer sur les 2 bouts !


'--------------
Sub Avance()
Worksheets(ActiveSheet.Index - Not ActiveSheet.Index + 1 >
Worksheets.Count).Select
End Sub
'-----
Sub recule()
Worksheets(ActiveSheet.Index + Not ActiveSheet.Index - 1 < 1).Select
End Sub
'----------------

--
Salutations
JJ


"j-pascal" a écrit dans le message de news:

Bonjour Jacky,

Merci. Je n'ai pas essayé, mais j'imagine que ça fonctionne ; peut-on
combiner cela avec l'autre proposition d'Isabelle, à savoir :
"ActiveSheet.Previous.Select" ?
Soit, gérer sur les 2 bouts !

JP

Bonsoir,

A priori cela n'empêche pas "On Error Resume ..."


'---------
Sub essai()
Worksheets(ActiveSheet.Index - Not ActiveSheet.Index + 1 >
Worksheets.Count).Select
End Sub
'-------------

--
Salutations
JJ


"j-pascal" a écrit dans le message de news:

Bonjour Isabelle,

Merci.
A priori cela n'empêche pas "On Error Resume ..." si le dernière (ou
première) feuille est la feuille active ?!
JP
bonjour JO,

ActiveSheet.Next.Select
ActiveSheet.Previous.Select

isabelle

j-pascal a écrit :
Bonjour,

Pour sélectionner la feuille suivante à partir d'une feuille donnée,
j'ai fait ceci :

'------
Sub essai()
On Error Resume Next 'au cas où la feuille active est la dernière !
x = ActiveSheet.Index
Worksheets(x + 1).Select
End Sub
'------

Ca fonctionne, mais je pense qu'on peut faire mieux ...

Merci pour vos lumières,

JP














Avatar
j-pascal
Bonsoir Jacky,

J'aurais dû dire : "je n'ai pas ENCORE essayé" ;-)

Merci, c'est super ! Je ne peux que constater que ça fonctionne mais je
ne ne comprends pas bien (la syntaxe de) ton code "- Not ..." !

JP

Re,
Merci. Je n'ai pas essayé...


C'est pas bien du tout ça ;o)))

Soit, gérer sur les 2 bouts !


'--------------
Sub Avance()
Worksheets(ActiveSheet.Index - Not ActiveSheet.Index + 1 >
Worksheets.Count).Select
End Sub
'-----
Sub recule()
Worksheets(ActiveSheet.Index + Not ActiveSheet.Index - 1 < 1).Select
End Sub
'----------------

--
Salutations
JJ


"j-pascal" a écrit dans le message de news:

Bonjour Jacky,

Merci. Je n'ai pas essayé, mais j'imagine que ça fonctionne ; peut-on
combiner cela avec l'autre proposition d'Isabelle, à savoir :
"ActiveSheet.Previous.Select" ?
Soit, gérer sur les 2 bouts !

JP

Bonsoir,

A priori cela n'empêche pas "On Error Resume ..."


'---------
Sub essai()
Worksheets(ActiveSheet.Index - Not ActiveSheet.Index + 1 >
Worksheets.Count).Select
End Sub
'-------------

--
Salutations
JJ


"j-pascal" a écrit dans le message de news:

Bonjour Isabelle,

Merci.
A priori cela n'empêche pas "On Error Resume ..." si le dernière (ou
première) feuille est la feuille active ?!
JP
bonjour JO,

ActiveSheet.Next.Select
ActiveSheet.Previous.Select

isabelle

j-pascal a écrit :
Bonjour,

Pour sélectionner la feuille suivante à partir d'une feuille donnée,
j'ai fait ceci :

'------
Sub essai()
On Error Resume Next 'au cas où la feuille active est la dernière !
x = ActiveSheet.Index
Worksheets(x + 1).Select
End Sub
'------

Ca fonctionne, mais je pense qu'on peut faire mieux ...

Merci pour vos lumières,

JP
















Avatar
Jacky
Re...
;o))
ne ne comprends pas bien (la syntaxe de) ton code "- Not ..." !


Essaye ceci, cela va peut-être contribuer à la compréhension du code
'----------
Sub Avance()
msg = "ActiveSheet.Index = " & ActiveSheet.Index
msg = msg & Chr(10) & "Not ActiveSheet.Index + 1 > Worksheets.Count = " &
Not ActiveSheet.Index + 1 > Worksheets.Count
msg = msg & Chr(10) & "En vba VRAI = -1 FAUX = 0"
msg = msg & Chr(10) & "ActiveSheet.Index - Not ActiveSheet.Index + 1 >
Worksheets.Count = " & ActiveSheet.Index - Not ActiveSheet.Index + 1 >
Worksheets.Count
msg = msg & Chr(10) & "Parce-que " & ActiveSheet.Index & " - (" & (Not
ActiveSheet.Index + 1 > Worksheets.Count) * 1 & ") = " & ActiveSheet.Index -
Not ActiveSheet.Index + 1 > Worksheets.Count
Worksheets(ActiveSheet.Index - Not ActiveSheet.Index + 1 >
Worksheets.Count).Select
MsgBox msg
End Sub
'-------------------
Voir ici:
http://cjoint.com/?lokdtxEvPW
--
Salutations
JJ


"j-pascal" a écrit dans le message de news:

Bonsoir Jacky,

J'aurais dû dire : "je n'ai pas ENCORE essayé" ;-)

Merci, c'est super ! Je ne peux que constater que ça fonctionne mais je ne
ne comprends pas bien (la syntaxe de) ton code "- Not ..." !

JP

Re,
Merci. Je n'ai pas essayé...


C'est pas bien du tout ça ;o)))

Soit, gérer sur les 2 bouts !


'--------------
Sub Avance()
Worksheets(ActiveSheet.Index - Not ActiveSheet.Index + 1 >
Worksheets.Count).Select
End Sub
'-----
Sub recule()
Worksheets(ActiveSheet.Index + Not ActiveSheet.Index - 1 < 1).Select
End Sub
'----------------

--
Salutations
JJ


"j-pascal" a écrit dans le message de news:

Bonjour Jacky,

Merci. Je n'ai pas essayé, mais j'imagine que ça fonctionne ; peut-on
combiner cela avec l'autre proposition d'Isabelle, à savoir :
"ActiveSheet.Previous.Select" ?
Soit, gérer sur les 2 bouts !

JP

Bonsoir,

A priori cela n'empêche pas "On Error Resume ..."


'---------
Sub essai()
Worksheets(ActiveSheet.Index - Not ActiveSheet.Index + 1 >
Worksheets.Count).Select
End Sub
'-------------

--
Salutations
JJ


"j-pascal" a écrit dans le message de news:

Bonjour Isabelle,

Merci.
A priori cela n'empêche pas "On Error Resume ..." si le dernière (ou
première) feuille est la feuille active ?!
JP
bonjour JO,

ActiveSheet.Next.Select
ActiveSheet.Previous.Select

isabelle

j-pascal a écrit :
Bonjour,

Pour sélectionner la feuille suivante à partir d'une feuille donnée,
j'ai fait ceci :

'------
Sub essai()
On Error Resume Next 'au cas où la feuille active est la dernière !
x = ActiveSheet.Index
Worksheets(x + 1).Select
End Sub
'------

Ca fonctionne, mais je pense qu'on peut faire mieux ...

Merci pour vos lumières,

JP




















Avatar
j-pascal
Bonjour Jacky,
Merci pour cette démonstration très détaillée.

Au sujet de la dernière ligne (ie) :
"Worksheets(ActiveSheet.Index - Not ActiveSheet.Index + 1 >
Worksheets.Count).Select"

"ActiveSheet.Index + 1" correspond à la feuille suivant la feuille
active, non ?
Si oui, je ne comprends pas le rôle de "Not" ! Est-ce supposé inversé
le résulat du test logique ? Si oui, pourquoi ?

JP

PS : dans le code suivant "If Not Intersect([C:C], Target) Is Nothing"
j'ai le même pb de compréhension avec les "doubles" négations (Not et
Nothing). LSteph va râler parce que je n'ai mis qu'un bout de code ;-)

Re...
;o))
ne ne comprends pas bien (la syntaxe de) ton code "- Not ..." !


Essaye ceci, cela va peut-être contribuer à la compréhension du code
'----------
Sub Avance()
msg = "ActiveSheet.Index = " & ActiveSheet.Index
msg = msg & Chr(10) & "Not ActiveSheet.Index + 1 > Worksheets.Count = " & Not
ActiveSheet.Index + 1 > Worksheets.Count
msg = msg & Chr(10) & "En vba VRAI = -1 FAUX = 0"
msg = msg & Chr(10) & "ActiveSheet.Index - Not ActiveSheet.Index + 1 >
Worksheets.Count = " & ActiveSheet.Index - Not ActiveSheet.Index + 1 >
Worksheets.Count
msg = msg & Chr(10) & "Parce-que " & ActiveSheet.Index & " - (" & (Not
ActiveSheet.Index + 1 > Worksheets.Count) * 1 & ") = " & ActiveSheet.Index -
Not ActiveSheet.Index + 1 > Worksheets.Count
Worksheets(ActiveSheet.Index - Not ActiveSheet.Index + 1 >
Worksheets.Count).Select
MsgBox msg
End Sub
'-------------------
Voir ici:
http://cjoint.com/?lokdtxEvPW
--
Salutations
JJ


"j-pascal" a écrit dans le message de news:

Bonsoir Jacky,

J'aurais dû dire : "je n'ai pas ENCORE essayé" ;-)

Merci, c'est super ! Je ne peux que constater que ça fonctionne mais je ne
ne comprends pas bien (la syntaxe de) ton code "- Not ..." !

JP

Re,
Merci. Je n'ai pas essayé...


C'est pas bien du tout ça ;o)))

Soit, gérer sur les 2 bouts !


'--------------
Sub Avance()
Worksheets(ActiveSheet.Index - Not ActiveSheet.Index + 1 >
Worksheets.Count).Select
End Sub
'-----
Sub recule()
Worksheets(ActiveSheet.Index + Not ActiveSheet.Index - 1 < 1).Select
End Sub
'----------------

--
Salutations
JJ


"j-pascal" a écrit dans le message de news:

Bonjour Jacky,

Merci. Je n'ai pas essayé, mais j'imagine que ça fonctionne ; peut-on
combiner cela avec l'autre proposition d'Isabelle, à savoir :
"ActiveSheet.Previous.Select" ?
Soit, gérer sur les 2 bouts !

JP

Bonsoir,

A priori cela n'empêche pas "On Error Resume ..."


'---------
Sub essai()
Worksheets(ActiveSheet.Index - Not ActiveSheet.Index + 1 >
Worksheets.Count).Select
End Sub
'-------------

--
Salutations
JJ


"j-pascal" a écrit dans le message de news:

Bonjour Isabelle,

Merci.
A priori cela n'empêche pas "On Error Resume ..." si le dernière (ou
première) feuille est la feuille active ?!
JP
bonjour JO,

ActiveSheet.Next.Select
ActiveSheet.Previous.Select

isabelle

j-pascal a écrit :
Bonjour,

Pour sélectionner la feuille suivante à partir d'une feuille donnée,
j'ai fait ceci :

'------
Sub essai()
On Error Resume Next 'au cas où la feuille active est la dernière !
x = ActiveSheet.Index
Worksheets(x + 1).Select
End Sub
'------

Ca fonctionne, mais je pense qu'on peut faire mieux ...

Merci pour vos lumières,

JP






















Avatar
Jacky
Re...

Si oui, je ne comprends pas le rôle de "Not" ! Est-ce supposé inversé le
résulat du test logique ? Si oui, pourquoi ?


Parce qu'il faut dans ce cas ajouter -1 quand l'inverse du test logique est
vrai
L'équivalent de
If ActiveSheet.Index + 1 > Worksheets.Count Then.....
Le reste n'est que mathématique.
j'ai le même pb de compréhension avec les "doubles" négations (Not et
Nothing)


Ben , dis-toi que cette instruction, elle est comme cela, il faudra t'y
faire.

LSteph va râler parce que je n'ai mis qu'un bout de code ;-)


Si LSteph râle, c'est qu'il à certainement de bonne raison de le faire.
--
Salutations
JJ


"j-pascal" a écrit dans le message de news:

Bonjour Jacky,
Merci pour cette démonstration très détaillée.

Au sujet de la dernière ligne (ie) :
"Worksheets(ActiveSheet.Index - Not ActiveSheet.Index + 1 >
Worksheets.Count).Select"

"ActiveSheet.Index + 1" correspond à la feuille suivant la feuille active,
non ?
Si oui, je ne comprends pas le rôle de "Not" ! Est-ce supposé inversé le
résulat du test logique ? Si oui, pourquoi ?

JP

PS : dans le code suivant "If Not Intersect([C:C], Target) Is Nothing"
j'ai le même pb de compréhension avec les "doubles" négations (Not et
Nothing). LSteph va râler parce que je n'ai mis qu'un bout de code ;-)

Re...
;o))
ne ne comprends pas bien (la syntaxe de) ton code "- Not ..." !


Essaye ceci, cela va peut-être contribuer à la compréhension du code
'----------
Sub Avance()
msg = "ActiveSheet.Index = " & ActiveSheet.Index
msg = msg & Chr(10) & "Not ActiveSheet.Index + 1 > Worksheets.Count = " &
Not ActiveSheet.Index + 1 > Worksheets.Count
msg = msg & Chr(10) & "En vba VRAI = -1 FAUX = 0"
msg = msg & Chr(10) & "ActiveSheet.Index - Not ActiveSheet.Index + 1 >
Worksheets.Count = " & ActiveSheet.Index - Not ActiveSheet.Index + 1 >
Worksheets.Count
msg = msg & Chr(10) & "Parce-que " & ActiveSheet.Index & " - (" & (Not
ActiveSheet.Index + 1 > Worksheets.Count) * 1 & ") = " &
ActiveSheet.Index - Not ActiveSheet.Index + 1 > Worksheets.Count
Worksheets(ActiveSheet.Index - Not ActiveSheet.Index + 1 >
Worksheets.Count).Select
MsgBox msg
End Sub
'-------------------
Voir ici:
http://cjoint.com/?lokdtxEvPW
--
Salutations
JJ


"j-pascal" a écrit dans le message de news:

Bonsoir Jacky,

J'aurais dû dire : "je n'ai pas ENCORE essayé" ;-)

Merci, c'est super ! Je ne peux que constater que ça fonctionne mais je
ne ne comprends pas bien (la syntaxe de) ton code "- Not ..." !

JP

Re,
Merci. Je n'ai pas essayé...


C'est pas bien du tout ça ;o)))

Soit, gérer sur les 2 bouts !


'--------------
Sub Avance()
Worksheets(ActiveSheet.Index - Not ActiveSheet.Index + 1 >
Worksheets.Count).Select
End Sub
'-----
Sub recule()
Worksheets(ActiveSheet.Index + Not ActiveSheet.Index - 1 < 1).Select
End Sub
'----------------

--
Salutations
JJ


"j-pascal" a écrit dans le message de news:

Bonjour Jacky,

Merci. Je n'ai pas essayé, mais j'imagine que ça fonctionne ; peut-on
combiner cela avec l'autre proposition d'Isabelle, à savoir :
"ActiveSheet.Previous.Select" ?
Soit, gérer sur les 2 bouts !

JP

Bonsoir,

A priori cela n'empêche pas "On Error Resume ..."


'---------
Sub essai()
Worksheets(ActiveSheet.Index - Not ActiveSheet.Index + 1 >
Worksheets.Count).Select
End Sub
'-------------

--
Salutations
JJ


"j-pascal" a écrit dans le message de news:

Bonjour Isabelle,

Merci.
A priori cela n'empêche pas "On Error Resume ..." si le dernière (ou
première) feuille est la feuille active ?!
JP
bonjour JO,

ActiveSheet.Next.Select
ActiveSheet.Previous.Select

isabelle

j-pascal a écrit :
Bonjour,

Pour sélectionner la feuille suivante à partir d'une feuille
donnée, j'ai fait ceci :

'------
Sub essai()
On Error Resume Next 'au cas où la feuille active est la dernière
!
x = ActiveSheet.Index
Worksheets(x + 1).Select
End Sub
'------

Ca fonctionne, mais je pense qu'on peut faire mieux ...

Merci pour vos lumières,

JP


























1 2