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 N° de Feuille plutôt que leurs noms d'onglet [XL-365]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    ouvrier
    Inscrit en
    Février 2017
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : ouvrier
    Secteur : Alimentation

    Informations forums :
    Inscription : Février 2017
    Messages : 28
    Points : 25
    Points
    25
    Par défaut Utiliser les N° de Feuille plutôt que leurs noms d'onglet
    Bonsoir,
    Je cherche une syntaxe ou code pour remplace le nom des onglets par leur n° de feuille.
    En vue d’ajouté une dizaine de feuille à masquer l'or de la demande d'impression
    Je ne trouve pas la bonne syntaxe.
    Merci à vous pour votre aide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub UserForm_Initialize()
    Dim S As Worksheet
    sh = Array("Index", "Paramètre") ' Index par Feuil9, Paramètre par Feuil8 etc…
    ListBox1.MultiSelect = fmMultiSelectExtended
    For Each S In Worksheets
    t = Application.Match(S.Name, sh, 0)
        If IsError(t) Then
            ListBox1.AddItem S.Name
        End If
    Next
    TextBox1 = ""
    End Sub

  2. #2
    Membre chevronné
    Inscrit en
    Septembre 2007
    Messages
    1 132
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 132
    Points : 1 803
    Points
    1 803
    Par défaut
    Bonsoir,
    Citation Envoyé par deus-ex-inferno Voir le message
    Je ne trouve pas la bonne syntaxe.
    Peut-être en plus simple ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub UserForm_Initialize()
    Dim S As Worksheet
    sh = "Index,Paramètre" '  Index par Feuil9, Paramètre par Feuil8 etc…
    ListBox1.MultiSelect = fmMultiSelectExtended
    For Each S In Worksheets
        If InStr(sh, S.Name) = 0 Then
            ListBox1.AddItem S.Name
        End If
    Next
    TextBox1 = ""
    End Sub

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    ouvrier
    Inscrit en
    Février 2017
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : ouvrier
    Secteur : Alimentation

    Informations forums :
    Inscription : Février 2017
    Messages : 28
    Points : 25
    Points
    25
    Par défaut
    Bonjour,
    Merci anasecu .
    Le code simplifié fonctionne très bien mais ce n’est pas ce que je cherche à faire.
    Le nom des onglets comporte plus d’une dizaine de caractères chacun.
    Je souhaiterai me simplifier la tâche en mettant leur N° de feuille plutôt que de taper leurs noms.
    (Il y a plusieurs restaurants sur le site et plusieurs pôles par restaurant)
    Et donc un classeur par pôle.
    Cette syntaxe ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub UserForm_Initialize()
    Dim S As Worksheet
    sh = "Feuil9,Feuil8" 
    ListBox1.MultiSelect = fmMultiSelectExtended
    For Each S In Worksheets
        If InStr(sh, S.Name) = 0 Then
            ListBox1.AddItem S.Name
        End If
    Next
    TextBox1 = ""
    End Sub
    Images attachées Images attachées  

  4. #4
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    La demande manque de précisions donc voici une piste qui donne le numéro d'index (position de la feuille dans Excel de gauche à droite), le nom du module de la feuille et son nom dans Excel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub UserForm_Initialize()
     
        Dim S As Worksheet
     
        For Each S In Worksheets
     
            ListBox1.AddItem S.Index & " -" & S.CodeName & "- (" & S.Name & ")"
     
        Next S
     
    End Sub

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    ouvrier
    Inscrit en
    Février 2017
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : ouvrier
    Secteur : Alimentation

    Informations forums :
    Inscription : Février 2017
    Messages : 28
    Points : 25
    Points
    25
    Par défaut
    Re,
    Ce que je cherche à faire c’est de remplacer les noms d’onglet par les numéros d’onglet.
    Exemple :

    Remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sh = Array("Index", "Paramètre")
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    " la syntaxe " ("Feuil9", "Feuil8", ect..)
    Les feuilles en question ne doivent pas s’afficher dans la ListBox.

    Merci à vous pour votre aide.

  6. #6
    Membre chevronné
    Inscrit en
    Septembre 2007
    Messages
    1 132
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 132
    Points : 1 803
    Points
    1 803
    Par défaut
    Bonsoir,
    Citation Envoyé par deus-ex-inferno Voir le message
    Ce que je cherche à faire c’est de remplacer les noms d’onglet par les numéros d’onglet.
    Je pense que ton vocabulaire n'est pas adéquat car si tu veux changer "Index" par "Feuil9"

    ce n’est pas remplacer les noms d’onglet par les numéros d’onglet 'index' mais par leur 'codename' qui n'est pas modifiable en excel mais avec VBE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub UserForm_Initialize()
    Dim S As Worksheet
    sh = "Feuil9,Feuil8" '  Index par Feuil9, Paramètre par Feuil8 etc…
    ListBox1.MultiSelect = fmMultiSelectExtended
    For Each S In Worksheets
        If InStr(sh, S.CodeName) = 0 Then
            ListBox1.AddItem S.Name
        End If
    Next
    TextBox1 = ""
    End Sub

  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
    12 773
    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 : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour Anasecu,
    ce n’est pas remplacer les noms d’onglet par les numéros d’onglet 'index' mais par leur 'codename' qui n'est pas modifiable en excel mais avec VBE
    Il existe une autre solution pour modifier le CodeName d'une feuille

    Exemple 1 - En utilisant le nom de la feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub T_1()
     Dim sht As Worksheet
     Set sht = Worksheets("feuil1")
     sht.[_CodeName] = "MyNewCodeName"
    End Sub
    Exemple 2 - En utilisant le CodeName de la feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub T_2()
     Feuil1.[_CodeName] = "MyNewCodeName"
    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

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    ouvrier
    Inscrit en
    Février 2017
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : ouvrier
    Secteur : Alimentation

    Informations forums :
    Inscription : Février 2017
    Messages : 28
    Points : 25
    Points
    25
    Par défaut
    Re,

    Merci à vous tous.
    Désolé pour mon vocabulaire .

    anasecu,

    Cela fonctionne nickel.
    Merci beaucoup.

  9. #9
    Membre chevronné
    Inscrit en
    Septembre 2007
    Messages
    1 132
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 132
    Points : 1 803
    Points
    1 803
    Par défaut
    Bonsoir Philippe Tulliez
    Citation Envoyé par Philippe Tulliez Voir le message
    Il existe une autre solution pour modifier le CodeName d'une feuille
    Totalement d'accord avec toi, j'avais simplifié un peu effectivement pour dire que cette propriété n'était accessible que par le développement.

    Merci d'avoir été plus explicite et plus complet.
    L'exemple 2 est à employer si l'on ne veux pas se planter du fait de changement de dénomination de la feuille. ;-)

    Citation Envoyé par deus-ex-inferno Voir le message
    Désolé pour mon vocabulaire .,.
    Bonsoir deus-ex-inferno

    Ce n'est pas grave l'on a fini par comprendre ce que tu voulais alors bonne continuation.

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

Discussions similaires

  1. [Python 3.X] Sauvegarder les objets eux-mêmes plutôt que la valeur de leurs attributs ?
    Par scarou dans le forum Général Python
    Réponses: 7
    Dernier message: 06/05/2018, 13h14
  2. Réponses: 5
    Dernier message: 22/06/2009, 23h10
  3. Réponses: 4
    Dernier message: 26/09/2008, 09h06
  4. [VBA]Utiliser les fonctions Excel avec Access
    Par PsykotropyK dans le forum VBA Access
    Réponses: 8
    Dernier message: 18/04/2007, 13h58
  5. [VBA]Utiliser les objet disponible d'un programme en VB
    Par seblefebvre dans le forum Général VBA
    Réponses: 13
    Dernier message: 01/02/2006, 10h34

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