[VBA Excel] Avancer ou reculer d'1 page

Fermé
tec311 Messages postés 12 Date d'inscription dimanche 21 novembre 2004 Statut Membre Dernière intervention 23 juillet 2006 - 11 mai 2005 à 00:50
Armojax Messages postés 1858 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 22 mars 2024 - 17 mai 2005 à 19:22
Bonjour,

Je possède Excel 2000 et je débute dans la programmation VBA, pardonnez-moi si ma question peut paraître stupide...
Je voudrais savoir s'il existe une commande qui me permettrait d'avancer ou de reculer d'une feuille par rapport à la feuille courante (passer de la 3 à la 4 ou de la 33 à la 32)
Je sais envoyer l'utilisateur sur une feuille déterminée, mais pas sur la précédente ou la suivante.

Merci de votre aide
A voir également:

12 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
14 mai 2005 à 01:45
Salut,

C'est possible de defiler les feuilles d'Excel avec des macros.

Voila 2 macro qui peuvent faire defiler (avancer ou reculer)

Mais pour ça tu doit :

- créer 2 boutons personnalisés dans une barre d'outils
ou
- créer sur chaque feuille 2 boutons

et leurs affecter les 2 macros

Pour avancer

Sub avancer()
dim nbrFeuille as Long
dim idxFeuille as Long
nbrFeuille = Application.Worksheets.count
idxFeuille = ActiveSheet.Index
If idxFeuille = nbrFeuille Then Exit Sub
Sheets(idxFeuille + 1).Select
End Sub

Pour reculer


Sub reculer()
dim nbrFeuille as Long
dim idxFeuille as Long
idxFeuille = ActiveSheet.Index
If idxFeuille = 1 Then Exit Sub
Sheets(idxFeuille - 1).Select
End Sub

A+

lami20j
0
Armojax Messages postés 1858 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 22 mars 2024 1 527
14 mai 2005 à 08:07
Hello,

...ou encore :

Sub Avancer()
  If ActiveSheet.Index < Worksheets.Count Then
    Sheets(ActiveSheet.Index + 1).Activate
  End If
End Sub

Sub Reculer()
  If ActiveSheet.Index > 1 Then
    Sheets(ActiveSheet.Index - 1).Activate
  End If
End Sub
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
14 mai 2005 à 10:24
bonjour

très bien cette formule car pourquoi faire compliqué
quand on peut faire simple.

0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
14 mai 2005 à 11:55
Salut,

Tu as toute à fait raison gbinforme quand tu dit
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
14 mai 2005 à 22:04
Salut,

Tu as tout à fait raison gbinforme quand tu dit
"pourquoi faire compliqué quand on peut faire simple" mais malheureusement tu as oublié qu'il est débutant en programmation ("je débute dans la programmation VBA", "pardonnez-moi si ma question peut paraître stupide... ") et il faut choisir entre la simplicité ou la comprehension.
Je ne pense pas qu'au début de la programmation tu as crée les plus simple modules.
Donc d'après moi en ce cas mieux passer toutes les étapes (déclaraion des variables et initialisation des variables, etc..) que de faire d'un coup le plus simple.
J'avais déjà le module d'Armojax (enlever les variables et c'est tout, rien de special que l'élimination de quelque caractèrs des modules que j'ai envoyé) mais ce que j'ai envoyé à tec311 c'est mon module quand j'ai commencé VBA.

Bon week-end

A+
lami20j

P.S. Apropos ce sont des procédures et non des formules "très bien cette formule "
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
15 mai 2005 à 00:13
bonsoir

merci pour la leçon, mais j'ai toujours pensé (et je continue de le dire)
que la simplicité de la programmation la rend à la fois
plus compréhensible et plus efficace.

il faut déclarer et initialiser des variables quand elles sont nécessaires,
mais c'est préférable d'utiliser les données système que de les dupliquer
dans des variables personnelles qui n'ont aucune réalité propre.

Je ne pense pas qu'au début de la programmation tu as crée les plus simple modules

c'est une supposition gratuite et infondée car mon mentor
m'a permis d'éviter de compliquer inutilement dès le début.

ceci dit, c'est mon opinion et je la partage comme dit Vandel,
mais chacun est libre de raisonner à sa manière
et ce sera la meilleure pour lui.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
15 mai 2005 à 00:28
Bonsoir,

"c'est une supposition gratuite et infondée car mon mentor
m'a permis d'éviter de compliquer inutilement dès le début. "

Je ne te donne pas des leçons, je ne crois pas que tu as besoins (tu as délà un mentor ) et ce n'est pas une supposition je suis certain.

Quant aux "variables personnelles" tu as tout à fait raison.
Moi j'ai écrit le code pour un débutant et en tant que débutant. (petite paranthèse - il y a qulqu'un qui m'a demandé un jour de lui faire un tp sur excel et en tant qu'autodidact, mon mentor c'est le net dont tu fait parti et j'ai obtenu 17/20 et ça ne veut dire pas que je suis fort mais seulement que ça peut aller)

Et si on parle de "données système" je suis désolé tu te trompes de nouveau, puisqu'il ne s'agit pas des donnés système, mais de l'environement d'excel.

Mais si tu trouves "ActiveSheet.Index" et "Worksheets.Count" sans avoir excel alors dit moi comment tu fais. Ca à l'air interessant.

A+
---
c'est sympa d'être important mais c'est plus important d'être sympa
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
15 mai 2005 à 00:45
bonjour

ce n'est pas une supposition je suis certain.

restes avec tes certitudes, c'est sympa d'être important...

0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
15 mai 2005 à 01:02
Bonsoir,

Moi je ne veut pas faire la guerre et je tient compte toujours de ce que je lis et bien sûr je fait mon choix
"mais chacun est libre de raisonner à sa manière " c'est naturrel.

Mais je vois que ton mentor t'as appris plûtot à copier ce que disent les autres donc je vois qu'il te manque "à sa manière".
A la place de jouer l'avocat peut être c'est mieux de partager tes connaissances.
-----------------------------------------------------------------------------
Concernant Armojax j'ai bien remarqué qu'il maîtrise assez bien excel.

Merci pour ta fonction
Function CHIFLETR(Nombre, Optional Monnaie As String = "euro", Optional Maju As Boolean = True)
---------------------------------------------------------------------------------------------------
Et en plus tu n'as même pas remarqué que je t'ai donné raison.

C'est facile de provoquer une dispute sans aucune raison et moi je ne veux pas ça.
Ca ne m'interesse pas d'être important, et je t'assure que ici j'ai appris pas mal des choses et surtout j'ai corrigé beaucoup des choses que j'ai mal appris, et ce n'est pas fini.

C'est toi qui a raison et ça ne me derange pas du tout, au contraire je te dit merci.

A+
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
15 mai 2005 à 01:54
Bonsoir tec311,

tmtowtdi (there's more than one way to do it) - il existe plus d'une façon de faire

Sub avancer ()
        If ActiveSheet.Index < Sheets.Count Then
            ActiveSheet.Next.Activate
        End If
End Sub


Sub reculer ()
        If ActiveSheet.Index > 1 Then
            ActiveSheet.Previous.Activate
        End If
End Sub


"pourquoi faire compliqué quand on peut faire simple."

A+
0
Armojax Messages postés 1858 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 22 mars 2024 1 527
17 mai 2005 à 11:16
Allez, encore une variante...
Sub Avancer()
  On Error Resume Next
  ActiveSheet.Next.Activate
End Sub

Sub reculer()
  On Error Resume Next
  ActiveSheet.Previous.Activate
End Sub
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
17 mai 2005 à 18:29
Ca c'est une vraie "dispute" sur ccm.
Félicitations Armojax.
.....c'est plus important d'être sympa.
Et je vois que tu ne fais pas des efforts, c'est naturel.

A+

lami20j
0
Armojax Messages postés 1858 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 22 mars 2024 1 527
17 mai 2005 à 19:22
:-)
0