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 :

Sélection de feuilles par Macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Mars 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 39
    Par défaut Sélection de feuilles par Macro
    Bonjour,
    Dans Excel je voudrais sélectionner avec une macro certain onglets d'un classeur en même temps, suivant la liste de noms qui est variable. Les noms sont stockés dans la feuille en Q1 Q2 etc.
    Pour ensuite lancer une impression.
    Merci d’avance

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Pour ajouter un onglet à ceux déjà sélectionnés, tu peux utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    worksheets("MonOnglet").select False
    Ne pas oublier de dégrouper après, ce que tu pourras faire en sélectionnant une seule feuille, sans False...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre actif
    Inscrit en
    Mars 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 39
    Par défaut
    Je voulais selectionner les onglets avec les valeurs inscrite dans Q1 - Q2 - Q3 etc
    avec cette ligne de commande j'ai une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Range("Q3").Value <> "" Then Worksheets(Range("Q3")).Select False

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    C'est normal.

    Tu as intérêt à travailler avec une variable qui pointe vers ta plage de cellules, car Range("q3") se réfère à la feuille active, qui est modifiée dans ton code lors du Select

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Cellule As Range
     
    For Each Cellule In Worksheets("mafeuille").Range("Q1:Q5")
        Worksheets(Cellule.Value).Select False
    Next Cellule
    en adaptant et en vérifiant ce qui doit l'être (existence de la feuille, cellule non vide, ...)
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre actif
    Inscrit en
    Mars 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 39
    Par défaut
    Merci pour cette réponse
    Ce code fonctionne très bien si la plage Q1:Q5 est compléte, mais génére une erreur 9 si une cellule de la plage est vide

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    ...en adaptant et en vérifiant ce qui doit l'être (existence de la feuille, cellule non vide, ...)
    Tu avais toi-même mis une condition dans ton message d'origine, j'ai donc jugé inutile de te la remettre.

    Tu dois donc adapter la plage Q1:Q5 en fonction de ton classeur, tester qu'une cellule est remplie et tester également que la feuille existe.

    Comme il n'existe pas de fonction intrinsèque du VBA Excel permettant de tester l'existence d'une feuille, je propose de passer par une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function FeuilleExiste(NomFeuille As String) As Boolean
      Dim sh As Object
      For Each sh In Sheets
        If sh.Name = NomFeuille Then
          FeuilleExiste = True
          Exit For
        End If
      Next sh
    End Function
    Le test via cette fonction te dispense évidemment du test de la cellule vide
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. [XL-2003] Sauvegarde feuille par macro avec le nom de la feuille
    Par steph70 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/03/2011, 09h01
  2. [XL-2003] Changement de feuille par Macro activée par un Bouton
    Par Gitano dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/08/2009, 10h57
  3. Ecrire dans le code d'une feuille par macro
    Par Tomuscz dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/07/2009, 11h19
  4. [Excel]Ouvrir feuille par macro.
    Par JML62400 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/02/2009, 18h11
  5. [Excel] Insertion de formule dans ma feuille par macro (erreur400)
    Par EvaristeGaloisBis dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/02/2007, 10h27

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