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-USERFORM] indice d'objet variable


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 47
    Points : 35
    Points
    35
    Par défaut [VBA-USERFORM] indice d'objet variable
    Bonjour,

    J’ai un petit souci en VBA

    Je suis en train de créer un formulaire, via un userform.


    Ce formulaire, devra copier des « noms de contexte », contenu dans un classeur (déjà ouvert au moment ou l’utilisateur sera invité à remplir le formulaire). Pour renommé mes « intitulés » des zones de texte.

    L’utilisateur n’aura qu’à mettre la valeur numérique de chaque contexte en face de son « nom »


    Mes intitulés ont pour « (name) » un nom de la forme :

    - ContX ( avec X compris entre 1 et 48)

    J’aimerai créer une boucle for, pour changer le « caption » des intitulés

    Concrètement j’aimerai utiliser la formule ci-dessous et pouvoir incrémenter l’indice de « Cont »

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cont1.Caption = Workbooks("XXX.xls").Sheets(1).Range("K4" & i).Value

    peut-être qu'un tableau serai la solution, mais d'après quelque recherche je suis pas sur que cela soit possible


    Merci pour votre aide

  2. #2
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    bonjour shinji7800 le forum pas bien clair explique un peu tu parles d un userform!!
    SALUTATIONS

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 47
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par laetitia Voir le message
    bonjour shinji7800 le forum pas bien clair explique un peu tu parles d un userform!!

    merci pour cette réponse rapide , par contre je suis navré je n'ai pas très bien saisi le sens de ton message :/

    à ton sens j'aurai du préciser que je parlais d'un "USERFORM" ?

    -> si c'est le cas, je pensais que le titre de mon topic était suffisant

    -> sinon, pardonne moi et voudrais tu me rééxpliquer ?

    cordialement

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bonjour,

    intéresse-toi à la collection Controls (si tu travailles sur un UserForm) ou Shapes (si tes contrôles sont sur ta feuille Excel).

    Le propre d'une collection est de pouvoir se référer à l'un de ses articles en le désignnt soit par son index dans la collection, soit par son nom (et cest celà qui t'intéresse).

    Ainsi, par exemple, pour une collection ma_collection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ma_collection("mon_article")
    se réfère à l'article nommé "mon_article"

    Dès lors, une simple concaténation avec un chiffre te permet d'utiliser ta boucle sur les différents articles mon_article1, mon_article2, etc...

    J'ai préféré te mettre sur les rails de cette manière, car elle concerne toutes les collections...
    A toi de te servir de celà (facile).

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 47
    Points : 35
    Points
    35
    Par défaut
    Bonjour ucfoutu,

    cela me semble pertinant, pas sûr d'avoir tout saisi , mais j'étudie cela et je vous tiens au courant !

    merci pour ton intervention !

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 47
    Points : 35
    Points
    35
    Par défaut
    Si j'ai bien compris,

    Ma_collection correspondrai a la collection Label

    donc la syntaxe serai et dans ma boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i=1 to 48
     
    Cont & i.Caption = Workbooks("XXX.xls").Sheets(1).Range("K4" & i).Value
    cependant à la compilation, sub ou fonction non définie

  7. #7
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Tu m'as mal lu ou lu en diagonale !
    Si tu travailles sur un UserForm, ta collection s'appelle Controls
    et
    se réfèrera au Label Label2 de ton userForm si i = 2
    si tu travaille sur ta feuille, ta collection s'appele Shapes
    et
    se réfèrera au Label Label9 de ta feuille si i = 9

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 47
    Points : 35
    Points
    35
    Par défaut
    excuse moi, j'ai lu plusieurs fois crois moi

    je suis débutant, et j'ai pensé que ce que tu appelais "ma_collection" c'était en faite l'objet en question

    merci pour ton aide !

    j'essaye cela au travail demain en arrivant et confirme le bon fonctionnement !

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 47
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par ucfoutu Voir le message
    Tu m'as mal lu ou lu en diagonale !
    Si tu travailles sur un UserForm, ta collection s'appelle Controls
    et
    se réfèrera au Label Label2 de ton userForm si i = 2
    si tu travaille sur ta feuille, ta collection s'appele Shapes
    et
    se réfèrera au Label Label9 de ta feuille si i = 9

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Controls("Cont" & i) = Workbooks("XXX.xls").Sheets(1).Range("K4" & i).Value
    est effectivement la réponse a mon problème, merci énormément pour ton intervention !

    cordialement

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

Discussions similaires

  1. excel vba userform.show : l'indice n'appartient pas à la sélection
    Par Didpa dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/12/2014, 13h59
  2. Persistance Objet - Variable VBA
    Par stagiaireNul dans le forum VBA Project
    Réponses: 1
    Dernier message: 08/02/2014, 14h28
  3. Persistance Objet - Variable VBA
    Par stagiaireNul dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/01/2014, 18h27
  4. [VBA-E]Userform et transfert de variable
    Par Yanos dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 27/03/2006, 09h16
  5. [VBA ActivX] Créer un objet Name [OWC10.Spreadsheet.10]
    Par FRED.G dans le forum VBA Access
    Réponses: 12
    Dernier message: 06/07/2004, 16h29

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