Userform pour garnir un tableau

eduraiss

XLDnaute Accro
Bonjour le forum

Voila je voudrais garnir un tableau concernant le formation au poste, un userform me permettra de gagner beaucoup de temps

Je joins un fichier explicatif
Merci

Cordialement
 

Pièces jointes

  • eric1.xls
    336.5 KB · Affichages: 99
  • eric1.xls
    336.5 KB · Affichages: 106
  • eric1.xls
    336.5 KB · Affichages: 96

Excel-lent

XLDnaute Barbatruc
Re : Userform pour garnir un tableau

Bonjour Eduraiss,

Le plus dur, c'est faire le code VBA qui fais fonctionner ton UserForm, cela je peux te le faire si tu le souhaite. Par contre la création de l'UserForm, c'est super simple, je vais donc te donner quelques tuyaux et te laisser faire. C'est en forgeant qu`on devient forgerons ;)

Comment faire une UserForm :

-> aller dans l'éditeur de macro : lorsque tu es sur ta feuille excel, appuyer sur "ALT" + "F11"

-> créer une nouvelle UserForm : cliquer sur le menu en haut "insertion" / "UserForm"

-> rajouter un titre, des explications (appelé aussi zone de texte) :
--------* cliquer dans la boite à outil sur le symbole "A" (lorsque tu laisse ton curseur dessus quelques secondes il écrit "Intitulé". Puis dessiner à l'aide du curseur un rectangle (comme sur un logiciel de dessin, partir d'un coin, clic gauche, laisser appuyer sur le clic, faire descendre la souri en diagonale jusqu'à l'angle opposé).
--------* tu vois écris à l'intérieur "Labelx", pour remplacer ce mot par le mot ou la phrase de ton choix, dans la zone en bas à gauche de ton écran : zone appelé "Propriété Labelx", aller sur la ligne "Caption" et écrire en face ton mot ou ta phrase.

-> création des cases à cocher : dans la boite à outils cliquer sur le symbole "un rectangle (et non pas un rond) blanc avec une coche à l'intérieur". Puis comme précédement, tu dessine la zone où le mettre sur ton UserForm en partant de l'angle ...

-> lorsque tu fais un clic sur chaque zone ajouté : "titre", "explication", "case à cocher", ... ta zone en bas à gauche "Propriété" représentera les propriétés de l'élément cocher. Tu verras dans la liste des propriétés plusieurs zones qui peuvent t'intéresser :

--------* BackColor : c'est la couleur de fond
--------* BorderColor : c'est la couleur de la bordure
--------* Font : c'est la police de caractére
--------* ForeColor : c'est la couleur de la police
--------* TextAlign : c'est l'alignement de ton texte -> aligné à droite, gauche, centré
Voici pour les rpincipales

-> si tu sélectionne l'UserForm, lorsque tu changera la "BackColor", ce sera la couleure de fond de ton UserForm ;)

-> pour la création des boutons "Valider", "Annuler", dans la boite à outils sélectionner le rectangle en trois dimensions (le dernier symbole à droite de la seconde ligne)

Je te laisse faire ton UserForm, et lorsque tu auras fini envoie nous ça. Ainsi nous pourrons :

-> en fonction de UserForm, te donner des conseils pour t'améliorer un peu plus
-> écrire le code VBA qui fera fonctionner ton UserForm et remplira ta feuille Excel.

Bonne après midi
Cordialement
 
Dernière édition:

eduraiss

XLDnaute Accro
Re : Userform pour garnir un tableau

Re

Merci pour ta réponse
voici la création de l'userform, mais pour les code je ne sais pas faire

Merci cordialement
 

Pièces jointes

  • eric1.xls
    350.5 KB · Affichages: 83
  • eric1.xls
    350.5 KB · Affichages: 84
  • eric1.xls
    350.5 KB · Affichages: 79

Hulk

XLDnaute Barbatruc
Re : Userform pour garnir un tableau

Hello Eduraiss, Excel-lent :), Forum,

Plutôt que d'utiliser trop de CheckBox, utiliser une ListBox avec des CheckBox incluses.

La plage de formation que j'ai mis, est "O2:CZ2", mais tu pourras la modifier facilement si besoin.

Choisir un nom, puis côcher les formations voulues puis cliquer sur le bouton "Valider".
"1" pour les formations côchées et "0" pour les formations non côchées.

À part ça, j'essaie de faire le sens inverse, à savoir que si on choisit un nom qu'il amène toutes les formations avec leurs valeurs, pour que tu ailles l'ensemble des formations faites, mais je bloque !
J'espère qu'un pro va se pencher dessus pour compléter la chose... suis curieux :cool:

À suivre...
 

Pièces jointes

  • eric2.xls
    361.5 KB · Affichages: 108
  • eric2.xls
    361.5 KB · Affichages: 110
  • eric2.xls
    361.5 KB · Affichages: 115
Dernière édition:

Excel-lent

XLDnaute Barbatruc
Re : Userform pour garnir un tableau

Bonsoir Eduraiss,

Quelques astuces supplémentaires concernant la création de ton UserForm :

-> lorsque tu sélectionne ton UserForm, il est important de remplacer "UserForm1" situé sur la ligne propriété "Caption" car il s'agit du titre de ton UserForm. Titre visible dans le bandeau bleu situé en haut de ton UserForm ;)

-> concernant le bouton situé sur ta feuille Excel, si tu veux un résultat visuel plus sympa :
------* faire un dessin, insérer une image, faire une forme automatique, ...
------* travailler la mise en forme de cette objet : couleur de fond, bordure, ...
------* sélectionner le dessin, l'image, ...
------* laisser ton curseur dessus, faire un clic droit : "affecter une macro..."
------* dans la liste sélectionner la macro
------* valider en cliquant sur ok!

-> pour le code VBA, comme tu pourras le voir ci-joint, j'ai essayé d'expliquer le code au maximum pour que tu puisse l'adapter facilement à ton cas de figure précis.

Bonne fin de soirée
Edition : Bonsoir Hulk
 

Pièces jointes

  • eric1.xls
    377 KB · Affichages: 82
  • eric1.xls
    377 KB · Affichages: 89
  • eric1.xls
    377 KB · Affichages: 83

Excel-lent

XLDnaute Barbatruc
Re : Userform pour garnir un tableau

Salut Hulk,

J'ai dépioté ton fichier, excellent l'astuce de la ListBox cochable!

Si je peux me permettre une remarque, à la fin de ta macro tu as oublié de mettre le code :
pour que lorsqu'on clique sur le bouton "Valider", l'UserForm se referme et rende la main.

A moins que tu es voulu laisser la possibiliter à l'utilisateur de faire plusieurs nom à la suite? Dans ce cas au lieu du mot "Annuler" sur le 2ème bouton, j'aurais mis à la place "Quitter" ou "Fin de la saisie".

Au plaisir de relire tes codes sympa et originaux.
A+
 

eduraiss

XLDnaute Accro
Re : Userform pour garnir un tableau

Bonsoir le forum

Merci a vous deux pour vos explications, je n'ai pas bien regardé les deux fichiers en exemple mais sur celui de hulk je m’aperçois que lorsque je coche une formation et je valide pas de problème ça marche
mais lorsque sur la même personne je coche une nouvelle formation cela efface la première.

Merci beaucoup, je regarderais tout cela demain

Cordialement
 

Excel-lent

XLDnaute Barbatruc
Re : Userform pour garnir un tableau

Salut Hulk,

Excellent l'astuce de la ListBox cochable!

Si je peux me permettre une remarque, à la fin de ta macro tu as oublié de mettre le code :
pour que lorsqu'on clique sur le bouton "Valider", l'UserForm se referme et rende la main.

A moins que tu es voulu laisser la possibilité à l'utilisateur de faire plusieurs nom à la suite? Dans ce cas au lieu du mot "Annuler" sur le 2ème bouton, j'aurais mis à la place "Quitter" ou "Fin de la saisie".

J'ai tellement aimé ton astuce que je n'ai pu m'empêcher de dépiauter et tester ton code.

J'en ai profité (cf. ci-joint) pour rajouter ce point :
-> lorsqu'on a finis de saisir le 1er nom sélectionné et qu'on passe au second, toutes les cases sont à nouveau décoché (car avec ta version, les coches du bonhomme précédent resté).

Et modifier cela :
Tu as mis "With ListBox1... End With" mais tu ne t'en servais pas à l'intérieur. Je me suis donc permis de remplacer tous les "ListBox1" par des "." entre les deux balises.

À part ça, j'essaie de faire le sens inverse, à savoir que si on choisit un nom qu'il amène toutes les formations avec leurs valeurs, pour que tu ailles l'ensemble des formations faites, mais je bloque !

Je vais essayer de résoudre ce point mais je ne garanti rien :


Au plaisir de relire tes codes sympas et originaux.
A+
 

Pièces jointes

  • eric3.xls
    383 KB · Affichages: 73
  • eric3.xls
    383 KB · Affichages: 71
  • eric3.xls
    383 KB · Affichages: 69
Dernière édition:

Excel-lent

XLDnaute Barbatruc
Re : Userform pour garnir un tableau

Bonsoir Hulk, Eduraisss, le fil,

Hulk à dit:
À part ça, j'essaie de faire le sens inverse, à savoir que si on choisit un nom qu'il amène toutes les formations avec leurs valeurs, pour que tu ailles l'ensemble des formations faites, mais je bloque !
J'espère qu'un pro va se pencher dessus pour compléter la chose... suis curieux

Je suis très loin d'être un pro, pour preuve, cette après midi je ne connaissais pas du tout tous ces codes bizarre :
-> ListBox1.ListCount - 1
-> ListBox1.Selected(n)
-> ListBox1.ListStyle = fmListStyleOption
-> ListBox1.MultiSelect = fmMultiSelectMulti
-> ListBox1.Column

Je ne savais même pas qu'on pouvez insérer dans une ListBox des case à cocher!
Encore merci à toi de m'avoir fait découvrir ce gadget très sympa et fort utile.

En remerciement, voici ci-joint ton voeux exaucé.

Bonne fin de soirée à tous
 

Pièces jointes

  • eric4.xls
    386.5 KB · Affichages: 89
  • eric4.xls
    386.5 KB · Affichages: 92
  • eric4.xls
    386.5 KB · Affichages: 98
Dernière édition:

Hulk

XLDnaute Barbatruc
Re : Userform pour garnir un tableau

Re,

Bestial Excel-lent, tu portes bien ton pseudo ! Merci pour le nettoyage et pour le code de la ComboBox, me faisait ch... à faire des trucs pas possible et c'est finalement pas si complexe ;)

Idem pour moi, je connais la ListBox depuis que je connais Excel, mais je ne l'utilise presque jamais, donc peu de connaissance.

Cela dit, je n'ai toutefois pas bien compris le Colonne -15 dans...
Code:
    For Colonne = 15 To 104
        If Cells(Lign, Colonne) = 1 Then
            ListBox1.Selected(Colonne - 15) = True
        Else
            ListBox1.Selected(Colonne - 15) = False
        End If
    Next Colonne
Pourquoi -15 :confused:
Je sais bien que 15 est le départ, mais :confused:

Parfois la logique m'échappe... Surtout si tard :cool:
 

patoq

XLDnaute Occasionnel
Re : Userform pour garnir un tableau

Bonsoir hulk,bonsoir le forum

Une petite question m'enrhume le cerveau : est il possible de faire cette liste de cases a cocher sur deux colonnes (en cas de liste longue).
De plus pour les intitulés des cases tu as pris une ligne entière ,peut on selectionner une colonne a la place (j'ai essayé ça marche pas ,bon OK suis un peu naze ...)

Merci d'avance pour vos réponses
A pus
 

Excel-lent

XLDnaute Barbatruc
Re : Userform pour garnir un tableau

Hulk à dit:
Cela dit, je n'ai toutefois pas bien compris le Colonne -15 dans...
Code:
For Colonne = 15 To 104
         If Cells(Lign, Colonne) = 1 Then
                ListBox1.Selected(Colonne - 15) = True
         Else
                ListBox1.Selected(Colonne - 15) = False
         End If
Next Colonne

Pourquoi -15 :confused:
Je sais bien que 15 est le départ, mais :confused:

Parfois la logique m'échappe... Surtout si tard :cool:

En faite... je l'avoue... parfois j'ai un poil dans la main :D
Au lieu de créer une variable pour chaque chose (rendant le code plus claire, mais plus long), j'utilise la même pour deux choses distincts (à l'aide d'une petite formule mathématique : "-15")

Au départ j'ai créé la variable "Colonne" pour mettre dans cette variable le numéro de la colonne du tableau Excel.
Le tableau commence à la colonne "O" = 15 (car 15ème colonne)
et se termine à la colonne "CZ" = 104 (car 104ème colonne)

Ensuite il me fallait une variable dans laquelle mettre le numéro de la ligne sélectionné dans la ListBox. Or :
-> dans le tableau Excel : 1ère colonne qui nous intéresse, la colonne "O" = 15 ème colonne
-> dans la ListeBox : la ligne qui correspond à cette colonne est la ligne 0

-> dans le tableau Excel : 2nd colonne qui nous intéresse, la colonne "P" = 16 ème colonne
-> dans la ListeBox : la ligne qui correspond à cette colonne est la ligne 1

-> dans le tableau Excel : 3ème colonne qui nous intéresse, la colonne "Q" = 17 ème colonne
-> dans la ListeBox : la ligne qui correspond à cette colonne est la ligne 2

-> ...

Bref, entre les deux variables il y a tout le temps un écart de 15. D'où le (Colonne - 15) ;)

Ce qui m'évite ainsi de créer deux variables, mais également d'imbriquer une éième boucle supplémentaire... et cela juste pour incrémenter cette fameuse seconde variable.

Ainsi si Eduraisss veut changer le nombre de colonne à traiter, il aura une variable de moins à gérer, un boucle de moins à décortiquer, bref 2 fois moins de chance de se tromper en l'adaptant à son cas personnel.

Mon écrit est plus clair que mon code?

Je me déconnecte pour de bon, à demain soir.
 

Excel-lent

XLDnaute Barbatruc
Re : Userform pour garnir un tableau

Salut Patoq,

patoq à dit:
est il possible de faire cette liste de cases a cocher sur deux colonnes (en cas de liste longue)

Voici le mieux que j'ai réussi à faire, cf. ci-joint.

Comme tu peux le voir, lorsque la liste est trop longue, on peut scinder une ListBox en plusieurs colonnes, mais lorsqu'on sélectionne un élément, Excel sélectionne TOUTE la ligne. Idem pour la case à cocher! Il y a une case par ligne! :mad: :mad::mad:

Mais franchement, tu ne trouve pas que même sous forme de tableaux, devoir cocher parmi plus de 80 formations c'est agréable et facile pour l'utilisateur? Je trouve que c'est source à erreur.

Personnellement je trierais les formations par catégories, DANS l'UserForm je mettrais un onglet par catégorie, et dans chaque onglet je ferrais des sous-catégories. Et j'aurais donc ainsi une ListBox par "sous-catégorie", ce qui ferrais environ une 15aine de choix par ListBox, tout à fait raisonnable non?

(inconvénient d'une telle méthode, l'opérateur de saisie devra connaître les catégories, mais une fois assimilé il gagnera un temps fou)

Sinon faire un onglet par corps de métier, avec les formations associés? Ainsi l'opérateur de saisie ne sera pas inondé de formation qui n'ont rien à voir avec le salarié sélectionné?

On peut pousser l'idée plus loin. Rajouter dans le tableau une colonne "corps de métier", ainsi lorsqu'on choisira le salarié ... excel connaîtra son corps de métier, donc il positionnera (par défaut) l'UserForm directement sur l'onglet qui contient les formations de cette profession?

Mais c'est clair, en faisant ainsi, la création de l'UserForm sera TRES longue, mais très simple et rapide à utiliser.

Alors que la solution développé avec Hulk est une pure merveille à créer et coder (personnelement je me suis éclaté), mais je pleins l'opérateur de saisie.

Or, on construit le fichier UNE seule fois, alors que l'opérateur de saisie va l'utiliser des CENTAINES de fois. Donc mieux vaut-il pas privilégier ce dernier? Non?

Excel-lent en mode Philosophique ce soir! LOL

A+
 

Pièces jointes

  • ComboboxLigneSélectionné et case coché 2.xls
    53 KB · Affichages: 92

patoq

XLDnaute Occasionnel
Re : Userform pour garnir un tableau

Salut Excel-lent,
Quelle belle explication ,simple et limpide . C'est clair que la solution de Hulk est une merveille!!!:p
Je vais essayer de m'atteler a faire 2 listbox cote a cote et essayer de rendre le tout transparent (on aura l'impression qu'il n'y en auras qu'une).
De plus ce serait sympa si on pouvait mettre les intitulés des checkbox en colonne dans la feuille ,cela éviterait de tirer jusqu'a CZ dedans(on peut les masquer au pire!!).

A plus et merci j'en apprends tous les jours.:cool::cool::cool::cool:
 

patoq

XLDnaute Occasionnel
Re : Userform pour garnir un tableau

Re,
Bon j'ai refait le fichier et hop ça marche avec 3 lisbox cote a cote.
Le hic c'est qu'au démarrage de l'user on ne peut regarder les formations deja acquises . Cela ne marche qu'aprés modification d'une formation pour une personne. Je pense que cela est lié au combobox_change ,il faudrait qu'a l'initialize du userform on puisse consulter.
Voila ,a plus
 

Pièces jointes

  • Cases a cocher2.xlsm
    40.9 KB · Affichages: 102

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 321
Messages
2 087 265
Membres
103 501
dernier inscrit
talebafia