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 :

Set variable=objet. comment faire pour que objet soit remplacé par une variable contenant le nom de l'objet? [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2013
    Messages : 46
    Par défaut Set variable=objet. comment faire pour que objet soit remplacé par une variable contenant le nom de l'objet?
    Bonjour,

    je souhaite utiliser la fonction "Set variable = objet" en paramètrant le mot "objet". Je m'explique: je souhaite que l'objet soit variable en fonction de certains paramètres...

    Apparemment, on ne peut mettre derrière le "=" que un nom d'objet existant et non une variable où se trouve le nom de l'objet...

    Cette possibilité de remplacer le nom de l'objet par une variable contenant son nom ou une autre méthode me serait bien utile...

    Quelqu'un peut il m'aider?

    merci d'avance

  2. #2
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonsoir Bernard

    Citation Envoyé par bernard_metz Voir le message
    Apparemment, on ne peut mettre derrière le "=" que un nom d'objet existant et non une variable où se trouve le nom de l'objet...
    Cette limitation n'existe pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub tt()
    Dim a As Object
    Dim b As Object
     
    Set a = Range("A1:B2")
     
    Set b = a
     
    Debug.Print b.Address
     
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2013
    Messages : 46
    Par défaut
    Merci de la réponse!

    Voilà le code que j'ai essayé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim A As objet
    Dim B As objet
     
     
    Private Sub essai()
        Set A = Sheets("essai").Range("H10")
        Set B = A
        B.Caption = "ok"
    End Sub
    J'obtien le message : Erreur de compilation: Type défini par l'utilisateur non défini.

    L'objectif étant ici de pouvoir utiliser une procédure unique pour un ensemble de contrôles bien sure...

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour, bonjour,

    message tout à fait normal !

    Quelle ligne donc déclenche l'erreur ? Quelle propriété est en cause ?
    As-tu au moins vérifié qu'elle existait sur l'objet rattaché ? (Évidemment non …)
    L'objet est-il un contrôle ? (Ben non c'est une cellule ‼)
    Sans compter la mauvaise orthographe du type objet …

  5. #5
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Citation Envoyé par bernard_metz Voir le message
    J'obtien le message : Erreur de compilation: Type défini par l'utilisateur non défini.
    Tu as écrit Objet au lieu de Object

    Du coup tu essaies de déclarer un type inconnu de VBA.

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2013
    Messages : 46
    Par défaut
    re bonjour,

    merci pour les réponses!... ca progresse mais apparemment il doit me manquer encore quelque chose...

    j'ai corrigé objet par object oups...

    j'ai vérifier le code ci-dessous dans un nouveau classeur pour enlever tous problème pouvant venir du code actuel et j'ai créé le bouton "B" sur un formulaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Userform_activate()
     
        Dim a As Object
        Dim B As Object
     
        Set a = Sheets("essai").Range("A1")  ' la cellule comporte le nom du formulaire + le nom du bonton "formulaire.B"
        Set B = a
     
        Debug.Print B.Address
     
        B.Caption = "ok"
     
    End Sub
    Cette fois-ci j'ai le message d'erreur: erreur d'exécution '438' - propriété ou méthode non gérée par cet objet

    ... et le surlignement jaune est sur --> B.Caption = "ok"

  7. #7
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Comme déjà indiqué, c'est normal car l'objet est une cellule et non pas un contrôle ‼

    En activant l'Enregistreur de macros, sélectionner le contrôle puis modifier ses propriétés, code livré sur un plateau !
    Suffit ensuite de remplacer dans le code généré le nom du contrôle par la référence de la cellule …

  8. #8
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Pour avoir une introduction de base à la programmation VBA pour Excel

    http://www.agroparistech.fr/IMG/pdf/...A2012-2013.pdf


    Pour aller plus loin:

    http://silkyroad.developpez.com/VBA/DebuterMacros/

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 16/08/2013, 21h03
  2. [XL-2007] comment faire pour que ce soit une division.
    Par Danaxia dans le forum Excel
    Réponses: 4
    Dernier message: 08/05/2011, 18h27
  3. Réponses: 1
    Dernier message: 06/09/2006, 18h11
  4. comment faire pour que plusieurs user utilise mem macro?
    Par megapacman dans le forum Access
    Réponses: 4
    Dernier message: 27/03/2006, 16h55
  5. CSS: comment faire pour que mes coins soit arrondi
    Par pierrot10 dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 16/02/2006, 12h08

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