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

VBA Word Discussion :

Combobox associé avec 2 textbox


Sujet :

VBA Word

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 121
    Points : 41
    Points
    41
    Par défaut Combobox associé avec 2 textbox
    Bonjour à tous.

    J'ai besoin pour une macro UserForm sur Word d'avoir une liste dans une combobox, ça c'est bon, mais je souhaite lui associer 2 textbox qui s'agrémenteront seules selon ce qui sera choisi dans la combobox.

    Voir la pièce jointe
    Si je choisis bidule, les n° de tel et de fax vont s'agrémenter seuls ( selon des paramètres définis au préalable )

    Est-ce que cela est faisable en faisant appel à un fichier ini dans lequel apparaissent ces différentes données prédéfinies ?

    Si vous pouvez m'aider ... merci d'avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Soit tu intégère lors de l'ouverture du UserForm les données dans le combo, soit après sélection de la valeur dans le combo tu lance une rechercher dans ton document.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 121
    Points : 41
    Points
    41
    Par défaut
    Salut

    Il me semble qu'il est possible de faire appel à un fichier ini dans lequel sont déjà mentionnées les données sous la forme suivante :

    MACHIN:0123456789;0147258369
    TRUC:0147369258;0987654321
    BIDULE:0159372684;0136925814

    Et ensuite par un code spécifique, faire venir dans le combo le nom, puis selon le choix dans le combo, il agrémentera les 2 textbox par rapport à ce qui suis dans l'exemple ci-dessus.

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Si tes données sont dans un fichier, il suffit d'ouvrir le fichier et de traiter les données pour les envoyer dans le combo.

    Mais tu ne réponds pas à ma question ??

    Il y a trois moyens de procéder
    1. soit on met tout dans le combo lors de l'ouverture du UserForm et on fait le transfert lors du choix.
    2. On peut tout mettre dans un tableau et récupérer les données dans le tableau après le choix.
    3. On peut rechercher les données dans le fichier après le choix.


    Pour exemple :
    Chargement de la liste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Private Sub UserForm_Initialize()
    Dim i As Single
    Dim myArray(5, 2) As String
     
        Me.ComboBox1.ColumnCount = 3
     
     
     
        For i = 0 To 5
            myArray(i, 0) = i
        Next i
     
        'Load columns 2 and three of MyArray
        myArray(0, 1) = "Zero"
        myArray(1, 1) = "One"
        myArray(2, 1) = "Two"
        myArray(3, 1) = "Three"
        myArray(4, 1) = "Four"
        myArray(5, 1) = "Five"
     
        myArray(0, 2) = "Zero"
        myArray(1, 2) = "Un ou Une"
        myArray(2, 2) = "Deux"
        myArray(3, 2) = "Trois"
        myArray(4, 2) = "Quatre"
        myArray(5, 2) = "Cinq"
     
        'Load data into ListBox1 and ListBox2
        Me.ComboBox1.List() = myArray
     
    End Sub
    Récupération des données du combo après choix

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Sub ComboBox1_Change()
    MsgBox Me.ComboBox1.Column(1)
    MsgBox Me.ComboBox1.Column(2)
    End Sub

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 121
    Points : 41
    Points
    41
    Par défaut
    Le fait est que les données dont j'ai besoin sont à mettre dans le document word mais pas à la suite, ils sont à mettre à des endroits différents ... c'est pour celà qu'ils doivent être séparés.

    Mais bon c'est pas grave, je vais essayer de faire autrement ...

    Merci encore.

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Même dans ton titre tu ne mentionnes pas que les données sont à mettre dans le document.

    Il suffit d'utiliser des signets.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub ComboBox1_Change()
    ActiveDocument.Bookmarks(1).Range.text = Me.ComboBox1.Column(1)
    ActiveDocument.Bookmarks(2).Range.text = Me.ComboBox1.Column(2)
    End Sub

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 121
    Points : 41
    Points
    41
    Par défaut
    Merci pour ton aide ... mais ça ne fonctionne pas selon mes besoins ...

    Et il n'est pas facile de se faire comprendre finalement ...

    Merci quand même

  8. #8
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    essaie de définir clairement tes attentes.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 121
    Points : 41
    Points
    41
    Par défaut
    salut

    j'ai retrouvé exactement ce que je cherche
    1 fichier est en pièce jointe.

    ensuite j'ai ces données suivantes dans un fichier nommé contact.ini

    la femme de ménage:la femme de ménage
    l'entreprise de nettoyage:l'entreprise de nettoyage
    la baby-sitter:la baby sitter
    le concierge:le concierge
    un collaborateur:un collaborateur
    un contact:un contact
    un enfant:un enfant
    un voisin:un voisin

    mais ceux-là comprennent 2 données

    pour mon besoin de ce post, il me faut 3 données, et c'est là que ça coince.

  10. #10
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    J'ai toujours rien compris.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 121
    Points : 41
    Points
    41
    Par défaut
    Dans le fichier fourni, il y a un combo dans lequel vient s'agrémenter la première donnée de chaque ligne de cette liste qui se trouve dans un fichier doc.ini
    Cette liste :
    la femme de ménage:la femme de ménage
    l'entreprise de nettoyage:l'entreprise de nettoyage
    la baby-sitter:la baby sitter
    le concierge:le concierge
    un collaborateur:un collaborateur
    un contact:un contact
    un enfant:un enfant
    un voisin:un voisin

    ensuite, selon le choix, la seconde données vient s'agrémenter dans la textbox d'à côté
    Exemple :
    combo : la femme de ménage textbox : la femme de ménage
    combo : l'entreprise de nettoyage textbox : l'entreprise de nettoyage
    et ainsi de suite.

    En ce qui concerne le sujet de ce post pour mon fichier, c'est qu'il me faut 3 données par ligne. et ensuite pouvoir retranscrire cette 3ème donnée dans une seconde textbox, comme l'exemple de copie écran fournie plus haut.

    donc il faut adapter les 2 codes suivant pour que ça marche

    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 cmbcontact1_Change()
    Open "A:\contact.ini" For Input As #1
    Do While Not EOF(1)
    Line Input #1, c$
    pos = InStr(c$, ":")
    If pos > 0 Then
    contact1 = Left(c$, pos - 1)
    contact2 = Mid(c$, pos + 1)
    If cmbcontact1.Text = contact1 Then txtcontact2.Text = contact2
    End If
    Loop
    Close #1
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub UserForm_Initialize()
    Open "A:\contact.ini" For Input As #1
    Do While Not EOF(1)
    Line Input #1, c$
    pos = InStr(c$, ":")
    If pos > 0 Then
    intervenant = Left(c$, pos - 1)
    cmbcontact1.AddItem intervenant
    End If
    Loop
    Close #1
    End Sub
    Donc on va libeller les éléments de cette manière
    combo : cmbcontact1
    textbox 1 : txtcontact2
    textbox 2 : txtcontact3

  12. #12
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Pour les combos, c'est ce que faisait le code que j'avais donné, sauf que je ne l'avais pas envoyé dans un texte box mais dans un mdgbox.

    Et que je n'avais pas pris la peine de le faire au départ d'un fichier, puisque ce n'était pas la question et que tu semble maîtriser cette partie du code.

  13. #13
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut
    Salut vbWord,

    J'ai compris que le code qu'Heureux-Oli t'avait fourni suffisait pour tes besoins. Mais d'après le dernier message de ton post, cela ne semble pas le cas.

    Détaille plus des pb pour que l'on puisse t'aider.

    @+

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 121
    Points : 41
    Points
    41
    Par défaut
    Et bien en fait non ... pas suffisant

    Pour mes besoins, j'ai un fichier txt dans lequel sont saisies certaines données de la manière suivante :
    la femme de ménage:la femme de ménage
    l'entreprise de nettoyage:l'entreprise de nettoyage
    la baby-sitter:la baby sitter
    le concierge:le concierge
    un collaborateur:un collaborateur
    un contact:un contact
    un enfant:un enfant
    un voisin:un voisin

    Ma nouvelle liste pourrait être celle ci :
    la femme de ménage:la femme de ménage;GH
    l'entreprise de nettoyage:l'entreprise de nettoyage;DE
    la baby-sitter:la baby sitter;PR
    le concierge:le concierge;LM
    un collaborateur:un collaborateur;PM
    un contact:un contact;AS
    un enfant:un enfant;CV
    un voisin:un voisin;DS

    Le code que je mentionne dans mon dernier post dit que ce qui se trouve à gauche des 2 points sera dans le combo, et que ce qui se trouve à droite des 2 points sera dans une textbox. ce code fonctionne.

    Là mon besoin est que pour ma liste, il me faut 3 données par ligne, et donc un combo et 2 textbox ... la première donnée dans le combo, et les 2 autres dans 2 textbox différentes ...

    Ou alors que l'on ne fasse pas appel à un fichier txt, et que les données soient directement dans le script de la macro ...

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 121
    Points : 41
    Points
    41
    Par défaut
    Mon problème serait-il insurmontable ???

    Je réprécise qu'il s'agit d'un UserForm

Discussions similaires

  1. Problème avec les textBox et ComboBox
    Par fdegrave dans le forum Excel
    Réponses: 8
    Dernier message: 09/05/2013, 15h59
  2. [WPF] ComboBox, binding avec association LINQ
    Par tomlev dans le forum Windows Presentation Foundation
    Réponses: 11
    Dernier message: 30/04/2008, 00h30
  3. [VB6] Scrollbar dans une frame avec des textbox
    Par bb62 dans le forum VB 6 et antérieur
    Réponses: 44
    Dernier message: 01/03/2006, 08h16
  4. Association avec données réalisant 2e association
    Par Matth_S dans le forum Schéma
    Réponses: 4
    Dernier message: 10/02/2006, 12h55
  5. [JSTL] Association avec le jar ?
    Par MicroPuce dans le forum Taglibs
    Réponses: 5
    Dernier message: 07/01/2006, 14h49

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