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 :

Textbox et combobox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Juin 2013
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 9
    Par défaut Textbox et combobox
    Bonjour,

    J'ai crée un user form composé d'une combobox et de plusieurs textbox. J'arrive à rentrer la liste (quoi que je dois définir la plage de donnée manuellement à chaque fois que j'ajoute une donnée) et à faire correspondre les valeurs qui correspondent dans les textbox. J'ai deux questions:


    1-Je voudrais que l'utilisateur puisse sélectionner dans la liste un numéro et que lorsqu'il rentre une valeur dans la textbox vide ca me la recopie dans la bonne colonne excel. J'arrive pas à sélectionner la cellule active.

    2-Est ce qu'il est possible d'alimenter ma combobox en fonction des blancs d'une autre colonne (ma combobox est basée sur la colonne A mais j'aimerai qu'elle ne m'affiche les valeurs de A que lorsque la cellule en B correspondante est égale à 0 ou vide)

    P.S: j'ai alimenté ma combobox tout simplement il doit y avoir mieux mais je suis novice...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Userform_initialize()
     
    Dim i
    For i = 2 To 25
          ComboBox1.AddItem Sheets("Fichier général").Cells(i, 10)
        Next
    End Sub
    Merci beaucoup pour votre aide!!

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Une solution possible à mettre dans votre programme principal au lieu de l'Userform_initialize du UserForm. J'utilise cette méthode car elle permet de contrôler les données d'entrée plus facilement (si les conditions ne font pas plusieurs pages...)

    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
    Sub Programme() ' Votre programme principal
     
    Dim I As Long
    Dim DerniereLigne As Long
    Dim ShEnCours As Worksheet
     
     
    Set ShEnCours = Sheets("Fichier général")
    DerniereLigne = ShEnCours.Cells(ShEnCours.Rows.Count, 1).End(xlUp).Row ' On teste la dernière ligne de la colonne A
     
        With UserForm1
     
           For I = 2 To DerniereLigne
              If Cells(I, 2) <> "" Then .ComboBox1.AddItem ShEnCours.Cells(I, 1)
           Next I
           ' On teste le contenu de la cellule de la colonne B
           .Show
     
        End With
     
    Set ShEnCours = Nothing
     
    End Sub
    Pour le reste du problème, il faudrait expliquer comment le UserForm doit alimenter le tableau. Est-ce par ajout d'une nouvelle ligne ? Sur une ligne existante ? A vous d'expliquer.




    Cordialement.

  3. #3
    Membre éprouvé
    Inscrit en
    Mai 2011
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 85
    Par défaut
    Pour 2) si j'ai bien compris:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Userform_initialize()
     
    Dim i
    For i = 2 To 25
         If cells(i,2)=0 Or cells(i,2)="" then
            ComboBox1.AddItem Sheets("Fichier général").Cells(i, 10)
         End if
    Next i
     
    End Sub
    Pour la 1 je suis vraiment pas sûr d'avoir compris, ta combobox donne la possibité de choisir le numéro de la ligne et la textbox permet de remplir une case de la ligne correspondante ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub TxtBox_Change() 'TxtBox doit être remplacé par le nom que tu as donné a ta TextBox
     
    dim i as integer
     
    i=combobox1.value
     
    cells(i,X)=TxtBox.text 'Remplace X par le numéro de la colonne de la case a remplir
     
     
    End Sub
    Voilà n'hésite pas é préciser les choses si je suis a côté de la plaque.

  4. #4
    Membre habitué
    Inscrit en
    Juin 2013
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 9
    Par défaut
    Bonjour,

    Tout d'abord merci de votre aide et désolée pour la réponse tardive mais j'ai voulu prendre le temps de bien comprendre tout ce que vous m'avez montré. Pour ma question deux, parfait tout marche, ma combobox n'est alimentée que si la case en face dans la colonne N est vide.

    Par contre je ne comprends pas le code de Eric, j'ai essayé de le mettre tout bêtement ou de l'adapter mais ca ne fonctionne pas, pareil pour la réponse à ma question 1 de Fred.

    Peut être que je n'ai pas bien expliqué mon probléme. Ma combobox, prend ses valeurs dans la colonne J ce sont des numéros de lot, quand je sélectionne un lot, je voudrais que l'utilisateur puisse rentrer le poids du lot dans la textbox et que ca aille me le mettre dans la colonne N sur la même ligne que le numéro du lot. Ici quand je veux rentrer la valeur, il y a un message d'erreur....

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je me suis aperçu que je faisais l'inverse de ce que vous aviez demandé, je ne prenais tout ce qui n'était pas vide.... Désolé. Par contre, votre message mentionnait les colonnes A et B...

    Cela dit, vous trouverez, ci-joint, un exemple complet (basé cette fois-ci sur les colonnes J et N). Il vous faut regarder le module standard joint, le UserForm et le code présent dans le module de la feuille des données.

    Le fichier se présente sous cette forme :http://www.developpez.net/forums/att...1&d=1371026584

    Le programme présent dans le module standard est lancé soit par le bouton, soit sur double click sur une cellule de la feuille. La combobox est remplie avec la première occurrence vide de la colonne N. Un textbox indique la ligne en cours (c'est un artifice, ce n'est pas obligatoire, mais c'est plus sympa).
    http://www.developpez.net/forums/att...1&d=1371026584

    Vous saisissez l'info dans le text box pour votre colonne N et vous validez.

    http://www.developpez.net/forums/att...1&d=1371026584

    Le résultat s'affiche dans cet écran et on passe à l'enregistrement suivant.
    http://www.developpez.net/forums/att...1&d=1371026584

    A noter la particularité de la combobox à deux colonnes (voir les propriétés). J'utilise souvent la méthode avec les matrices pour remplir mes combobox car elles me servent bien souvent à récupérer des valeurs pour la suite du programme moyennant une boucle de mise à jour à la sortie du UserForm. Bien sûr vous n'êtes pas obligée de faire la même chose.

    Bon courage.

    Cordialement.
    Dernière modification par AlainTech ; 14/06/2013 à 21h09. Motif: Suppression de la citation

  6. #6
    Membre éprouvé
    Inscrit en
    Mai 2011
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 85
    Par défaut
    Ok, j'avais mal compris ton problème:

    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
    Private Sub TxtBox_Change() 'TxtBox doit être remplacé par le nom que tu as donné a ta TextBox
     
    dim numlot as long
    dim i as integer
     
    numlot=combobox1.value
     
    i=1
     
    while cells(i,10)<>numlot
         i=i+1
    wend
     
    cells(i,14)=TxtBox.text 
     
     
    End Sub

  7. #7
    Membre habitué
    Inscrit en
    Juin 2013
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 9
    Par défaut
    Eric,

    Merci pour le code, je l'ai essayé mais au moment de cliquer sur valider, il me dit erreur en surlignant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(CLng(TextBoxLigne), ColonneInfoARemplir) = TextBoxColonneN
    Je ne comprend pas pourquoi ca ne fonctionne pas, j'ai essayé de reprendre ligne par ligne mais ca ne change rien....

    Fred, je teste tout de suite ta solution pour voir si je comprends....

    Merci à tout le sdeux pour votre iade!

    Fred,

    Je peux entrer des valeurs mais du coup, elles ne se recopient pas dans le fichier quand je clic sur valider. C'est pas une histoire ou je dois déclarer la variante comme public dans ma feuille de code?
    Désolée je suis vraiment nulle mais j'apprend seule en me promenant sur les forums et parfois il me manque des données...

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par lucieaup Voir le message
    Eric,

    Merci pour le code, je l'ai essayé mais au moment de cliquer sur valider, il me dit erreur en surlignant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(CLng(TextBoxLigne), ColonneInfoARemplir) = TextBoxColonneN
    Je ne comprend pas pourquoi ca ne fonctionne pas, j'ai essayé de reprendre ligne par ligne mais ca ne change rien....
    Vous avez essayé sur mon fichier ? Ou bien est-ce une transcription de mon code sur votre fichier ?
    Attention aux déclarations des variables public dans le module standard.

    Cordialement.

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

Discussions similaires

  1. Changer la couleur des TextBox et Combobox dans un USF
    Par olivepao dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 05/01/2009, 21h41
  2. Textbox vs Combobox avec Textcolumn
    Par Jeyjey1 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 30/10/2008, 09h42
  3. [WPF] textbox ou combobox dans un listview
    Par modafine dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 14/08/2008, 10h37
  4. comment vider plusieurs textbox et combobox dans un formilaire et Plus
    Par r.mehdi dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 05/05/2008, 15h52
  5. chaines textbox vers combobox
    Par rober dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 18/10/2006, 08h41

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