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 :

[E-07] Référence à une cellule dans une textbox


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut [E-07] Référence à une cellule dans une textbox
    Bonjour,

    Après avoir fait quelques recherches et fait des tentatives infructueuses (le problème posé n'est jamais tout à fait le mien), je m'adresse à vous pour m'aider à trouver une solution.

    J'ai un userform dans lequel j'ai notamment une combobox (dont le rowsource est Produit!A2:A15) et une textbox. J'aimerais qu'une fois la valeur de ma combobox selectionnée, le contenu de ma textbox se définisse automatiquement en fonction de la valeur de la combobox. (exemple : si la valeur de la textbox est "Produit!A4", je voudrais que la valeur de ma textbox soit "Produit!C4".

    En fait, les éléments de ma liste combobox seraient des produits et les éléments de la colonne C, les prix de ces produits.

    (J'utilise Excel 2007)

  2. #2
    Membre régulier Avatar de allergique
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 151
    Points : 108
    Points
    108
    Par défaut
    Bonjour,

    Essaye ce code et dis moi si c'est ce que tu recherches

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub ComboBox1_Change()
     
    Dim valeur As String
    valeur = "Produit!C" & ComboBox1.Value + 2
    TextBox1.Text = Range(valeur)
    End Sub

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    merci mais ça ne fonctionne pas tout à fait

    j'aimerais que la textbox prenne la valeur de la cellule à côté de celle qui alimente la combo box, pas la valeur de la combobox.

    ça doit donner un truc du style :

    "Textbox1.text = cell de la combobox.offset(0,1)"

    Je ne sais juste pas comment lui demander de "décaller" la valeur qu'il recherhce.

  4. #4
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    bonjour,

    tiens voila le truc du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub ComboBox1_Change()
    If ComboBox1.ListIndex > 0 Then
       MsgBox "A droite : " & Sheets("Produit").Range(ComboBox1.RowSource).Cells(ComboBox1.ListIndex + 1).Offset(0, 1).Address
    End If
    End Sub
    JacqueS.

    Ps: je ne télécharge les piéces jointes qu'en dernier recours .(et encore...)

    Pour devenir mon ami laissez moi un message

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Ah merci! je crois que ça doit se rapprocher de ça

    j'ai pas le temps d'essayer tout de suite parce que je dois bouger, mais je te dirai ce que ça donne d'ici qq heures.

  6. #6
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    Une des solutions possibles, serait d'avoir une ComboBox à 3 colonnes en fixant la propriété ColumnCount à 3 et la propriété RowSource deviendrait Produit!A4:C15.
    On peut éventuellement masquer les colonnes 2 et 3 (qui sont les colonnes 1 et 2 vu que dans une Combo la première colonne est la colonne 0) en indiquant dans la propriété ColumnWidth --> 1pt, 0pt, 0pt.

    Ensuite il est aisé de récupérer la valeur de la colonne de la ligne sélectionnée, par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With ComboBox1
        MsgBox .List(.Listindex, 2)
    End With
    ce qui représente la valeur de la 3ème colonne de la ligne sélectionnée (colonne C de la feuille)
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  7. #7
    Membre régulier Avatar de allergique
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 151
    Points : 108
    Points
    108
    Par défaut
    Citation Envoyé par Dauer Voir le message
    merci mais ça ne fonctionne pas tout à fait
    j'aimerais que la textbox prenne la valeur de la cellule à côté de celle qui alimente la combo box, pas la valeur de la combobox.

    ça doit donner un truc du style :

    "Textbox1.text = cell de la combobox.offset(0,1)"

    Je ne sais juste pas comment lui demander de "décaller" la valeur qu'il recherhce.
    Pourtant chez moi ça fonctionne...
    Fichiers attachés Fichiers attachés

  8. #8
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 699
    Points
    6 699
    Par défaut
    Bonjour,

    Perso, je procède comme Fring avec une approche me permettant plus de souplesse. Le principe est de stocker dans l'array une adresse plutôt que des cellules qui peuvent avoir plusieur centaines de caractères chez moi... (pour info, ce n'est pas explicitement le cas ici )

    Je met les seules lignes significatives du code...

    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
    'Alimentation via boucle, K s'incrémente dedans, I aussi.
    'cell est une variable Range de boucle qui est la cible voulue
    ' En colonne 2 du tableau, on met l'adresse de la cellule cible dont la valeur est stockée en colonne 1
    ' et qui est dans la colonne visible du listbox " lstHistoDatCont " (même combat pour une Combo).
     
     
    tabDateContacts(K, 1) = Cells(cell.Row, I)
    tabDateContacts(K, 2) = Cells(cell.Row, I).Address
    …/…
    lstHistoDatCont.List = tabDateContacts
     
    'Ensuite, on alimente le nb de textbox qu'on veut en références relatives
    'par rapport à notre cible, ce 'qui a pour avantage, entre autres (permet
    'aussi le rafraîchissement de données de ces cellules dont 'on ne stocke pas la valeur)
    'de n'avoir un array qu'à 2 colonnes permettant d'adresser
    'un nb de 'textbox indéfini selon les besoins et la BDD.
     
    txtHistoContacttyp = Range(lstHistoDatCont.List(lstHistoDatCont.ListIndex, 1)).Offset(0, 1)
    txtHistoComment = Range(lstHistoDatCont.List(lstHistoDatCont.ListIndex, 1)).Offset(0, 2)
    'etc….
    cordialement,

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    Cours et tutoriels pour apprendre Excel
    N'oubliez pas de mettre : ..quand c'est le cas !

Discussions similaires

  1. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  2. [XL-2007] problème de codage en vba ("copie d'une partie d'une cellule dans une cellule vide")
    Par skipeemed dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 26/10/2010, 17h01
  3. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  4. Afficher une image dans une cellule d'une gridview
    Par guigui11 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 13/09/2007, 10h18
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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