Formullaire Userform pour complèter un tableau

Y compris Power BI, Power Query et toute autre question en lien avec Excel
M
MaLuce
Membre habitué
Membre habitué
Messages : 66
Inscrit le : 22 novembre 2014
Version d'Excel : 2010

Message par MaLuce » 22 novembre 2014, 13:35

Bonjour,

Je travail actuellement sur un fichier qui me permet de piloter des projets. Cependant, je bloque sur un point qui m'empêche de finir la création de ce fichier.

Je m'explique. Mon fichier est donc un tableau qui permet de suivres des projets. A chaque projet son attribués des sous projets.

PROJET 1 (sont ajoutés en colonne C)
---SOUS PROJET 1 (sont ajoutés en colonne D)
---SOUS PROJET 2
PROJET 2
---SOUS PROJET 1

J'ai un formulaire (USF) qui permet d'ajouter les projets. Celui là il est opérationnel et fonctionne très bien. Le formulaire complète ensuite les informations dans un tableau.

Je vous joint un fichier exemple qui explique clairement ma demande.

Merci de votre attention et de votre futur aide,
Fichier exemple pour forum4.xlsm
(35.09 Kio) Téléchargé 115 fois
Mon problème concerne le formulaire (USF) pour les sous projet. Dans ce formulaire, j'ai créer une liste déroulante (ComboBox) afin de choisir le projet auxquel appartient le sous projet.
Ainsi, ce que je souhaite, c'est un code VBA qui permet d'ajouter les données du formulaire dans une nouvelle ligne. Cette nouvelle ligne s'ajouterai juste en dessous de la ligne du projet sélectionné dans la liste déroulante.

L'idée c'est de pouvoir insérer un Sous projet à n'importe quel moment. Car les formulaires complète de défaut la ligne suivante à chaque nouvel validation.
Avatar du membre
galopin01
Passionné d'Excel
Passionné d'Excel
Messages : 6'342
Appréciations reçues : 158
Inscrit le : 18 septembre 2008
Version d'Excel : 2016
Téléchargements : Mes applications

Message par galopin01 » 22 novembre 2014, 14:21

Bonjour,
La bonne méthode consiste à donner un index et un sous-index à tous tes projets. (rajouter 2 colonnes)
Pour le premier projet
index 1: sous index 0
Pour le second projet
index 2: sous index 0
Tous les sous projets auront le même index que le projet parent. mais un sous-index 1, 2...
Ensuite YAPUKA trier sur la colonne index puis sous-index...
Sinon tu vas rapidement enrager ta vie... parce rien ne relie actuellement tes projets et tes sous projets, juste une disposition qui n'est pas très pratique (au sens d'Excel)

A+
M
MaLuce
Membre habitué
Membre habitué
Messages : 66
Inscrit le : 22 novembre 2014
Version d'Excel : 2010

Message par MaLuce » 22 novembre 2014, 14:29

Bonjour,

Merci de vos conseils. J'ai très peu de connaissances en VBA. Mes formulaires j'ai réussi à les réaliser en prenant des bout de codes sur les différents sujet du forum. Du coup, pour cette partie un peu plus technique je sèche complètement et je ne savais pas comment procèder.

J'ai donc, rajouter ces deux colonnes : INDEX et SOUS INDEX au fichier joint.

Comment procèder pour la programmation du formulaire ?

Merci beaucoup,
Fichier exemple pour forum4.xlsm
(35.42 Kio) Téléchargé 66 fois
Avatar du membre
ThauThème
Passionné d'Excel
Passionné d'Excel
Messages : 3'728
Appréciations reçues : 157
Inscrit le : 19 octobre 2014
Version d'Excel : 2010 FR

Message par ThauThème » 22 novembre 2014, 14:38

Bonjour MaLuce, bonsjour le forum,

[Édition] : Entre temps tu as proposé un second fichier... Cette proposition est par rapport au premier fichier.

En pièce jointe ton fichier modifié avec le code ci-dessous :

Private O As Object 'déclare la variable O (Onglet)
Private LI As Long 'déclare la variable LI (LIgne)
Private TEST As Boolean 'déclare la variable TEST

Private Sub UserForm_Initialize()

'********************************************************************************************************
'propriétés de la ComboBox3 modifiées :
'ColumnCount = 2 ==> (2 colonnes  : Colonne 0 et Colonne 1)
'ColumnWidht = ;0 pt ==> (la largeur de la seconde colonne vaut 0 )
'cela signifie que l'on peut stocker deux données dans la ComboBox3 et que la seconde données est cachée
'********************************************************************************************************

Set O = Sheets("Sheet1") 'définit l'onglet O
ComboBox2.List = Array("Investigation", "En cours", "Clôturer")
'Boucle de 3 à la première cellule VIDE de la colonne C
For n = 3 To O.Cells(Application.Rows.Count, 3).End(xlUp).Row
    If O.Cells(n, 3).Value <> "" Then 'condition : si la celule n'est pas vide
        With Me.ComboBox3 'prend en compte la ComboBox3
            .AddItem O.Cells(n, 3).Value 'ajoute la valeur de la cellule dans la colonne 0 de la ComboBox3
            .Column(1, .ListCount - 1) = n 'récupère le numéro de ligne dans la colonne 1 de la ComboBox3
        End With 'fin de la prise en compte de la ComboBox3
    End If 'fin de la condition
Next n 'prochaine cellule de la boucle
End Sub

Private Sub ComboBox3_Change() 'au chagement dans la ComboBox3
With Me.ComboBox3 'prend en compte la ComboBox3
    LI = CInt(.Column(1, .ListIndex)) 'définit la ligne Li
End With 'fin de la prise en compte de la ComboBox3
LI = O.Cells(LI, 3).End(xlDown).Row 'redéfinit la ligne LI en le sous projet suivant
If LI = Application.Rows.Count Then 'condition : si LI est la dernière ligne de l'onglet
    LI = O.Cells(Application.Rows.Count, 2).End(xlUp).Row + 1 'redéfinit LI comme la ligne de la première cellule vide de la colonne B
    TEST = True 'définit la variable TEST
End If 'fin de la condition
End Sub
 
Private Sub CommandButton1_Click() 'bouton "Validation"
'si test est faux insère une ligne vide au niveau de LI, sinon redéfinit test à "FAUX"
If TEST = False Then Rows(LI).Insert Shift:=xlDown Else TEST = False
If TextBox5 = "" Or TextBox2 = "" Then
    MsgBox ("Vous devez remplir les champs")
    Exit Sub
End If
Cells(LI, 2) = ComboBox2
Cells(LI, 4) = TextBox5
Cells(LI, 4).Font.ColorIndex = 4
Cells(LI, 5) = TextBox2
Cells(LI, 6) = TextBox3
Cells(LI, 7) = TextBox4
Cells(LI, 8) = DTPicker1
Cells(LI, 9) = DTPicker2
Unload Me
End Sub
Le fichier :
MaLuce_v01.xlsm
(31.9 Kio) Téléchargé 109 fois
À plus,

ThauTheme


Je suis Charlie
VBA m'éclate, les formules m'ennuient ! Je n'y peux rien c'est comme ça...
M
MaLuce
Membre habitué
Membre habitué
Messages : 66
Inscrit le : 22 novembre 2014
Version d'Excel : 2010

Message par MaLuce » 22 novembre 2014, 18:58

I-M-P-E-C-A-B-L-E =)

C'est exactement ce dont j'avais besoin. Vraiment un très grand MERCI!!! En plus vous avez solutionner le problème des cellules vides dans la liste déroulante de la ComboBox !!
J'ai réussi à adapter la macro pour mon fichier. J'ai fait quelques essais et tout fonctionne bien. Si j'ai un problème je le signalerais :)

En revanche, j'appel mes formulaire avec deux boutons : est il possible de changer la coleur du texte et de fond ? (Dans les proprièté, en mode création j'ai aucune possibilité de modifier ces paramètres).

Encore merci,
Modifié en dernier par MaLuce le 23 novembre 2014, 18:45, modifié 1 fois.
M
MaLuce
Membre habitué
Membre habitué
Messages : 66
Inscrit le : 22 novembre 2014
Version d'Excel : 2010

Message par MaLuce » 23 novembre 2014, 14:09

J'ai réussi, merci beaucoup =)

Tout fonctionne très bien.

Sujet Résolu ! :)
Avatar du membre
galopin01
Passionné d'Excel
Passionné d'Excel
Messages : 6'342
Appréciations reçues : 158
Inscrit le : 18 septembre 2008
Version d'Excel : 2016
Téléchargements : Mes applications

Message par galopin01 » 24 novembre 2014, 17:06

Bonjour,
Pour la route...
Bonne lecture !
Nota : Lors de la première utilisation il est possible que le classeur plante. (C'est lié à la protection anti macro)
Ferme le et réouvre le...
Ensuite tu pourras ouvrir le fichier sans problème.
A+
MaLuce VG.xlsm
(41.12 Kio) Téléchargé 145 fois
M
MaLuce
Membre habitué
Membre habitué
Messages : 66
Inscrit le : 22 novembre 2014
Version d'Excel : 2010

Message par MaLuce » 24 novembre 2014, 22:42

Ouuuah ! Alors là... Je suis imprésionné ! ::o Je ne peux pas dire le contraire, la solution d'avoir qu'un seul USF est géniale. Le mode modification également. Sans oublier les listes déroulantes qui s'incrémentes au fure et à mesure... :o

J'ai bien compris vos remarques concernant la construction des tableaux.

Malheureusement, mon fichier de base est plus compliqué. Par conséquent je n'ais guère le choix à propos des lignes vides et de quelques colonnes inutiles...
Je me suis plongé dans votre code. C'est déjà d'un trop bon niveau pour moi, même si j'arrive non pas sans mal à me situer. ::~

J'aimerai vraiment adapter cette proposition à mon fichier de base. Mais cela nécessiterais de faire des modifications dans la construction du code je pense ;

- L'USF (projet - sous projet) doit pour la création se lancer par un bouton
- La modification peut rester avec cette proposition : c'est TOP !!! (cliquer sur le projet ou sous projet)
- Un sous projet s'inscrit en colonne D
- Un projet s'inscrit en colonne E
(Malheureusement pas le choix pour ceci. Cela facilite la lecture des utilisateurs et permet de faire affichier/masquer les sous projet par un bouton)
- L'USF commence de remplir le tableau à la ligne 12
- Mon USF pour le vrais fichier est un peux plus complexe et permet de complèter d'autres champs.
(Cela ne pose pas problème, je vois comment l'ajouter)

Mon fichier est bien trop lourd, mais je joint des impréssions écrans pour que mes propos soit illustrés. Pour le formulaire, la partie basse est encore en création).
Modifié en dernier par MaLuce le 28 novembre 2014, 10:21, modifié 1 fois.
Avatar du membre
galopin01
Passionné d'Excel
Passionné d'Excel
Messages : 6'342
Appréciations reçues : 158
Inscrit le : 18 septembre 2008
Version d'Excel : 2016
Téléchargements : Mes applications

Message par galopin01 » 24 novembre 2014, 23:27

Bonjour,
Oui j'ai bien vu que tu lorgnais vers les modules de classe...
Malheureusement tu ne pourras guère tirer profit de mon travail, mais si ça peut te donner quelques idées, c'est déjà pas mal...
N'hésite pas à revenir.
Cordialement.
A+
M
MaLuce
Membre habitué
Membre habitué
Messages : 66
Inscrit le : 22 novembre 2014
Version d'Excel : 2010

Message par MaLuce » 25 novembre 2014, 00:40

Bonsoir,

Je vais essayer de me creuser la tête pour l'adapter à mon fichier. Surtout pour ne plus qu'avoir un seule USF !!

Est-il possible de incrémenter les projet dans une colonne et les sous projet dans une autre ?

Eventuellement en passant par deux TextBox :
- Un qui s'affiche quand on sélectionne un projet
- Un autre quand on sélectionne sous projet

Merci, et bravo pour le travail !
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message