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 :

faire correspondre textbox et combobox [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Par défaut faire correspondre textbox et combobox
    Bonjour,
    j'ai un tableau sur une feuille où les cellules A1 à A50 (liste de tâches) sont remplies via une textbox dans un userform.
    Les cellules C1 à C50 comportent les nombres de 1 à 50 (numérotation des tâches).
    Pour permettre au rédacteur de modifier le texte des cellules a1 à a50, j'ai créé un userform avec
    - une combobox, avec en rowsource les cellules c1 à c50, où le rédacteur choisit le n° de la tâche à modifier
    - une textbox modifiable où apparait le texte de la tâche sélectionnée (si le rédacteur sélectionne "12", le texte de la cellule A12 apparait dans la textbox).

    Tout va bien jusqu'à la sélection dans la combobox mais je ne sait pas comment écrire le code pour lier le choix de la combobox avec la textbox et ensuite recopié le texte corrigé à sa place initiale.

    j'espère que mon explication n'est pas trop alambiquée!!!
    Merci

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,
    essayes avec ces codes à adapter :
    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
    Option Explicit
    Dim derlg As Long, plage As Range, tb
     
    Private Sub ComboBox1_Click()
    TextBox1 = ""
    TextBox1 = Range("A" & plage.Columns(3).Find(ComboBox1, Range("C" & derlg)).Row)
    End Sub
     
    Private Sub UserForm_Activate()
    With Sheets("Feuil1") 'à remplacer par ton nom de feuille
      derlg = .Range("A" & .Rows.Count).End(xlUp).Row
      Set plage = .Range("A1:C" & derlg)
      tb = plage.Columns(3)
      ComboBox1.List = tb
    End With
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Par défaut
    Merci pour ces codes mais lorsque je clique sur le bouton "modifier", le userform s'ouvre ainsi qu'une fenêtre indiquant "erreur d'éxécution 70 permission refusée"
    A priori ça butte sur la ligne "ComboBox1.List = tb" qui est surlignée en jaune.
    Voici les codes tels qu'ils sont inscrit:

    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
    Option Explicit
    Dim derlg As Long, plage As Range, tb
     
    Private Sub ComboBox1_Click()
    TextBox1 = ""
    TextBox1 = Range("A" & plage.Columns(3).Find(ComboBox1, Range("C" & derlg)).Row)
    End Sub
     
    Private Sub UserForm_Activate()
    With Sheets("form")
      derlg = .Range("A" & .Rows.Count).End(xlUp).Row
      Set plage = .Range("A1:C" & derlg)
      tb = plage.Columns(3)
      ComboBox1.List = tb
    End With
    End Sub
    Là, je suis paumé...

    Au cas où, voici mon fichier. Ne pas regarder de trop près ma programmation, c'est du brut de fonderie comme les débutants savent le faire!
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    J'ai testé chez moi sans problème, attention au nom de ton combo, est-ce combobox1 ?
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Par défaut
    Oui, c'est bien Combobox1

  6. #6
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    tu as déclaré la propriété RowSource, tu peux donc te passer de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tb = plage.Columns(3)
      ComboBox1.List = tb
    , gardes le reste

    J'ai ouvert ton fichier, changes les codes :
    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
    Option Explicit
    Dim derlg As Long, plage As Range, tb
    Private Sub ComboBox1_Click()
    With Sheets("Form")
      derlg = .Range("c" & .Rows.Count).End(xlUp).Row
      Set plage = .Range("C1:C" & derlg)
      'tb = plage.Columns(3)
      'ComboBox1.List = tb
      MsgBox plage.Address
      TextBox1 = ""
      TextBox1.Text = .Range("A" & plage.Find(ComboBox1.Value, .Range("C" & derlg)).Row)
    End With
     
    End Sub
     
    Private Sub CommandButton1_Click()
     
    End Sub
     
    Private Sub UserForm_Activate()
    With Sheets("form")
      derlg = .Range("C" & .Rows.Count).End(xlUp).Row
      Set plage = .Range("C1:C" & derlg)
    End With
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  7. #7
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Par défaut
    OK! cela fonctionne. J'ai ôté la référence rowsource et conservé les lignes de code.
    Maintenant, quel est le code pour que le bouton "valide" remplace le texte initial par le texte corrigé?

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/06/2013, 08h51
  2. faire correspondre un objet a un fichier xml
    Par david06600 dans le forum Langage
    Réponses: 1
    Dernier message: 15/08/2006, 14h38
  3. pb pour faire correspondre 2 listes de choix
    Par david714 dans le forum Access
    Réponses: 5
    Dernier message: 27/02/2006, 11h12
  4. Réponses: 12
    Dernier message: 27/12/2005, 13h16
  5. Réponses: 4
    Dernier message: 03/04/2005, 14h26

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