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 :

Chemin d'accès par variables


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2018
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Chemin d'accès par variables
    Bonjour,

    J'ai une interrogation dont la réponse sera très probablement instantanée pour la plupart d'entre vous, mais j'ai du mal à trouver une réponse claire alors je préfère demander la réponse auprès de votre communauté, et vous remercie par avance.

    Dans le code très simplifié ci-dessous, je nomme d'une manière simple le classeur en cours et l'onglet en cours dans 2 variables, et je cherche ensuite à écrire en une seule ligne dans une cellule de l'onglet et du classeur précédemment nommés, en utilisant les variables alors créées.

    Or, le code bloque au niveau de l'utilisation de la variable WB correspondant au classeur.
    Si je sors "WB." et laisse le reste, ma ligne fonctionne correctement (la variable WS et ma syntaxe sont alors correctes).

    Pouvez-vous m'éclairer sur l'erreur générée par mon code ?

    je vous remercie par avance :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test()
     
    Dim WB As Workbook
    Dim WS As Worksheet
     
    Set WB = ThisWorkbook
    Set WS = ActiveSheet
     
    WB.WS.Cells(1, 1) = 1 + 1
     
     
    End Sub

  2. #2
    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,j

    Comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub test()
     
        Dim WB As Workbook
        Dim WS As Worksheet
     
        Set WB = ThisWorkbook
        Set WS = WB.ActiveSheet
     
        WS.Cells(1, 1).Value = 1 + 1
     
    End Sub

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2018
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Oui, effectivement, cela fonctionne, mais que faire si je veux conserver la notion de nom de classeur dans mon code, par exemple si je manipule plusieurs onglets sur plusieurs classeurs dans mon programme?

    C'est pour cela que j'essaie de nommer mes différents classeurs en variable, et que je cherche à conserver une "adresse" cohérente contenant et le classeur, et l'onglet, pour garder une certaine simplicité.

    En fait je ne comprends pas pourquoi ma variable Workbook ainsi définie ne stocke pas une "adresse" cohérente pour gérer cela, alors que ma variable Worksheet le gère très bien.

    Merci à tous :-)

  4. #4
    Membre émérite
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 756
    Points : 2 990
    Points
    2 990
    Par défaut
    Bonsoir

    Pour simplifier : quand tu écris WB. c'est comme si tu avais écrit ThisWorkbook., c'est comme si c'était un alias.

    WB.Activesheet, c'est donc équivalent à ThisWorkbook.ActiveSheet.

    Quand tu écris WB.WS.xxxx, tu tentes donc d'accéder à la propriété nommée WS de ThisWorkbook alors que cette propriété n'existe pas. C'est ThisWorkbook.ActiveSheet qui existe. Tu peux donc faire WB.ActiveSheet mais pas WB.WS car "tu utiliserais un alias dans un alias" (j'essaie d'utiliser un langage simple ici).

    WB.WS.xxx ne fonctionne donc pas.

    Pour info : puisque tu as déjà créé une variable WS, il n'est plus utile d'utiliser WB dans ton exemple. WS.Cells(1, 1) est déjà assez explicite.

    Bonne soirée.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2018
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup, très clair.

    bonne soirée :-)

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

Discussions similaires

  1. [Débutant] Chemin d'accès en variable dans un streamreader ?
    Par alkaz dans le forum C#
    Réponses: 14
    Dernier message: 11/06/2015, 15h44
  2. [Débutant] Chemin d'accès par ApplicationStartupPath
    Par Mdevaux76 dans le forum VB.NET
    Réponses: 3
    Dernier message: 27/02/2015, 10h54
  3. [XL-2007] Chemin d'accés par cellules
    Par Kael88 dans le forum Excel
    Réponses: 2
    Dernier message: 13/05/2014, 16h29
  4. [Formulaire][VBA] Bloquer l'accès par mot de passe
    Par sumtech dans le forum Sécurité
    Réponses: 2
    Dernier message: 17/04/2007, 16h25

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