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 :

Quel est le meilleur moyen de référencer une feuille Worksheet


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 48
    Points : 41
    Points
    41
    Par défaut Quel est le meilleur moyen de référencer une feuille Worksheet
    Bonsoir,

    Voila jsute une question débile comme le dit le titre du post:

    Est-ce que Sheets("Feuil1") et Sheets(1) veulent dire la même chose?
    De même pour Worksheet("Feuil4") et Worksheets(4)?

    C'est juste à titre d'information perso.
    Si ça peut me permettre de clarifier mon code, on ne sait jamais.
    Merci

  2. #2
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut parce qu'il n'est plus question de débile
    Non ça ne veut pas dire la même chose.

    Les collections sont accessibles par un numéro d'index et parfois par leur nom.

    Si tu renomme ta feuille5 en MaFeuille7 tu pourra y accéder soit par son numéro d'index soit par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    worksheets("MaFeuille7")

  3. #3
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    bonjour AzelRoth le forum avantage d appeler une feuille par son numero en qu a ou tu la renomme ta macro marcheras toujours Sheets(1) resteras Sheets(1)
    par son nom elle marcheras plus

    ps salut alex pas rafraichi

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Ce que vous indique Laetitia est tout à fait valable à condition de ne pas modifier l'ordre des feuilles :

    -Vous avez une feuille "Détail1" en première position
    -une feuille "Détail2" en 2ème position
    -et ainsi de suite par exemple jusqu'à "Détail24"
    -vous créez une feuille "Récap" elle sera en 25ème position.

    Vous décidez de mettre la feuille "Récap" en 1ère position car elle est plus facile à visualiser et sélectionner manuellement.

    Le code :

    qui sélectionnait la feuille "Détail1" va maintenant sélectionner la feuille "Récap" alors que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Détail1").Select
    sera toujours valable.

    A toutes fins utiles.

  5. #5
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    re le forum oui!! j aurais du le preciser comme le dit jacques jacques_jean si tu changes la chronologie des feuilles il y a une influence
    bonne soiree a+

  6. #6
    Responsable
    Office & Excel


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Bonsoir

    J'ajouterai ceci.

    Le problème avec des macros qui utilisent le nom de la feuille, c'est que si l'utilisateur change le nom de la feuille, la macro plante...

    Il est donc judicieux d'utiliser le plus souvent possible le codename de la feuille, que tu peux personnaliser dans les propriétés VBA de la feuille. Tu es ainsi certain que ta macro fonctionne toujours, sauf suppression de la feuille, bien sûr...

  7. #7
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Bonjour,

    J'utilise aussi le codename notamment pour des suppressions de feuilles (attention il doit toujours en rester une).

    le codename de la feuille, que tu peux personnaliser dans les propriétés VBA de la feuille
    Merci beaucoup Pierre Fauconnier, je n'y avais jamais pensé et c'est génial de pouvoir changer le codename de la feuille, on s'assure de plus de maitrise avec un nom choisi au lieu de Feuilx !!!

    Un exemple de suppression de feuille :

    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 supprimer_tous_les_onglets()
    ' desactive
    Dim F1 As Worksheet
     
    For Each F1 In ThisWorkbook.Sheets
     
        If F1.CodeName <> "Master" And F1.CodeName <> "Anos" Then
     
                F1.Delete
     
        End If
    Next
    ' active
    End Sub

  8. #8
    Responsable
    Office & Excel


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Il peut même être attribué par code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    feuil1.[_codename] = "xxx"
    Pratique lorsque l'on crée une feuille par code et qu'on veut lui donner un codename...

    Attention! les crochets et le caractère _ sont indispensables, car sans cela, codename est en lecture seule... (Merci silkyRoad)

  9. #9
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Question complémentaire : on fait comment pour trouver dans un autre classeur une feuille par con codename?

    PGZ

  10. #10
    Responsable
    Office & Excel


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function getWorksheetByCodename(CodeName As String, Optional Classeur As Workbook) As Worksheet
        Dim Feuille As Worksheet
     
        If Classeur Is Nothing Then Set Classeur = ThisWorkbook
     
        For Each Feuille In Classeur.Worksheets
            If Feuille.CodeName = CodeName Then
                Set getWorksheetByCodename = Feuille
                Set Feuille = Nothing
                Exit For
            End If
        Next Feuille
    End Function

  11. #11
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Re,

    En fait on peut y aller direcement avec, par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set sh = wbk.Worksheets(wbk.VBProject.VBComponents(CodeName).Properties("Name").Value)
    PGZ

  12. #12
    Responsable
    Office & Excel


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Pour autant que la case Faire confiance au projet Visual Basic soit cochée dans Outils/Macro/Sécurité/éditeurs approuvés

    C'est pourquoi je préfère ma méthode

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/07/2011, 10h27
  2. Quel est le meilleur moyen d’accéder à une base de données ?
    Par aityahia dans le forum Bases de données
    Réponses: 57
    Dernier message: 05/07/2009, 00h09
  3. Générer des IHM : quel est le meilleur moyen/outil
    Par Giovanny Temgoua dans le forum Interfaces Graphiques en Java
    Réponses: 5
    Dernier message: 02/08/2007, 21h57
  4. Quel est le meilleur moyen d'utiliser uns base MySQL
    Par netah25 dans le forum C++Builder
    Réponses: 8
    Dernier message: 28/12/2005, 08h46
  5. [MySQL] Quel est le meilleur moyen de stocker une date/heure ?
    Par MiJack dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 31/07/2004, 12h19

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