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 :

listbox vers listboxpuis vers textbox [XL-2007]


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 grisan29
    Homme Profil pro
    ouvrier poseur
    Inscrit en
    Octobre 2006
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ouvrier poseur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 866
    Par défaut listbox vers listboxpuis vers textbox
    bonjour a vous

    je suis bloquer a un niveau qui est insurmontable pour mes connaissances, je voudrais que lorsque je sélectionne une désignation en listbox1 je puisse avoir le détails des sous list en 3 colonnes dans le list box2 mais je n'y arrive pas;lorsque ce code sera débloqué je voudrais pouvoir par un simple clic sur la sous liste la faire arrivé eb textbox1,2 et 3 dans leurs ordres respectifs

    si cela pose problème n'hesiter pas à m'en parler

    bon courage et bonne journée

    grisan29

  2. #2
    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 et bienvenu au forum
    Par exception, j'ai ouvert ta PJ, puisque tu es nouveau au forum
    cf. http://www.developpez.net/forums/d84...s-discussions/

    Une première étape est d'instancier les feuilles

    J'ai adapté ton code, désormais les bonnes informations s'affichent

    il reste à présenter les données dans tes feuilles carrelage et Prestation comme pour plomberie et électricité, c'est à dire, catégorie 1 en colonne B, catégorie2 en Colonne E...etc

    ci-joint code
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    Option Explicit
    Dim MyCategorie As String
     
    Private Sub UserForm_Initialize()
        Me.OptionButton1.Value = True
    End Sub
     
    Private Sub OptionButton1_Click()
    Dim LastInputRow As Long
     
    MyCategorie = "plomberie"
    LastInputRow = Sheets(MyCategorie).Cells(1, 1).End(xlDown).Row
    ListBox1.RowSource = "plomberie!A1: A" & LastInputRow
    Me.ListBox1.ListIndex = 0
    ' Mise à jour libellé liste déroulante
    With UserForm1
        .Label1.Caption = "Liste de la " & MyCategorie & " "
    End With
     
    End Sub
     
    Private Sub OptionButton2_Click()
    Dim LastInputRow As Long
     
    MyCategorie = "electricite"
    LastInputRow = Sheets(MyCategorie).Cells(1, 2).End(xlDown).Row
    ListBox1.RowSource = "electricite!A1: A" & LastInputRow
    Me.ListBox1.ListIndex = 0
    ' Mise à jour libellé liste déroulante
    With UserForm1
        .Label1.Caption = "Liste de l' " & MyCategorie & " "
    End With
     
    End Sub
     
    Private Sub OptionButton3_Click()
    Dim LastInputRow As Long
     
    MyCategorie = "carrelage"
    LastInputRow = Sheets(MyCategorie).Cells(1, 2).End(xlDown).Row
    ListBox1.RowSource = "carrelage!A1: a" & LastInputRow
     
    Me.ListBox1.ListIndex = 0
    ' Mise à jour libellé liste déroulante
    With UserForm1
        .Label1.Caption = "Liste du " & MyCategorie & " "
    End With
     
    End Sub
     
    Private Sub OptionButton4_Click()
    Dim LastInputRow As Long
     
    MyCategorie = "prestation"
    LastInputRow = Sheets(MyCategorie).Cells(1, 2).End(xlDown).Row
    ListBox1.RowSource = "prestations!A1: a" & LastInputRow
    Me.ListBox1.ListIndex = 0
    ' Mise à jour libellé liste déroulante
    With UserForm1
        .Label1.Caption = "Liste de la " & MyCategorie & " "
    End With
    End Sub
     
    Private Sub UpdateListBox(wsName As String, Parametres As MSForms.ListBox, IndexValue As Integer)
    Dim LastInputRow As Integer, ColumnIndex As Integer, InputRange As Range
    ' Les données commencent à la ligne 3
    Const FirstInputRow As Integer = 2
    ' Détermine depuis quelle colonne on prend la liste des items
    ColumnIndex = 5 + 3 * (IndexValue - 1)
    ' Détermine la dernière ligne de la colonne sélectionnée et la plage correspondante
    With Sheets(wsName)
        LastInputRow = .Cells(FirstInputRow, ColumnIndex).End(xlDown).Row
        Set InputRange = .Range(.Cells(FirstInputRow, ColumnIndex), .Cells(LastInputRow, ColumnIndex + 2))
        With Parametres
            .MultiSelect = False
            .ColumnCount = 3
            .ColumnWidths = "140;60;40"
            .ColumnHeads = True ' Affiche les en-têtes de colonne
            .RowSource = wsName & "!" & InputRange.Address ' Spécifie la source de données
            .ListIndex = 0 ' Sélectionne le premier item
        End With
    End With
    Set InputRange = Nothing
    End Sub
     
    Private Sub ListBox1_Change()
    ' Mise à jour des items dans la ListBox2
    UpdateListBox MyCategorie, Me.ListBox2, Me.ListBox1.ListIndex
    End Sub
     
    Private Sub ListBox2_Change()
    With Me.ListBox2
        Me.TextBox1.Value = .List(.ListIndex)       'Designation
        Me.TextBox2.Value = .List(.ListIndex, 1)    'PU
        Me.TextBox3.Value = .List(.ListIndex, 2)    'Unité
    End With
    End Sub
     
    Private Sub CommandButton1_Click()
    Me.Hide
    Unload Me
    End Sub
     
    Private Sub CommandButton2_Click()
    Dim Myselection As String
    Me.Hide
    Myselection = Me.ListBox1.List(ListBox1.ListIndex)
    Unload Me
    End Sub
    PS:
    Remplace les propriétés de la Listbox2
    ColumnCount: 1
    ColumnsWidths: vide
    Width: 262

  3. #3
    Membre éclairé Avatar de grisan29
    Homme Profil pro
    ouvrier poseur
    Inscrit en
    Octobre 2006
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ouvrier poseur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 866
    Par défaut listbox vers listbox puis vers textbox
    bonjour a tous et surtout a mercatog qui m'a oter une grosse épine ,

    C’est tout a fait ce que je voulais sauf que je n’avais pas tout expliqué
    je rejoint mon fichier modifier
    J’y ai rajouté une feuil pour la réception des données et 2 check box
    Checkbox1= tva 5.5
    Checkbox2 =tva 1 9.6
    Je voudrais que lors du clic sur le bouton valider le contenu des text box et checkbox aillent en feuil1
    Textbox1 en B2 End(xlDown).Row ?
    Textbox 2 en D2 End(xlDown).Row
    Textbox3 en E2 End(xlDown).Row
    Textbox 4 en C2 End(xlDown).Row
    End(xlDown).Row pour pouvoir ajouter des articles l’un apres l’autre
    Checkbox1 ou 2 en G2 End(xlDown).Row
    Si c’est checkbox1 qui est choisi alors on écrit 1 en G2
    Si c’est checkbox2 qui est choisi alors on écrit 2 en G2
    Le textbox 4 est réservé a la quantité qui peu etre variable donc écrite manuellement
    L’idéal serait de commencer par une ligne dans la feuille et la formule ajouterai une ligne automatiquement jusqu'à l’entete de bas de page et faire un saut pour aller sur une la page 2 mais en ayant sauté l’entete de haut de page
    En fait je suis en cours de remaniement de mon fichier de facturation

    Merci beaucoup encore

    Grisan29

  4. #4
    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
    Pour le début
    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
    Private Sub CommandButton2_Click()
    Dim NewLig As Long
     
    With Sheets("feuil1")
       NewLig = .Cells(Rows.Count, 2).End(xlUp).Row + 1
       .Range("B" & NewLig).Value = TextBox1.Value ' designation
       .Range("D" & NewLig).Value = TextBox2.Value ' prix
       .Range("E" & NewLig).Value = TextBox3.Value ' unite
       .Range("C" & NewLig).Value = TextBox4.Value ' qte
       .Range("F" & NewLig).Value = .Range("C" & NewLig).Value * .Range("D" & NewLig).Value
       .Range("G" & NewLig).Value = IIf(Me.OptionButton5, 1, 2)
       .Range("H" & NewLig).Value = IIf(Me.OptionButton5, 0.055 * .Range("F" & NewLig).Value, "")
       .Range("I" & NewLig).Value = IIf(Me.OptionButton6, 0.196 * .Range("F" & NewLig).Value, "")
       '.....
    End With
     
    TextBox1.Value = ""
    TextBox2.Value = ""
    TextBox3.Value = ""
    TextBox4.Value = ""
    End Sub
    pour la tva, tu remplace tes checkbox par des buttonoption.

  5. #5
    Membre éclairé Avatar de grisan29
    Homme Profil pro
    ouvrier poseur
    Inscrit en
    Octobre 2006
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ouvrier poseur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 866
    Par défaut code tva
    bonjour Mercatog un grand merci pour tout ce que tu m'as donner comme code fonctionnel du premier coup, il n'y a que les checkbox (remplacer par des optionbuttons) qui donne en g2 le taux de tva hors dans mon post précédent j'avais mis ceci
    si c’est checkbox1 qui est choisi alors on écrit 1 en G2
    Si c’est checkbox2 qui est choisi alors on écrit 2 en G2
    en fait textbox 1;2;3;4 démarre en ligne 19 (C;I;J;K) les premières ligne sont réservé a l'entete de page
    les options boutons démarre en M19
    le tout toujours en (End(xlUp).Row + 1)

    Merci pour tout

    bonne fin de journée a tous

    grisan29

  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
    Tu peux avoir pour un seul produit à la fois une tva de 5.5 et de 19.6??
    car avec les chekbox tu peux choisir les 2 à la fois.
    Une simple question

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 07/02/2013, 08h39
  2. textbox changeant vers un autre textbox
    Par grisan29 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/08/2010, 15h32
  3. listbox sous PDA vers listbox vers windowsForm
    Par fanatics dans le forum VB.NET
    Réponses: 6
    Dernier message: 09/06/2010, 17h12
  4. Réponses: 3
    Dernier message: 14/06/2008, 16h10
  5. Export vers Access vers EXCEL en VBA
    Par cornet04 dans le forum VBA Access
    Réponses: 2
    Dernier message: 04/06/2007, 15h36

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