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 :

Imbrication de WITH : Accès aux références [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut Imbrication de WITH : Accès aux références
    Bonjour,
    je me pose souvent la question suivante, sans jamais avoir trouvé une réponse qui me permettent d'implémentare correctement l'ibrication de clauses WITH :

    Comment dans une imbrication de clause with puis-je accéder à la référence d'une clause de niveau supérieure ?

    Exemple de code simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    With Sheets("test")
       .name = "MAfeuille"     'Code à déplacer dans le With Imbriqué
       With .Range("A1")
              .value = "Hello"
            '----------------> ici, comment insérer le code à déplacer
       end with
    end with
    ce code n'a pas de sens en tant que tel, mais la question de fond est la possibilité de référence au niveau supérieur.

    Merci pour votre réponse et bonne journée à tous.

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    With Sheets("test")
       .name = "MAfeuille"     'Code à déplacer dans le With Imbriqué
       With .Range("A1")
              .value = "Hello"
     
       end with
    'ICI
    end with
    après le end with du 2ème with

  3. #3
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Bonjour Mercatog et merci pour ta réponse.

    Ben non, justement, je le voudrais dedans car le code exemple est simple mais parfois la clause With est très longue et parfois dans une même ligne il faudrait référencer le With actif et son parent.

    Non la question est de savoir si c'est possible dans un With inbriqué d'accéder à la référence d'un niveau supérieur, et si oui comment ?

    le but est d'avoir une code clair propre et court.

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Je pense que c'est impossible
    voilà l'aide de with
    Vous pouvez imbriquer des instructions With en plaçant un bloc With à l'intérieur d'un autre. Toutefois, les membres des blocs With externes étant masqués dans les blocs With internes, vous devez fournir dans les blocs internes une référence complète pour tous les membres d'un objet figurant dans un bloc externe.

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    D'où l'intérêt de travailler avec des instances d'objets plutôt que des bloc With.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  6. #6
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Citation Envoyé par AlainTech Voir le message
    D'où l'intérêt de travailler avec des instances d'objets plutôt que des bloc With.
    Bonjour Alain,
    peux-tu me guider un peu dans la manipulation d'instance d'objets car je suis totalement inculte dans le domaine ?

    merci d'avance et excellente journée

    Mercatog, merci à toi aussi bien évidement par ta réponse précise et rapide.

  7. #7
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Citation Envoyé par Godzestla Voir le message
    je suis totalement inculte dans le domaine
    Pas du tout!

    Regarde cette réponse que tu as donnée:
    http://www.developpez.net/forums/d74...s/#post4304759
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub cache()
    Dim sh As Object
    For Each sh In Sheets
      If sh.Name <> "Sheet1" Then
         sh.Visible = xlVeryHidden
      End If
    Next
    End Sub
    sh est une instance d'objet Worksheet (si ce n'est que tu aurais pu le typer As Worksheet plutôt que As Object).
    On peut ainsi créer des instances pour tous les objets manipulables d'Excel ou de VBA:
    Workbook
    Worksheet
    Range
    Borders
    Chart
    Collection
    CommandBar
    Dialog
    ...
    pour n'en citer que quelques uns.

    Tu peux en avoir la liste complète en tapant F2 (Explorateur d'objets) dans l'éditeur VBA.

    Retiens juste une chose: pour assigner un objet à une variable (=créer une instance), il faut utiliser l'instruction Set.

    Si tu rencontres des problèmes pour la mise en oeuvre d'un cas concret, reviens-nous.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  8. #8
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Ahhh. C'est toujours agréable de découvrir qu'on a des connaissances dont on n'a soi-même pas conscience.

    Merci beaucoup. Je vais de ce pas approfondir cela.
    Excellente journée à toi.

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

Discussions similaires

  1. [Toutes versions] Accès aux références avec un mot de passe
    Par RobKris63 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 21/05/2014, 10h01
  2. Accès aux fichiers référencés dans Oracle
    Par snifira dans le forum Plateformes (Java EE, Jakarta EE, Spring) et Serveurs
    Réponses: 1
    Dernier message: 15/04/2013, 11h03
  3. [XL-2010] Accès aux références
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/12/2012, 15h45
  4. Réponses: 1
    Dernier message: 14/12/2007, 09h45
  5. [VB6] [BDD] Optimisation de l'accès aux données
    Par LadyArwen dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 30/01/2003, 13h27

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