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 :

Remplissage textbox d'après Listbox


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mars 2019
    Messages : 10
    Par défaut Remplissage textbox d'après Listbox
    Bonjour,

    je continu avec mon user form et je rencontre un nouveau problème.

    Mes boutons Enregistrer, Effacer, modifier, et quitter fonctionne parfaitement, et ma liste box charge bien en fonction de ce que j'écris dans la textbox affaire. (Je n'ai pas encore fait le bouton supprimer).

    Mon problème est que lorsque je charge ma liste box d'après ma text box, et que je clique sur une des lignes de ma list box, les différentes données vont dans les différentes textbox et combobox correspondante. Mais cela mets forcement la dernière ligne de ma liste box. Si je clique sur une nouvelle ligne, rien de ne se passe.

    Avec vous une idée ?

    Voici mon 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
    Private Sub ListBox1_Click()
        With ThisWorkbook.Sheets("FACTURATION")
            For Each Nom In .Range("=B8:B" & .[B65000].End(xlUp).Row)
                If CStr(Nom) = CStr(Me.ListBox1.Value) Then
                    Me.TextBoxaffaire.Value = .Cells(Nom.Row, 2)
                    TextBoxbat.Value = .Cells(Nom.Row, 3)
                    Me.TextBoxchantier.Value = .Cells(Nom.Row, 4)
                    ComboBoxmatiere.Value = .Cells(Nom.Row, 5)
                    Me.TextBoxlargeur.Value = .Cells(Nom.Row, 6)
                    Me.TextBoxhauteur.Value = .Cells(Nom.Row, 7)
                    Me.TextBoxquantite.Value = .Cells(Nom.Row, 8)
                    Me.TextBoxm2.Value = .Cells(Nom.Row, 9)
                    Me.ComboBoxforme.Value = .Cells(Nom.Row, 10)
                    Me.ComboBoxfinition.Value = .Cells(Nom.Row, 11)
                    Me.ComboBoxaccessoires.Value = .Cells(Nom.Row, 12)
                    Me.ComboBoxproduits.Value = .Cells(Nom.Row, 13)
                    Me.TextBoxcommentaire.Value = .Cells(Nom.Row, 14)
                    Me.ComboBoxdivers.Value = .Cells(Nom.Row, 15)
                    Me.TextBoxcoutdivers.Value = .Cells(Nom.Row, 16)
                    Me.TextBoxcout.Value = .Cells(Nom.Row, 17)
                End If
            Next
        End With
    End Sub
    Et le fichiers


    Merci à vousFACTUREv5.xlsb.xlsm

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Avec vous une idée ?
    Plus qu'une idée.

    Lorsque tu cliques sur l'une des lignes du ListBox, je suppose que tu souhaites remplir les TextBox des colonnes de cette ligne ?
    Or que fais-tu ? une boucle sur les lignes de la plage de données de la feuille Excel qui sert de référence à ta liste alors que tu devrais lire les colonnes de la ligne de la plage de données. Ligne qui doit correspondre à la propriété ListIndex du ListBox additionné de 1 ou de 2 suivant le cas.

    Petit exemple rapide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub lstCity_Click()
     Dim r As Long
     With Me
      r = .lstCity.ListIndex + 1
     .txtCountry = rng.Cells(r, 1)
     .txtCapital = rng.Cells(r, 2)
     End With
    End Sub
    Initialisation des propriétés du contrôle ListBox nommé lstCity
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub UserForm_Activate()
     Set rng = ThisWorkbook.Worksheets("Pays").Range("A2:B7")
     With Me.lstCity
     .RowSource = rng.Address(external:=True)
     .ColumnHeads = True
     .ColumnCount = rng.Columns.Count
     .ColumnWidths = "50;50"
     End With
    End Sub
    La variable Rng est déclarée en tête de module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Option Explicit
    Dim rng As Range
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre habitué
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mars 2019
    Messages : 10
    Par défaut
    Bonjour,

    Oui c'est ca je veux bien remplir les cases en fonctions des lignes de ma listbox.

    J'ai essayé de mettre vos codes et de les adapter, mais maintenant cela me mets une erreur sur mon TextBoxaffaire_AfterUpdate(), qui me permettais d'afficher dans ma listbox, les lignes correspondant à la valeur que j'inscrivais dans cette textbox et je cliquer entrer.

    Ca a l'air complexe tous ce que je souhaite

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    maintenant cela me mets une erreur sur mon TextBoxaffaire_AfterUpdate(), qui me permettais d'afficher dans ma listbox, les lignes correspondant à la valeur que j'inscrivais dans cette textbox et je cliquer entrer.
    Pour alimenter le contrôle ListBox, j'utilise la propriété RowSource qui ne peut afficher les modifications apportées qu'à condition que l'on ait écrit dans la plage de référence de celle-ci, c'est à dire sur la feuille.

    Ca a l'air complexe tous ce que je souhaite
    Rien n'est complexe, il faut juste faire une analyse au préalable et programmer en ce sens.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre habitué
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mars 2019
    Messages : 10
    Par défaut
    Comment on fait ca?

    Je dois reprendre tous mon fichier je pense

    Merci en tout cas

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Comment on fait ca?
    Quelque soit le langage utilisé, lorsque l'on doit gérer une liste (table) de données en informatique, il y a quatre opérations que l'on doit faire
    • Créer
    • Consulter
    • Modifier
    • Supprimer

    En règle générale dans ce contexte
    • un contrôle ListBox ou ComboBox sert à lister des données afin de pouvoir sélectionner une ligne de ces données
    • Les contrôles TextBox servent à consulter en détail les éléments (colonnes, champs) de la ligne sélectionnée et également d'en modifier éventuellement les valeurs
    • d'autres contrôles comme par exemple CheckBox, OptionButton permettent suivant le contexte de traiter les champs d'une façon plus conviviale

    Cette contribution titrée USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire pourra peut-être t'inspirer
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. [XL-2013] Décaler automatiquement label après remplissage textbox
    Par MEUCORACAO dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/10/2013, 16h24
  2. Filtrage listbox et remplissage textbox
    Par Elumastebit dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 21/12/2008, 11h29
  3. [VBA-E]Rechercher (textbox) dans une listbox
    Par Kaiba dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 04/04/2007, 15h05
  4. Requête SQL sur un clic de Check Box & remplissage TextBox
    Par m3n2o dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/11/2006, 04h15
  5. Réponses: 3
    Dernier message: 25/03/2004, 12h35

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