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 :

formulaire avec liste répétitive [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 formulaire avec liste répétitive
    bonjour a tous,

    voici un probleme dont je ne sais meme pas par ou commencé

    d'abord je vous explique le tableau
    j'ai une liste de personne
    la colonne A est le nom et prénom
    la colonne F la catégorie de la personne
    la colonne G prenom d'un enfant et colonne H la date de naissance de l'enfant

    si la personne n'a pas d'enfant
    son nom est sur une ligne
    la ligne suivante c'est une autre personne

    si la personne a un enfant
    son nom est sur une ligne et son enfant sur la colone G de cette ligne
    la ligne suivante c'est une autre personne

    si la personne a deux enfant
    son nom est sur la première ligne ainsi qu'un enfant
    son nom est sur la deuxième ligne ainsi que l'autre enfant
    la ligne suivante c'est une autre personne

    etc...

    Mon Souci
    je voudrais faire un formulaire ou en tapant dans une textbox le nom de la personne apparaisse dans une listbox tous les enfants, leur date de naissance

    dans un box, sa catégorie

    et donc je ne sais pas par ou commencé car comme le nom d'une personne peu apparaitre une à cing fois sur la colonne a

    une première solution fut de mettre un sous total a chaque changement de nom mais je ne sais pas comment selectionner uniquement la ligne du sous toltal

  2. #2
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Bonjour Bosk1000,
    J'aurais tendance à utiliser une feuille pour "stocker" le nom des enfants selon le nom choisi, sur base de ça alimenter ta ListBox

    Tu vois ce que je veux dire ?

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 317
    Par défaut
    Bonjour,

    regarde le fichier joint, et le code de l'usf...

    Reviens si problème

    L'usf comporte un combobox et un listbox

    Codes de l'usf :

    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
    Private Sub UserForm_Initialize()
    Dim Noms As Object
    Dim Cel As Range
    Set Noms = CreateObject("Scripting.Dictionary")
    For Each Cel In Range("A2:A" & [A65000].End(xlUp).Row)
         If Cel.Offset(0, 6).Value <> "" Then Noms.Item(Cel.Value) = Cel.Value
    Next Cel
    Me.ComboBox1.List = Application.Transpose(Noms.Items)
    End Sub
     
    Private Sub ComboBox1_Change()
    Dim Lig As Long
    Dim Nbr As Byte, I As Byte
    Lig = Application.Match(Me.ComboBox1, Columns(1), 0)
    Nbr = Application.CountIf(Columns(1), Me.ComboBox1)
    Cells(Lig, 7).Resize(Nbr, 1).Name = "base"
    With Me.ListBox1
        .Clear
        .ColumnCount = 3
        For I = 1 To Nbr
            .AddItem
            .List(I - 1, 0) = Range("base")(I).Value
            .List(I - 1, 1) = Range("base")(I).Offset(0, 1).Value
            .List(I - 1, 2) = Range("base")(I).Offset(0, -1).Value
        Next I
    End With
    End Sub
     
    Private Sub CommandButton1_Click()
    Unload Me
    End Sub
    Ceci fonctionnera sous réserve que ta liste soit triée par Nom et Prénom (colonne A)....
    Fichiers attachés Fichiers attachés

  4. #4
    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 votre rapidité pour vos réponse

    Fvandermeulen, ton systeme serait d'utiliser la feuille de stockage des enfant comme on pratique sur access dans la base de donnée

    pas bête mais je vois pas comment faire la relation par la suite


    mapeh, je vais tester ton code

  5. #5
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Re,
    Je viens de regarder la solution de mapeh, oublie mon idée , la sienne est bien meilleure
    Mais sinon l'idée aurait été avec ta feuille de données et une feuille ListeEnfant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    MonNom = InputBox("Entrez un nom")
    l = 1
     
    For i = 2 To x 'x selon le nombre de ligne dans Données
        If Sheets("Données").Cells(i, 1).Value = MonNom Then 'Vérifie la correspondance du nom
            Sheets("ListeEnfant").Cells(l, 1) = Sheets("Données").Cells(i, 7).Value 'Récupère le prénom enfant
            Sheets("ListeEnfant").Cells(l, 2) = Sheets("Données").Cells(i, 8).Value 'Récupère la date
            l = l + 1
        End If
    Next i
     
    UFenfants.LBPrenom.RowSource = "ListeEnfant!A1:Ax" 'Indique la source pour la ListBox x étant variable selon le nombre d'enfants
    Evidemment c'est incomplet mais comme j'ai indiqué plus haut la solution de mapeh devrait largement te convenir !

  6. #6
    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
    mapeh, chapeau bas
    je viens de tester ta solution
    elle me sors les enfants et l'age ainsi que la catégorie

    j'ai plus qu'a bien comprendre ton code pour continuer
    mais j'avoue mes lacune dans ce type d'approche.

    sur un point je me suis mal exprimer car pour l'affiner je veux avoir une box ou s'affiche la catégorie qu'une seul fois

    et si tu pouvais me dire comment avoir une variable qui retient le nombre d'enfant (0,1,2 ou 3, etc..) afin de pouvoir réutiliser ce nombre dans une autre box
    car en fait dans le domaine social ou je veux utiliser cela chaque enfant donne un bonus donc pour ressortir ce bonus, il me faut pouvoir le multiplier par le nombre d'enfant.

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

Discussions similaires

  1. [MySQL] formulaires avec listes à rafraichir
    Par unmulot dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 23/06/2006, 16h00
  2. Formulaire avec liste modifiable
    Par cedre22 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 14/03/2006, 08h06
  3. Pb Formulaire avec liste déroulante
    Par Rouanou dans le forum IHM
    Réponses: 12
    Dernier message: 23/11/2005, 16h51
  4. Test sur formulaire avec liste des erreurs
    Par Nicos77 dans le forum Langage
    Réponses: 37
    Dernier message: 17/11/2005, 10h22
  5. Formulaire avec liste basée sur une autre table
    Par sabotage dans le forum Langage SQL
    Réponses: 6
    Dernier message: 10/08/2005, 13h43

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