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 :

[VBA-E]Création de contrôle dynamique, propriété illisible


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 101
    Par défaut [VBA-E]Création de contrôle dynamique, propriété illisible
    Bonsoir,

    à partir d'une macro située dans un classeur, je crée une UserForm dans le projet VBA d'un autre classeur. J'écris aussi dans le module de code de cette UserForm la procédure Initialize qui crée dynamiquement des contrôles sur cette UserForm.

    Quand la procédure Initialize de la Userform s'exécute, les contrôles sont créés. A un moment donné, il sont au nombre de 6 exactement.

    A ce moment, i vaut 6 et j'essaie de récupérer la hauteur du contrôle numéro 6 comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    h = Accueil.Controls.Item(i).Height   'h est un Single déclaré explicitement plus haut
    Le code plante à ce moment là avec l'erreur "Argument non valide".

    Quand j'ajoute un espion sur Accueil.Controls.Item(i).Height, le compilateur retourne le même message.

    Quand j'ajoute l'espion Accueil.Controls.Item(i) et que je vais voir la valeur de .Height manuellement, là elle s'affiche.

    Je ne comprends pas pourquoi. Quelqu'un aurait-il une idée?
    Merci.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Par défaut
    Et avec ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    h = Accueil.Controls.Item(i-1).Height
    J'ai essaye avec 1 seul control et il plante comme chez toi, mais Item(0) existe bien...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 101
    Par défaut
    Ah oui là ça marche mais je fais le difficile et ce n'est pas item(i-1).height qui m'intéresse mais bien item(i). Ce qui me rassure c'est que ça plante aussi chez qu'elqu'un d'autre. Merci quand même.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Par défaut
    Oui mais item(5) correspond bien a ton 6e objet...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 101
    Par défaut
    Non je ne crois pas: la méthode item démarre bien à 1 et pas à 0 donc si tu as 3 contrôle dans Me.Controls tu as item 1, item 2 et item 3.

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Par défaut
    C'est facile a verifier fait une boucle de 0 à 6 et vois quand ca plante...
    Quel type de control est-ce? Si ce sont des boutons, affiche le caption.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Accueil.Controls.Item(i).Caption
    ou le nom
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Accueil.Controls.Item(i).Name
    Chez moi ca va bien de 0 à i-1...

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 30/03/2016, 21h28
  2. Création de contrôles dynamiques dans une frame
    Par Cidou dans le forum VBA Project
    Réponses: 0
    Dernier message: 14/05/2008, 10h14
  3. [Excel] création de contrôles dynamique
    Par spileo dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 14/03/2007, 22h26
  4. [VB.NET] - Création de contrôle dynamique
    Par DeFCrew dans le forum Windows Forms
    Réponses: 6
    Dernier message: 08/09/2006, 16h18
  5. [VBA Excel] Créer plusieurs contrôles dynamiquement
    Par loacast dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 08/12/2005, 17h27

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