IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Simplification de code [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    retraite
    Inscrit en
    Avril 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Espagne

    Informations professionnelles :
    Activité : retraite
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2010
    Messages : 325
    Par défaut Simplification de code
    bonjour
    je cherche les infos suivantes:
    peut on remplacer le code suivant par un autre code, car je repete x fois la ligne ci dessous pour chaque mois.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Janv").Visible = False
    et il y a-t-il un autre moyen que le .select, peut etre plus rapide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Livres").Select
    merci pour les infos.
    cris

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Pour cacher les feuilles des mois. Comme indiqué en commentaire, elles doivent être nommées de la manière suivante "'janv, févr, mars, avr, mai,juin, juil, août, sept, oct, nov, déc" (faire un Debug.Print pour voir ce que retoure la fonction "MonthName".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    Sub Cacher()
     
        Dim Fe As Worksheet
        Dim TblMois(1 To 12) As String
        Dim I As Integer
     
        'charge le tableau avec les noms des mois en abrégés
        'False pour les noms en entier
        For I = 1 To 12
     
            TblMois(I) = MonthName(I, True)
     
        'les noms des feuilles doivent être :
        'janv, févr, mars, avr, mai,juin, juil, août, sept, oct, nov, déc
     
        Next I
     
        'cache toutes les feuilles des mois
        For I = 1 To 12
     
            'ignore l'erreur due à la feuille inexistante
            On Error Resume Next
            Worksheets(TblMois(I)).Visible = False
     
        Next I
     
    End Sub
    Il faut autant que possible éviter les Select ça fait sautiller l'écran et ralentir le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    'un bloc de code :
    Sheets("Feuil1").Select
    Range("A1:B10").Select
    Selection.Interior.ColorIndex = 3
     
    'peut être remplacé par :
    Sheets("Feuil1").[A1:B10].Interior.ColorIndex = 3
    Hervé.

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pourquoi deux boucles et le passage par une variable tableau intermédiaire ?
    Ceci suffit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        Dim i As Integer
        On Error Resume Next
        For i = 1 To 12
          Worksheets(MonthName(i, True)).Visible = False 
        Next i
        On Error GoTo 0
    Et ce code pour afficher les feuilles quand elles sont cachées et les cacher si elles sont visibles.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        Dim i As Integer
        On Error Resume Next
        For i = 1 To 12
          With Worksheets(MonthName(i, True))
          .Visible = Not (.Visible)
          End With
        Next i
        On Error GoTo 0
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour corona,

    Tu as tout à fait raison, je n'ai pas réfléchi plus loin :0(

    Hervé.

  5. #5
    Membre éclairé
    Homme Profil pro
    retraite
    Inscrit en
    Avril 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Espagne

    Informations professionnelles :
    Activité : retraite
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2010
    Messages : 325
    Par défaut
    merci a vous
    cris

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Simplification de code
    Par lodan dans le forum Langage
    Réponses: 4
    Dernier message: 20/09/2006, 19h28
  2. Simplification de code
    Par lodan dans le forum Langage
    Réponses: 2
    Dernier message: 31/08/2006, 21h51
  3. Simplification de code (suite)
    Par Jeffboj dans le forum Access
    Réponses: 1
    Dernier message: 12/04/2006, 22h34
  4. simplification de code
    Par Jeffboj dans le forum Access
    Réponses: 11
    Dernier message: 11/04/2006, 15h09
  5. [c#] Simplification de code
    Par Revan012 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 04/02/2006, 16h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo