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 :

utiliser les noms de feuilles internes


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    Divers
    Inscrit en
    Février 2017
    Messages
    295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Divers

    Informations forums :
    Inscription : Février 2017
    Messages : 295
    Par défaut utiliser les noms de feuilles internes
    Bonjour,

    Ma question est surement bête pour les pros de ce forum

    je voudrais utiliser les noms internes des feuilles dans le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub hidesheets()
     
        Dim ws As Worksheet
     
        'Application.ScreenUpdating = False
        For Each ws In Sheets
        If Not ws.Name = "WELCOME" Then ws.Visible = False
        Next ws
     
    End Sub
    Merci d'avance.

  2. #2
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 138
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 138
    Par défaut
    Bonjour,
    Citation Envoyé par rossemma Voir le message
    je voudrais utiliser les noms internes des feuilles
    C'est quoi pour toi un nom interne ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Divers
    Inscrit en
    Février 2017
    Messages
    295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Divers

    Informations forums :
    Inscription : Février 2017
    Messages : 295
    Par défaut
    pour moi, c'est feuil1, feuil2

    mais j'ai remplacé par sh_nom1, sh_nom2

    ex :
    nom qui apparaît sur l'onglet de la feuille = WELCOME
    nom interne de la feuille = sh_welcome

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Parcourir de préférence la collection WorkSheets.

  5. #5
    Membre éclairé
    Homme Profil pro
    Divers
    Inscrit en
    Février 2017
    Messages
    295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Divers

    Informations forums :
    Inscription : Février 2017
    Messages : 295
    Par défaut
    code modifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim ws As Worksheet
        
        Application.ScreenUpdating = False
        For Each ws In Worksheets
        If Not ws.Name = sh_welcome Then ws.Visible = False
        Next ws
    mais cela bloque, il dit propriété non gérée par cet objet.

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Name est de type String et donc sh_welcome est à mettre entre guillemets

    IMPORTANT : faire gaffe à bien avoir au moins une feuille ainsi nommée très exactement (sinon -->> blocage)

    J'espère que tu ne confonds pas nommer une feuille avec attribuer une feuille à une variable objet (par instruction Set) . Ce n'est pas la même chose du tout.

    EDIT : je vais partir. Alors, juste pour le cas où tu aurais affecté et non nommé, voilà comment faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim ws As Worksheet, F As Worksheet
      Set F = Worksheets("toto_par_esemple") ' là, on ne nomme pas, mais on attribue une feuille à une variable
        Application.ScreenUpdating = False
        For Each ws In Worksheets
          If Not ws Is F Then ws.Visible = False
        Next ws

  7. #7
    Membre éclairé
    Homme Profil pro
    Divers
    Inscrit en
    Février 2017
    Messages
    295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Divers

    Informations forums :
    Inscription : Février 2017
    Messages : 295
    Par défaut
    merci

    avec ton code, il répond "erreur de compilation, next sans for"

  8. #8
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Impossible. Tu as probablement mal copié/collé !
    Montre ton code

  9. #9
    Membre éclairé
    Homme Profil pro
    Divers
    Inscrit en
    Février 2017
    Messages
    295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Divers

    Informations forums :
    Inscription : Février 2017
    Messages : 295
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub hidesheets()
     
        Dim ws As Worksheet, F As Worksheet
        Set F = Worksheets("sh_welcome") ' là, on ne nomme pas, mais on attribue une feuille à une variable
        Application.ScreenUpdating = False
        For Each ws In Worksheets
          If Not ws Is F Then ws.Visible = False
        Next ws
     
    End Sub
    sh_welcome est le nom interne
    probleme next résolu mais il dit que sh_welcome n'appartient pas à la sélection

    de plus, puis je mettre plusieurs nom de feuille dans F ?

  10. #10
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    probleme next résolu mais il dit que sh_welcome n'appartient pas à la sélection

    de plus, puis je mettre plusieurs nom de feuille dans F ?
    Houla ! Tu n'as donc pas de feuille ainsi TRES EXACTEMENT nommée
    Il n'est bien évidemment pas possible d'affecter plusieurs feuilles à une variable

    J'ai l'impression de plus en plus nette que tu mélanges tout ...
    Montre-nous voir TOUTES les lignes de ton code où apparaît sh_welcome
    (j'espère que tu n'as pas "nommé" ici et "affecté" là ... On va bien voir).

  11. #11
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 138
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 138
    Par défaut
    Bonjour,
    Citation Envoyé par rossemma Voir le message
    sh_welcome est le nom interne
    Si ce que tu appelles "nom interne" est le codename, ceci devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub hidesheets()
     
        Dim ws As Worksheet
        Application.ScreenUpdating = False
        For Each ws In Worksheets
          If Not ws Is sh_welcome Then ws.Visible = False
        Next ws 
    End Sub

  12. #12
    Membre éclairé
    Homme Profil pro
    Divers
    Inscrit en
    Février 2017
    Messages
    295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Divers

    Informations forums :
    Inscription : Février 2017
    Messages : 295
    Par défaut
    Pour résumé, je cherche à masquer lors de la fermeture du classeur toutes les feuilles sauf celles qui se nomment :

    "sh_welcome"
    "sh_11XX"
    "sh_12XX"
    "sh_ab"
    "sh_modif"
    "sh_tabvoorlien"

    Ces noms sont les noms internes et pas ceux des onglets (au moins pas de problèmes si pas hasard on change le nom de l'onglet)

  13. #13
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, je pense que tu parles de ce que l'on appelle le CodeName, dans ce cas voir ici

    © Pierre Fauconnier
    Images attachées Images attachées  

  14. #14
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 138
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 138
    Par défaut
    Bonjour,
    Citation Envoyé par rossemma Voir le message
    Pour résumé, je cherche à masquer lors de la fermeture du classeur toutes les feuilles sauf celles qui se nomment
    Dans ce cas tu peux procéder ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub hidesheets()
        Dim ws As Worksheet
        Application.ScreenUpdating = False
        For Each ws In Worksheets
          If InStr("sh_welcome,sh_11XX,sh_12XX,sh_ab,sh_modif,sh_tabvoorlien", ws.CodeName) = 0 Then ws.Visible = False
        Next ws
        Application.ScreenUpdating = True
    End Sub

  15. #15
    Membre éclairé
    Homme Profil pro
    Divers
    Inscrit en
    Février 2017
    Messages
    295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Divers

    Informations forums :
    Inscription : Février 2017
    Messages : 295
    Par défaut
    exact

    un grand merci
    cela fonctionne

  16. #16
    Membre averti Avatar de Bric-a-brac
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Mars 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Mars 2017
    Messages : 14
    Par défaut
    Bonjour,

    Image extraite ici => http://silkyroad.developpez.com/VBA/FeuilleDeCalcul/
    Nom : CodeName.jpg
Affichages : 544
Taille : 19,4 Ko
    ActiveSheet.Name => Nom de l'onglet
    ActiveSheet.CodeName => Nom interne de la feuille

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Renomme_les_onglets_avec_le_nom_interne()
     
    Dim i As Integer
     
    For i = 1 To Sheets.Count
        Sheets(i).Name = Sheets(i).CodeName
    Next i
     
    End Sub
    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 Renomme_nom_interne_avec_le_nom_des_onglets()
     
    Dim i As Integer
    Dim sh As Worksheet
    Dim test As String
     
    For i = 1 To Sheets.Count
        Set sh = Worksheets(Sheets(i).Name)
        On Error Resume Next
        sh.[_CodeName] = Sheets(i).Name
    Next i
    Set sh = Nothing
     
    End Sub
    Attention, le CodeName ne doit pas avoir d'espace, de trait-union, etc... et doit commencer par une lettre
    Donc pour faire simple => Lettres, Underscores, Chiffres

    Cordialement

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

Discussions similaires

  1. [XL-2003] Combobox en utilisant les noms des feuilles
    Par Nikes dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/06/2009, 22h57
  2. Lire les noms des feuilles d'un fichier
    Par funkykid dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 27/05/2008, 13h56
  3. Réponses: 3
    Dernier message: 03/11/2007, 18h44
  4. Utiliser les getters & setters en interne ?
    Par Sylver--- dans le forum Langage
    Réponses: 8
    Dernier message: 05/07/2007, 17h00
  5. Réponses: 28
    Dernier message: 09/01/2007, 16h30

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