[VBA Excel ] Boucle
Résolu
sebi78
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
sebi78 Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
sebi78 Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
bonjour à tous,
Je cherche à optimiser mon programme.
J'ai crée une 20 feuilles que je rend visible ou invisible à partir de boutons. Voici un exemple de code sur un bouton.
Je voudrais faire une incrementation et des boucles sur le numero des feuilles pour simplifier mon programme.
Comment puis faire.
Merci de m'aider
------------------------------------------
Private Sub CommandButton1_Click()
Worksheets(2).Visible = True
Worksheets(1).Visible = False
etc....
Worksheets(20).Visible = False
'Activation d'une feuille
Worksheets(2).Activate
'recentrer sur la feuille
Worksheets(2).Range("a5").Select
End Sub
Je cherche à optimiser mon programme.
J'ai crée une 20 feuilles que je rend visible ou invisible à partir de boutons. Voici un exemple de code sur un bouton.
Je voudrais faire une incrementation et des boucles sur le numero des feuilles pour simplifier mon programme.
Comment puis faire.
Merci de m'aider
------------------------------------------
Private Sub CommandButton1_Click()
Worksheets(2).Visible = True
Worksheets(1).Visible = False
etc....
Worksheets(20).Visible = False
'Activation d'une feuille
Worksheets(2).Activate
'recentrer sur la feuille
Worksheets(2).Range("a5").Select
End Sub
A voir également:
- [VBA Excel ] Boucle
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
3 réponses
bonjour
Voila une première idée, mais en fait il faudrait utiliser un seul bouton
pour choisir la feuille visible et n'écrire qu'une seule macro.
Voila une première idée, mais en fait il faudrait utiliser un seul bouton
pour choisir la feuille visible et n'écrire qu'une seule macro.
Private Sub CommandButton1_Click() ' n° du bouton choix=1 call action(1) End Sub ... Private Sub CommandButton20_Click() ' n° du bouton choix=20 call action(20) End Sub Private Sub action(choix as integer) dim i as integer for i = 1 to 20 Worksheets(i).Visible = False next i Worksheets(choix).Visible = True 'Activation d'une feuille Worksheets(choix).Activate 'recentrer sur la feuille Worksheets(choix).Range("a5").Select End Sub
bonjour
Il ne faut certainement pas occulter tous les onglets, ce qui provoque l'erreur.
C'est vrai qu'un fichier essai sera plus parlant.
tu peux l'envoyer sur : https://www.cjoint.com/
puis mettre sur un message le code attribué.
merci d'avance.
Il ne faut certainement pas occulter tous les onglets, ce qui provoque l'erreur.
C'est vrai qu'un fichier essai sera plus parlant.
tu peux l'envoyer sur : https://www.cjoint.com/
puis mettre sur un message le code attribué.
merci d'avance.
Bonjour,
Voici mon fichier test. Si cela ne suffit pas je t'enverrai mon fichier que je veux optimiser pour voir en detail ce que je veux.
C'est pas evident d'expliquer.
https://www.cjoint.com/?dzxiWkVOzY
Voici mon fichier test. Si cela ne suffit pas je t'enverrai mon fichier que je veux optimiser pour voir en detail ce que je veux.
C'est pas evident d'expliquer.
https://www.cjoint.com/?dzxiWkVOzY
bonjour
Effectivement, je n'avais pas vu ta façon d'utiliser la fonction.
Je te propose la modification suivante qui fonctionne avec n'importe quel nombre de feuilles.
Comme tu n'as qu'un seul onglet visible,
tu peux dans le menu outils / options / onglet affichage,
décocher l'option "onglets de classeur".
Bonne journée.
Effectivement, je n'avais pas vu ta façon d'utiliser la fonction.
Je te propose la modification suivante qui fonctionne avec n'importe quel nombre de feuilles.
Public Sub action(choix As Integer) Dim i As Integer For i = 1 To Worksheets.Count If Worksheets(i).Index = choix Then Worksheets(i).Visible = True Else If Not ActiveSheet.Index = i Then Worksheets(i).Visible = False End If Next i 'changement de feuille active i = ActiveSheet.Index Worksheets(choix).Activate Worksheets(i).Visible = False 'recentrer sur la feuille Range("a5").Select End Sub
Comme tu n'as qu'un seul onglet visible,
tu peux dans le menu outils / options / onglet affichage,
décocher l'option "onglets de classeur".
Bonne journée.
Merci pour ton aide. J'ai essaie tes lignes de codes. J'ai encore des soucis. voici le message d'erreur.
erreur exécution 1004 impossible de definir la propriete visible de wooksheet.
Qand je veux activer voir le feuille 2 , il me cache feuille 1 et 2 puis je ne peux revenir à ma feuille 1 avec mon bouton retour.
Je t'ai fait un fichier essai par contre je ne sais pas comment te le joindre.