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 :

Modification d'une feuille par codename variable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 57
    Par défaut Modification d'une feuille par codename variable
    Bonjour,

    Je souhaiterais travailler sur les feuilles par leur codename sous forme de string variable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim i As Integer
    Dim codeNameFeuille As String
    For i = 1 To 2
      codeNameFeuille = "Feuil" & i
      codeNameFeuille.Range("A1") = "OK"
    Next i
    Bien sur cela ne marche pas...

    J'ai également essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim i As Integer
    Dim codeNameFeuille As Worksheet
    For i = 1 To 2
      codeNameFeuille = "Feuil" & i
      codeNameFeuille.Range("A1") = "OK"
    Next i
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim i As Integer
    Dim codeNameFeuille As Worksheet
    For i = 1 To 2
      codeNameFeuille = Evaluate("Feuil" & i)
      codeNameFeuille.Range("A1") = "OK"
    Next i
    Auriez-vous une solution ou faut-il faire une recherche sur tous les onglets pour avoir le count ou le name ?

    Merci

    Olivier.

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par P4board Voir le message
    ...
    Auriez-vous une solution ou faut-il faire une recherche sur tous les onglets pour avoir le count ou le name ?
    ....
    pourrait-tu ré-exprimer ta question ? c'est quoi "le count" ou "le name" ? tu dois agir sur quelles feuilles (toutes les feuilles du classeur..?) ?

  3. #3
    Membre éclairé Avatar de Orhleil
    Homme Profil pro
    Intégrateur fonctionnel
    Inscrit en
    Mai 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Intégrateur fonctionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 81
    Par défaut
    Salut à toi !
    Les feuilles ont en fait 2 noms, tu peux les voir dans les propriétés en tant que "(name)" et "name". Le second est le nom qui apparait pour l'utilisateur lambda. Le premier représente quant à lui le nom de l'objet Worksheet auquel cette feuille correspond.
    Donc pour accéder à la feuille tu as 2 solutions :
    - Truc.Range("A1"), où Truc est le "(name)"
    - Worksheets.("Machin").Range("A1"), où Machin est le "name"
    Donc dans ton cas c'est la 2è solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim i As Integer
    Dim codeNameFeuille As String
    For i = 1 To 2
      codeNameFeuille = "Feuil" & i
      Worksheets(codeNameFeuille).Range("A1") = "OK"
    Next i
    En espérant t'avoir aidé

    EDIT : d'ailleurs au cas où, pour que l'utilisateur puisse changer les noms des feuilles si ça lui chante, je te conseillerais plutôt de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each Feuille In Worksheets
        Feuille.Range("A1").Formula = "OK"
    Next Feuille
    EDIT 2 : enfin ma remarque juste au dessus est valable si tu veux parcourir toutes les Worksheets, ce qui ne semble pas être le cas ici

  4. #4
    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

  5. #5
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 57
    Par défaut
    Merci pour ces réponses, mais c'est bien le codeName que je souhaite utiliser et nom le name...

    Par le name :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Worksheets("Feuil" & i").range("A1")="OK"
    fonctionne, c'est ce que je faisais jusqu'à présent mais ce n'est pas ce que je voulais faire pour améliorer mon code.

    Par le codeName :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Feuil1.Range("A1") = "OK"
    Feuil2.Range("A1") = "OK"
    fonctionne aussi mais je voudrais transformer le nom en variable

    Par le count :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      Worksheets(1).Range("A1") = "OK"
      Worksheets(2).Range("A1") = "OK"
    Cette exemple est simple mais mon appli un peu plus complexe.

    Peut-être une autre solution ?

  6. #6
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    désolé je ne comprends toujours pas ton histoire par "le count" tu ne pourrai pas traduire en français ?

    ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Worksheets(1).Range("A1") = "OK"
      Worksheets(2).Range("A1") = "OK"
    ne te convient'il pas ?

  7. #7
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 57
    Par défaut
    Désolé pour le langage...

    le count correspond à l'ordre des feuilles.

    Le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Worksheets(1).Range("A1") = "OK"
      Worksheets(2).Range("A1") = "OK"
    me conviendrais si j'avais le fameux numéro ; je n'ai que le nom du codeName (et pas du name).

    Pour s'en sortir il faudrait faire une boucle sur toutes les feuilles et vérifier que le codeName correspond, j'aurais alors son numéro (count), mais ce n'est pas vraiment très beau...

    ex avec le code suivant qui devrait fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        For i = 1 To Worksheets.Count
          If (Worksheets(i).CodeName = codeNameFeuille ) Then
            Worksheets(i).range("A1").value="OK"
            Exit For
          End If
        Next i

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

Discussions similaires

  1. [XL-2010] Créer une feuille par variable
    Par Belphegor59 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 02/05/2013, 18h41
  2. [XL-2003] Formule faisant référence à une feuille par codeName
    Par delorvallois dans le forum Excel
    Réponses: 2
    Dernier message: 08/03/2010, 09h11
  3. [XL-2000] Appeler une feuille par son CodeName
    Par JOHN14 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/10/2009, 17h42
  4. [VBA Excel] Remettre toute une feuille par défaut
    Par loacast dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/12/2005, 16h56
  5. [JCombobox] modif d'une jcombobox par rapport à une autre
    Par The Wretched dans le forum Composants
    Réponses: 2
    Dernier message: 21/03/2005, 10h35

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