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 :

zone de liste pour alimenter textbox [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut zone de liste pour alimenter textbox
    bonjour a tous

    voila j'ai un formulaire "prise_de_commande" pour alimenter une feuille "commandeelectro".

    ce formulaire fonctionne très bien, mais je voudrais lui ajouter une fonction plus complexe

    actuellement je remplis les combobox :
    "nom", "boxtype", "boxmarque", "boxproduit"
    elles sont alimenter dans "UserForm_Initialize" par une fonction de type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    boxtype.RowSource = "source!e2:e" & Range("source!e65536").End(xlUp).Row
    ensuite je saisie dans les textbox :
    "boxref", "pvht" (référence et prix de vente hors taxe)

    je cherche a créer deux nouvelles fonctions

    1) la première serait d'alimenter une liste dans la feuille "source" à chaque fois qu'une nouvelle référence(qui n'a jamais été sur cette liste) est saisie sur le bon de commande, cette référence vient s'ajouter à la liste, ainsi que le prix de vente HT qui va avec cette référence de la box PVHT

    2)la deuxième qui dépend de la première serait d'avoir une zone de liste reprenant la liste de référence avec le pvht, mais qui se filtre au fur et a mesure des choix sur les combobox, ainsi si sur cette zone de liste apparait une référence que je doit taper, je voudrais double cliquer sur la ref et ainsi elle viendrait alimenter les deux textbox


    voila c'est assez lourd et je ne sais même pas si c'est possible

    merci pour votre aide

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 102
    Par défaut
    Bonsoir

    Un code pour rajouter les données à la suite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim dl1 As Long ' en tête de module
    Private Sub boxtype_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    dl1= 0 
    If boxtype.ListIndex = -1 Then
    With Sheets("source")
    dl1 = .Cells(.Rows.Count, 5).End(xlUp).Row + 1
    .Range("e" & dl1) = ComboBox1.Value
    boxtype.RowSource = "source!e2:e" & Range("source!e65536").End(xlUp).Row
    End With
    End If
    End Sub
    La variable "dl1" contient le numéro de ligne, elle peut être utilisé pour mettre les éléments qui se trouvent dans les textbox.

    A tester

    JP014

  3. #3
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut
    merci de venir m'aider

    je n'arrive pas a faire fonctionner cette macro dans le formulaire
    j'ai mis boxtype_Exit vers la fin de l'action du formulaire et placer le code dans un module

    mais je n'obtiens que le message
    erreur de compilation
    sub ou fonction mal définie

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 102
    Par défaut
    Bonjour

    Citation Envoyé par bosk1000 Voir le message
    merci de venir m'aider

    je n'arrive pas a faire fonctionner cette macro dans le formulaire
    j'ai mis boxtype_Exit vers la fin de l'action du formulaire et placer le code dans un module
    Le code doit être dans l'userform et non dans un module.

    JP014

  5. #5
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut
    pour faire le test sans souci, j'ai créer un bouton pour ajouter la ref (txt_nexref), ainsi qu'une feuille (aaa) juste pour remplir cette fonction

    j'ai donc mis comme code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub txt_nexref_Click(ByVal Cancel As MSForms.ReturnBoolean)
    Dim dl1 As Long ' en tête de module
    dl1 = 0
    If boxtype.ListIndex = -1 Then
    With Sheets("source")
    dl1 = .Cells(.Rows.Count, 5).End(xlUp).Row + 1
    .Range("e" & dl1) = ComboBox1.Value
    boxtype.RowSource = "aaa!e2:e" & Range("aaa!e65536").End(xlUp).Row
    End With
    End If
    End Sub
    au démarrage du formulaire, un message apparait :

    erreur de compilation
    la déclaration de la procédure ne correspond pas à la description de l'événement ou de la procédure de même nom

    avec un focus sur la première ligne
    j'ai donc tester en retirant ce qui est entre les parenthèse
    (ByVal Cancel As MSForms.ReturnBoolean)
    et il ne se passe rien quand je clique sur le bouton.

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour,
    un exemple:
    dans l'userform j'ai une combo boxtype alimentée par E2:Exx de la feuille source.
    un textbox boxref qui:
    Reprend le choix dans boxtype
    Ou Ajoute un nouveau item à boxtype
    Ou éventuellement on peux écrire un item déjà existant (ne sera pas ajouté)
    ci-joint les codes nécessaires: (à mettre dans le module de l'userform)
    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
    26
    27
    28
    29
    Option Explicit
     
    Private Sub UserForm_Initialize()
    boxtype.RowSource = "source!E2:E" & Sheets("source").Cells(Rows.Count, 5).End(xlUp).Row
    End Sub
     
    Private Sub boxref_AfterUpdate()
    Dim c As Range
    Dim LastLig As Long
     
    With Sheets("source")
        LastLig = .Cells(Rows.Count, 5).End(xlUp).Row
        Set c = .Range("E2:E" & LastLig).Find(boxref, LookIn:=xlValues, lookat:=xlWhole)
        If c Is Nothing Then
            .Range("E" & LastLig + 1) = boxref
            boxtype.ListIndex = -1
            boxtype.RowSource = "source!E2:E" & LastLig + 1
            boxtype.Value = boxtype.List(boxtype.ListCount - 1)
        Else
            boxtype.Value = boxref.Value
        End If
        Set c = Nothing
    End With
     
    End Sub
     
    Private Sub boxtype_Change()
    boxref = boxtype
    End Sub

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 04/08/2006, 01h51
  2. zone de liste pour afficher
    Par issam16 dans le forum Access
    Réponses: 9
    Dernier message: 22/06/2006, 15h15
  3. Cliquer sur zone de liste pour valider la valeur
    Par gwendk dans le forum Access
    Réponses: 7
    Dernier message: 15/05/2006, 15h13
  4. clic sur zone de liste pour validation
    Par ormoy28 dans le forum Access
    Réponses: 7
    Dernier message: 11/05/2006, 11h03
  5. Réponses: 4
    Dernier message: 31/10/2005, 18h37

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