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

  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é?

  8. #8
    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
    Une méthode entre autres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub CommandButton1_Click()
    With Sheets("Form")
      .Range("A" & plage.Find(ComboBox1.Value, .Range("C" & derlg)).Row) = TextBox1
    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...)

  9. #9
    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
    Je vais essayer.
    Concernant ton avant dernier message, les codes ne fonctionnent pas, la combobox ne déroule pas de liste. Je pense que je vais garder ceux de ton premier message.
    Merci

    Impec! le texte modifié va bien dans la cellule.
    Encore un grand merci.
    Pas trop surpris par ma programmation?

  10. #10
    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
    Excuses-moi mais je n'ai pas regardé plus que ça, dès que j'ai 2 minutes, je le ferai et te dirai éventuellement ce que j'en pense
    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...)

  11. #11
    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 et @+

    Encore un petit souci : la sélection "1" dans la combobox ne me renvoie rien dans la textbox (mais toutes les autres sélections s'affichent). J'ai essayé en modifiant à 1 la propriété "value" de la combobox qui était par défaut à la valeur 2 mais rien n'y fait.

  12. #12
    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
    Après avoir jeté un coup d'oeil, j'ai rectifié un seul code dans Userform14
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub CommandButton1_Click()
    Dim x As Integer
    With Sheets("form")
      x = .Range("A" & .Rows.Count).End(xlUp).Row
      .Range("A" & x).Value = TextBox1
      Unload UserForm14
    End With
    End Sub
    et j'ai remarqué que le code de ton module1 n'était pas utilisé

    Sinon tout me parait propre, penses à supprimer les codes vides dans tes USF, du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub TextBox1_Change()
     
    End Sub
    Bonnes Pâques !
    Ps : je n'ai pas vu ton dernier post et je vais regarder
    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...)

  13. #13
    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
    la plage commence en C2
    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
    Dim derlg As Long, plage As Range, tb
    Private Sub ComboBox1_Click()
    TextBox1 = ""
    TextBox1 = Range("A" & plage.Find(ComboBox1, Range("C" & derlg)).Row)
    End Sub
     
    Private Sub CommandButton1_Click()
    With Sheets("Form")
      .Range("A" & plage.Find(ComboBox1.Value, .Range("C" & derlg)).Row) = TextBox1
    End With
    End Sub
     
    Private Sub UserForm_Activate()
    With Sheets("form")
      derlg = .Range("C" & .Rows.Count).End(xlUp).Row
      Set plage = .Range("C2:C" & derlg)
      tb = plage
      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...)

  14. #14
    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
    Désolé de t'ennuyer avec cela mais le choix "1" n'affiche toujours rien...
    ("1" correspond à la cellule C3)

  15. #15
    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 ne m'ennuies pas, commences la plage en C3, je n'avais pas bien regardé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set plage = .Range("C3:C" & derlg)
    il faut que tu cliques sur la flêche du combo et selectionnes le 1 ou sinon, on prévoit d'alimenter le textbox avec la première tâche à l'ouverture de l'USF
    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...)

  16. #16
    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
    C'est bon maintenant en corrigeant comme tu le proposes.
    Je pense que mon fichier est complet . Je te remercie mais sans pouvoir te rendre la pareil un jour !!!

+ 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