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 :

"compilation" de feuilles


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 593
    Points : 153
    Points
    153
    Par défaut "compilation" de feuilles
    Bonjour,

    Comment puis-je "compiler" les noms de feuilles suivants pour n'avoir qu'une seule fois "If ws.Name" (a fortiori si j'ai encore d'autres feuilles à ajouter) ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If ws.Name <> "menus" And ws.Name <> "réf." Then
    Merci pour vos lumières

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Ce que tu souhaites faire ne répondra pas à ton besoin.
    Si tu veux tester le nom de toutes les feuilles, il faut passer par une boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim ws As Worksheet
    For Each ws in Worksheets
      ... etc...
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 593
    Points : 153
    Points
    153
    Par défaut
    Merci pour cette réponse,
    Au cas où, voila le contexte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Rec_Noms_Onglets()
    Dim ws As Worksheet, i As Integer
     
        i = 2
        Application.EnableEvents = False 'ajout jp
        Sheets("menus").Columns(1).ClearContents
        For Each ws In Application.Worksheets
            If ws.Name <> "menus" And ws.Name <> "réf." Then
                Sheets("menus").Range("A" & i) = ws.Name
                i = i + 1
            End If
        Next ws
        Application.EnableEvents = True 'ajout jp
    End Sub

  4. #4
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par jpma75 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                Sheets("menus").Range("A" & i) = ws.Name
    Perso, je me serais passé de variable à incrémenter en écrivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                Sheets("menus").Range("A1").End(xlDown).Offset(1,0) = ws.Name
    Et je n'aurais pas fait confiance à "jp" dans ses ajouts.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

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

    Informations forums :
    Inscription : Janvier 2013
    Messages : 593
    Points : 153
    Points
    153
    Par défaut
    Bonsoir,

    J'ai pris bonne note de la simplification du code, mais j'ai le message d'erreur suivant : "Erreur d'exécution 1004" ; "Erreur définie par l'application ou par l'objet". J'ai dû mal corriger le code initial pour ajouter le tiens.

    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
    Sub Rec_Noms_Onglets()
    Dim ws As Worksheet, i As Integer
     
    '    i = 2
        Application.EnableEvents = False 'ajout jp
        Sheets("menus").Columns(1).ClearContents
        For Each ws In Application.Worksheets
            If ws.Name <> "menus" And ws.Name <> "réf." Then
    '            Sheets("menus").Range("A" & i) = ws.Name '(inhibée pour proposition forum ci-après)
                Sheets("menus").Range("A1").End(xlDown).Offset(1, 0) = ws.Name
    '            i = i + 1
            End If
        Next ws
        Application.EnableEvents = True 'ajout jp
    End Sub
    (jp, c'est moi, mais tu l'avais deviné) Si je ne mets pas EnableEvents = False, ça me ralentit le code en passant par le "Worksheet_Change". Que dois-je faire pour l'éviter ?

    Cdt

  6. #6
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Citation Envoyé par jpma75 Voir le message
    Comment puis-je "compiler" les noms de feuilles suivants pour n'avoir qu'une seule fois "If ws.Name" (a fortiori si j'ai encore d'autres feuilles à ajouter) ?
    Bonjour,

    avec un nombre raisonnable de feuilles il suffit juste de combiner le B-A-BA d'Excel - fonction EQUIV - dans du VBA …

    ___________________________________________________________________________________________________________
    Je suis Paris, Mogadicio, Barcelone, London, Manchester, Egypte, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 593
    Points : 153
    Points
    153
    Par défaut
    Bonjour,
    Merci pour vos réponses,
    Cdt

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

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