[VBA Excel ] Boucle

Résolu/Fermé
sebi78 Messages postés 5 Date d'inscription vendredi 16 mars 2007 Statut Membre Dernière intervention 26 mars 2007 - 23 mars 2007 à 18:06
sebi78 Messages postés 5 Date d'inscription vendredi 16 mars 2007 Statut Membre Dernière intervention 26 mars 2007 - 26 mars 2007 à 12:54
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
A voir également:

3 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
23 mars 2007 à 23:31
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.

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
0
sebi78 Messages postés 5 Date d'inscription vendredi 16 mars 2007 Statut Membre Dernière intervention 26 mars 2007
25 mars 2007 à 20:53
Bonjour,

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.
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
25 mars 2007 à 23:03
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.
0
sebi78 Messages postés 5 Date d'inscription vendredi 16 mars 2007 Statut Membre Dernière intervention 26 mars 2007
25 mars 2007 à 23:11
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
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
26 mars 2007 à 10:31
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.

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.

0
sebi78 Messages postés 5 Date d'inscription vendredi 16 mars 2007 Statut Membre Dernière intervention 26 mars 2007
26 mars 2007 à 12:54
Bonjour,

Merci pour ton aide. Cela marche . J'aurais surement d'autre question comme je debute.

bonne journee à toi.

a+
0