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 :

Parcourir des feuilles avec leur noms [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Par défaut Parcourir des feuilles avec leur noms
    Bonjour,

    j'ai des feuilles de calculs qui se nomment :

    DATA
    CHEMIN
    RESUME
    J'ai d'autres feuilles qui ne m'intéresse pas

    J'ai créé une fonction qui retourne une liste contenant les noms des feuilles ci dessus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Function DNRefSheetsListing()
     
        Dim listing As Object
     
        Set listing = CreateObject("System.Collections.ArrayList")
     
        listing.Add "DATA"
        listing.Add "CHEMIN"
        listing.Add "RESUME"
     
        Set DNRefSheetsListing = listing
     
    End Function
    Ensuite dans un autre code j'appel cette fonction pour balayer ces différentes feuilles à l'aide d'une boucle for :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
                For Each sheetName In DNRefSheetsListing
     
                    Debug.Print (sheetName)
                    Worksheets(sheetName).Columns("A:A").Select
     
                Next
    Mon soucis intervient lorsque sheetName prend le nom CHEMIN de la liste, j'ai le message d'erreur suivant :

    erreur d'excecution '1004':

    La méthode Select de la classe Range a échoué.
    Une idée ?

    Merci d'avance pour votre aide.

  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 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,
    Set listing = CreateObject("System.Collections.ArrayList")
    Personnellement, je n'ai jamais utilisé ce type d'instruction
    L'erreur provient du fait que tu tentes de sélectionner un objet Range (colonne) d'une feuille qui n'est pas active

    Traiter une plage de cellules en VBA ne nécessite pas de sélectionner celle-ci donc y a t'il une raison de sélectionner cette colonne ?
    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
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For Each sheetName In array("Data","Chemin","Resume")
         Debug.Print (sheetName) 
         Worksheets(sheetName).Columns("A:A").Select
    Next
    Ce code revient au même sans avoir besoin d'utiliser un complèment.
    Mais je rejoins Philippe sur la nécessité d'en savoir plus sur ce que tu souhaites faire.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  4. #4
    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 Qwaz,
    Attention : La boucle For Each Object In Colection .... Next ne peut pas utiliser une variable "classique" mais bien une variable objet et ne parcoure donc que les éléments d'une collection ou une plage de cellules
    et je rappelle que la sélection d'une plage de cellules (ici une colonne) ne peut se faire que si la feuille parente est active

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test()
      Dim sht As Worksheet
      For Each sht In Worksheets(Array("Data","Chemin","Resume"))
        With sht
         Debug.Print .Name
        .Activate
        .Columns("A:A").Select
        End With
      Next
      Set sht = Nothing
    End Sub
    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

  5. #5
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Objet ou variant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
    Dim sheetName As Variant
    For Each sheetName In Array("Feuil1", "Feuil2", "Feuil3")
         Debug.Print (sheetName)
         Worksheets(sheetName)....
    Next
    End Sub
    Pour le reste je suis d'accord j'aurais du mettre des ....

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  6. #6
    Membre éclairé Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Traiter une plage de cellules en VBA ne nécessite pas de sélectionner celle-ci donc y a t'il une raison de sélectionner cette colonne ?
    Alors pour être honnête je ne sais pas s'il y une réelle utilité à la sélectionner, mais comme j'avance à tâtons je fais des tests pour être sûr de ce que je fais.

    Mon but est de faire la recherche d'une référence préalablement donnée par l'utilisateur dans les feuilles DATA, CHEMIN et RESUME. Cette référence se trouve dans la colonne A:A de chaque feuille.

    Si la référence existe alors je dois créer un userForm qui va se remplir en fonction des colonnes qui sont remplies dans la sheet en question.

    Si la référence n'existe pas alors je dois créer un userForm pour que l'utilisateur renseigne les informations du document lié à la référence.

    J'espère avoir été clair.

  7. #7
    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,
    Donc, il n'y a aucune raison de faire la sélection ni de la feuille, ni des cellules.
    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

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

Discussions similaires

  1. [Batch] Liste des sous-dossiers avec leur nom et le nombre de fichier inclus
    Par sencha dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 05/02/2015, 10h27
  2. Creer des feuilles avec une liste de nom
    Par ericmise dans le forum Excel
    Réponses: 3
    Dernier message: 27/07/2012, 10h57
  3. crée des feuilles et leur affecter des noms
    Par huître dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/05/2011, 14h14
  4. [XL-2007] Incrementer des feuilles avec le nom des lignes d'une colonne + copie valeurs
    Par re dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/10/2010, 15h15
  5. Réponses: 2
    Dernier message: 18/02/2010, 10h30

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