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 :

Boucle dans un Array ?


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
    Inscrit en
    Janvier 2013
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 660
    Par défaut Boucle dans un Array ?
    Bonjour à tous,

    Je dois exécuter ce code pour tous les mois de l'année :
    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 Scroll_And_Window_Appliquer()
     
        Application.ScreenUpdating = False
     
        Sheets("Janvier").Activate
            With ActiveSheet
                .ScrollArea = "A1:N100"
                .Columns("A:N").Select
                With ActiveWindow
                    .Zoom = True
                    .Zoom = ActiveWindow.Zoom '- 1.5
                End With
                [c9].Select
            End With
     
        Sheets("Février").Activate
            With ActiveSheet
                .ScrollArea = "A1:N100"
                .Columns("A:N").Select
                With ActiveWindow
                    .Zoom = True
                    .Zoom = ActiveWindow.Zoom '- 1.5
                End With
                [c9].Select
            End With
    Etc...
    '----
    Je pensais faire une boucle à partir de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    '----
    Sheets(Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", _
            "Septembre", "Octobre", "Novembre", "Décembre")).Select
    '----
    Je n'y parviens pas ! Est-ce possible ?
    Nota : Je voudrais éviter une boucle à partir des "CodeName" car il y a plus de feuilles dans le classeur que les onglets "Mois" et les CodeName ne correspondent pas forcément au numéro de Mois (Janvier = 1 ; Février = 2 ; etc.)

    Merci d'avance pour votre aide,

    jpma75

    PS : C'est ma première intervention sur le forum ; merci pour votre tolérance.

  2. #2
    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 176
    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 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Une solution en utilisant la boucle For Each In
    Petit exemple ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     Dim sht As Worksheet
     For Each sht In Worksheets(Array("Janvier", "Février", "Mars", "Avril"))
      With sht
       .Range("B2:F20").Interior.Color = vbYellow
      End With
     Next
    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

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Bonjour,

    Essayez
    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
    Sub Scroll_And_Window_Appliquer()
    Dim Mois As Variant
    Dim i&
     
    Mois = Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", _
               "Septembre", "Octobre", "Novembre", "Décembre")
    Application.ScreenUpdating = False
    For i& = LBound(Mois) To UBound(Mois)
      Sheets(Mois(i&)).Select
      With ActiveSheet
      .ScrollArea = "A1:N100"
      .Columns("A:N").Select
      With ActiveWindow
      .Zoom = True
      .Zoom = ActiveWindow.Zoom '- 1.5
      End With
      [c9].Select
      End With
    Next i&

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 660
    Par défaut
    (Réponse pour Philippe)

    Merci,
    Cela fonctionne bien pour désactiver les Scroll, mais dans le cas présent, si je fais :
    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
    '--
    Dim sh As Worksheet
     
        For Each sh In Worksheets(Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", _
                "Septembre", "Octobre", "Novembre", "Décembre"))
        With sh
            .ScrollArea = "A1:N100"
            .Columns("A:N").Select
            With ActiveWindow
                .Zoom = True
                .Zoom = ActiveWindow.Zoom '- 1.5
            End With
            [c9].Select
        End With
    '---
    cela me renvoie "Erreur d'exécution 1004 - La méthode select de la classe Range a échoué"

    La ligne surlignée en jaune est : ".Columns("A:N").Select"

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 660
    Par défaut
    Citation Envoyé par PMO2017 Voir le message
    Bonjour,

    Essayez
    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
    Sub Scroll_And_Window_Appliquer()
    Dim Mois As Variant
    Dim i&
     
    Mois = Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", _
               "Septembre", "Octobre", "Novembre", "Décembre")
    Application.ScreenUpdating = False
    For i& = LBound(Mois) To UBound(Mois)
      Sheets(Mois(i&)).Select
      With ActiveSheet
      .ScrollArea = "A1:N100"
      .Columns("A:N").Select
      With ActiveWindow
      .Zoom = True
      .Zoom = ActiveWindow.Zoom '- 1.5
      End With
      [c9].Select
      End With
    Next i&

Discussions similaires

  1. [MySQL] Requêtes UPDATE dans boucles foreach avec array
    Par vinceom92 dans le forum PHP & Base de données
    Réponses: 67
    Dernier message: 16/03/2014, 21h29
  2. Résultat d'une boucle dans un array
    Par endoffile dans le forum Langage
    Réponses: 5
    Dernier message: 08/12/2011, 09h09
  3. boucle for et variable dans un array
    Par ledisciple dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 01/05/2011, 08h07
  4. Réponses: 6
    Dernier message: 27/05/2010, 10h48
  5. Notion de boucles dans Business Object
    Par lionelEIGIP dans le forum Deski
    Réponses: 1
    Dernier message: 08/04/2004, 11h26

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