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 :

Sélectionner un élément précis dans une combobox


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 38
    Points : 19
    Points
    19
    Par défaut Sélectionner un élément précis dans une combobox
    Tout d'abord merci pour l'attention que vous porterez à ma requête.

    Alors voila j'ai créer un userform dans lequel j'y ai inséré un certain nombre de combobox, le tout constituant un formulaire assez important.

    Ce formulaire est activé par un bouton présent sur une feuille excel, et sert à incrémenter la base de données de cette feuille excel, la saisie d'un formulaire remplissant une ligne de la feuille excel.

    J'aimerais ajouter un bouton Modifier sur cette feuille excel, qui me permettrais, en indiquant le numéro de ligne que je souhaite modifier, de retrouver le formulaire DEJA PREREMPLI avec les données que l'utilisateur avait saisi.

    J'espère être suffisamment clair.

    J'ai pensé inclure dans le formulaire de saisie un copier coller de tous les listindex saisies dans les combobox vers des cellules excel, et m'y référer quand je clique sur le bouton modifier, mais le souci c'est que la base de données est déjà très conséquente, et toutes ces données n'ont pas été entrées par le biais du formulaire.

    Je pensais avoir trouvé la réponse à ma question avec la fonction FindString, mais j'ai beau tourner ca dans tous les sens, ca ne marche pas (est-ce parce que je suis sur Excel 2003 ?)

    Merci pour votre aide...

  2. #2
    Membre actif
    Inscrit en
    Août 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Août 2009
    Messages : 284
    Points : 283
    Points
    283
    Par défaut
    Ne pourrai tu pas lancer ton formulaire en remplissant les champs du formulaire par les infos qui figurent dans la ligne.
    Genre clic sur modifier => inputbox "saisir le n° de ligne"
    Ensuite tu ouvre un formulaire vierge et viens remplir le formulaire avec les infos contenue dans la ligne.
    genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    useform initialise
    Comboxbox1.value= range(i,3).value
    Comboxbox2.value= range(i,5).value
    et ainsi de suite...
    Ca demande un peut de travail pour definir quelle case dans la ligne va dans quel champs, et c'est mieux si tes lignes sont homogènes, même info = même colonne.

  3. #3
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Essaye la fonction find tout seul non?

    Je ne suis pas sur de répondre a ta question mais regarde ceci
    tu recherche quelque chose colonne A et tu veux mettre la valeur colonne B dans un textebox

    Je te laisse 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
    Private Sub CommandButton1_Click()
    Dim DerniereLigne As Long, i As Long
    Dim cher As String
    Dim c As Range
    cher = TextBox1
    DerniereLigne = Range("A65536").End(xlUp).Row
    Set c = Range("A1:A" & DerniereLigne).Find(cher)
     
    If Not c Is Nothing Then
    i = c.Row
    TextBox2 = Cells(i, 2) 'tu fait pareille avec les autre valeur
    Else
    i = DerniereLigne + 1
    End If
    End Sub
    Par contre je te conseillerai de déclarer i commun a tout ton userform tu en aura besoin pour remplacer les valeurs ca t'évitera de le recherche

  4. #4
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 38
    Points : 19
    Points
    19
    Par défaut
    Merci pour vos réponses.

    La solution que tu proposes diude, ne marche pas dans mon cas. Sans soute parce que mes listes de combobox sont fermées (pas de possibilité de rajouter d'élément à la liste).

    merci krovax, j'y ai pensé aussi, mais en fait c'est l'opération inverse que je veux faire : à partir d'un élément présent dans une cellule je veux que mon combobox le retrouve dans sa liste et l'affiche.
    Peut être que la fonction Find s'applique à la liste combobox, mais pour l'instant je n'ai pas trouvé comment...

  5. #5
    Membre actif
    Inscrit en
    Août 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Août 2009
    Messages : 284
    Points : 283
    Points
    283
    Par défaut
    Si l'élément qui figure dans la ligne est dans la liste de la combobox il n'y aura pas de problème pour définir la valeur de départ de la combobox sur cette valeur

  6. #6
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 38
    Points : 19
    Points
    19
    Par défaut
    Toutes mes excuses diude ta proposition semble marcher...
    ... mais il reste quelques problèmes.

    Voisi un bout de mon code que j'ai modifié avec ta proposition.

    le 1) marche nickel, le 2) bloque.


    '1) IMTm (liste fermée)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    IMTm.AddItem "CL"
    IMTm.AddItem "CLB"
    IMTm.AddItem "ER"
     
    IMTm.Value = Worksheets("Détail Opérations").Cells(ligneàmodifier, 1).Value
    '2) Clientm (liste ouverte)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim listeclients As String
    Worksheets("Détail Opérations").Select
      listeclients = "b3:b" & (derniereligne)
      Clientm.RowSource = listeclients
     
    Clientsm.Value = Worksheets("Détail Opérations").Cells(ligneàmodifier, 2).Value

  7. #7
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 121
    Points : 119
    Points
    119
    Par défaut
    le (derniereligne) entre parenthèse c'est normal ? tu l'as défini comme cela ?

    si ta variable est derniereligne alors enlève les parenthèse de ton code
    autre problème de syntaxe un coup c'est :
    Clientm
    l'autre c'est :
    Clientsm

    donc faire gaffe à ça déjà

  8. #8
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Les parenthèses en vont rien changé elle sont inutile mais pas génante

    Relis le code je cherche la valeur d'un textbox (que tu peux remplacer par un combo) et je rempli un autre textbox (que tu peux remplacer par un combo)


    Sinon pour le 2 essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Clientm.RowSource = range(listeclients)
    Et utilise les balise code, regarde le premier message du forum si tu ne sais pas faire.

  9. #9
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 38
    Points : 19
    Points
    19
    Par défaut
    Je vous remercie de vous être penché sur mon problème et de l'avoir résolu.

    Je commence à comprendre que tout est une question d'expérience et surtout de rigueur. C'est très formateur la programmation.

    Cordialement !

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

Discussions similaires

  1. Forcer l'élément affiché dans une Combobox
    Par Mélodie_et_rythmes dans le forum Débuter
    Réponses: 1
    Dernier message: 08/09/2012, 17h28
  2. élément unique dans une combobox
    Par zandru dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 15/07/2008, 11h45
  3. [C#] Empecher de sélectionner un élément dans une combobox
    Par padodanle51 dans le forum Windows Forms
    Réponses: 23
    Dernier message: 11/07/2006, 15h54
  4. Réponses: 2
    Dernier message: 14/09/2005, 13h39
  5. [VB+IE] Comment sélectionner dans une combobox d'une page IE
    Par danje dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 03/05/2005, 09h10

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