Forum Clubic

Besoin d'aide pour la réalisation d'un projet tout simple pour un cours

Bonjour,
Je dois réaliser un projet simple pour mon cours d’info avec VBA…mais le peut de cours ne me permet
d’y arriver…
Mon projet :
Un fichier excel permettant de répertorier pour chaque élève : Notes, absences , retards.
Soit 3 feuilles différentes ou en remplissant un formulaire cela rempli des tableaux.
Créer les tableaux sur excel jy arrive, mettre en forme le formulaire j’y arrive mais je suis perdu pour tout le reste…
Aidez moi svp

Si tu n’es pas un peu plus explicite, tu ne vas pas trouver beaucoup d’aide …
entre autres :

  • Est-ce que tu as des contraintes (ou est-ce que tu as fait ton choix) concernant les tableaux ?
    Autrement dit qu’est-ce que tu mets en ligne, qu’est-ce que tu mets en colonne ?

  • Pour le formulaire, tu as choisi quoi ? une nouvelle feuille, un userform ?
    Tu as un formulaire unique ou un pour chaque type d’évènement ?

  • Et est-ce que ton projet se limite à une simple saisie de nouveaux éléments, ou doit-il aussi gérer la modification/suppression de notes/absences/retards ?

Alors,je vais essayer de texpliquer le mieu possible :

J’ai 4 feuilles :
[b]

  • Notes[/b]
    colone :
    Date/Matière/Note/Module validé/Module non validé

j’ai crée un userform : frmNote
(COmboBox1) une liste déroulante modifiable pour le choix de la matière
(TextBox2) une textbox pour la date
(ListBox1) une Listbox pour la note (A,B,Cn,Ca,D)
(Commandbutton1) un bouton “Valider”.J’aimerais avoir un bouton qui ouvre ce formulaire et qu’une fois remplis le clic sur valider me permet d’ajouter une nouvelle note dans le tableau sans effacer les précédentes.

(Après si c’est possible j’aimerais que les notes se trient par valeur puis par date…mais ca c’est juste un artifice…)

[b]

  • Absences :[/b]
    Colones:
    Date/Matière/Début cours/Fin du cours/Motif/Nombre d’heure raté(celle la doit se calculer toute seul…aucune entrée dans le formulaire, elle doit se déduire de début cours à fin cours…)

j’ai crée un autre userform : frmAbsence
(TextBox1)un textbox pour la date
(ComboBox1) une combobox pour la matière
(ComboBox2) une combobox pour l’heure de début du cours
(ComboBox3) une combobox pour l’heure de fin du cours
(Textbox6) une textbox pour le motif
(Commandbutton) une bouton valider

D’autre part il faudrait un calcul qui déduise le nombre d’heure de cours raté en fonction de l’heure de début et l’heure de fin.

-Retards
Colones:
Date/Matière/Début cours/Fin du cours/Tps de retard/Motif/Autorisé en classe/heure d’arriver(celle la doit se calculer toute seul…aucune entrée dans le formulaire, elle doit se déduire de l’heure du début cours + tps de retards…)

j’ai crée un autre userform : frmRetards
(TextBox1)un textbox pour la date
(ComboBox1) une combobox pour la matière
(ComboBox2) une combobox pour l’heure de début du cours
(ComboBox3) une combobox pour l’heure de fin du cours
(TextBox5) une Textbox pour le tps de retard
(OptionButton1)oui et (OptionButton2)non pour l’autorisation d’entré en cours.
(Textbox6) une textbox pour le motif
(Commandbutton1) une bouton valider

D’autre part il faudrait un calcul qui déduise le nombre d’heure de cours raté en fonction de l’heure de début et Le temps de retard.

  • Bilan
    colonne : Matière/Note/Absence/Retard
    Il faudrait que ce tableau donne un bilan de chaque matière.

Merci beaucoup de votre aide c’est vraiment gentil

Il n’y a aucune référence au nom, c’est normal ?

Oui c’est normal, mais c’est vrai que l’on pourrait ajouter une case nom dans chaque tableau…

Si ce n’est pas indispensable, autant ne pas compliquer pour rien

Si j’ai bien compris, chaque appui sur le bouton valider va te rajouter une ligne à la fin de ton tableau dans la feuille Note.
Pour cela, il faut que tu écrives ton code dans l’évènement click de CommandButton1
Pour le code proprement dit, le plus pratique est de travailler à partir d’un objet range qui te servira de référence :
tu pars de la cellule en haut à gauche de ton tableau (la première cellule de ta ligne de titres). La ligne de code devrait être du genre
set R = range(“A3”)
tu cherches ensuite la première ligne non utilisée sous le tableau *
set R=R.end(xldown).offset(1)
et là, tu écris tes valeurs
R.value=me.ListBox1.value
R.offset(0,1).value = me.Combobox1.value etc.
Tu aurais certainement intérêt à renommer tes objets pour plus de clarté.

  • attention : pour que cette méthode de recherche du bas de tableau fonctionne, il faut qu’il existe au moins une ligne de données réelles sous la ligne de titres. Je te laisse écrire le test et le positionnement dans le cas contraire (le remplissage est identique)

Il suffit d’ajouter le tri en fin de code.
Pour la méthode, tu crées une macro automatique, où tu effectues la sélection et le tri qui t’intéressent
Après tu regardes le code généré et tu t’en inspires pour finaliser le tien.

Le traitement des autres feuilles se déduit plus ou moins de celle-ci. Tu as donc intérêt à procéder par étapes, et à ne les commencer que quand celle-ci sera bien au point.

Re dsl pour le tps…
J’ai réussi a faire marcher mes formulaires.
Néanmoins j’ai un peu pb avec les combobox (elle indique les mot ki existe déja dans la colone mais kan je clik dessus rien ne se passe, ca ne le selectione pas…)

j’ai écrit ca ds le formulaire :
(ce n’est pas un copier coller)

Private Sub combobox1_change()
Sheets(“Absences”).select
Range(“C2”).select
frmAbsences.combobx1.clear (pour pas avoir plusieur fois les mot de la colonne ds la liste déroulante)
Do while Activecell<>""
frmAbsences.combobox1.Additem Activecell
Activecell.offset(1,0).Activate
Loop
End sub

D’autre part j’aimerais savoir comment jpeux trier les donnée de mon tableau en fonction de plusieur étape:
ex pour la feuille note, jaimerais avoir les notes classer par nom, par matière et par date…

Encore merci de ton aide

Normalement, tu n’as pas de code à écrire pour l’évènement change de ta combobox
L’initialisation des valeurs telle que tu la décris devrait se faire à l’initialisation du formulaire
Et ensuite la prise du contenu choisi se fait par le clic sur le bouton de validation

Pour le tri, sous excel, tu fais données > trier ; tu verras que tu peux choisir jusqu’à trois critères, ça defvrait te convenir
Tu enregistres ta manoeuvre dans une macro automatique, et à la sortie tu récupèreras la ligne de code à insérer en fin de ta fonction.

Le truc c’est que ma combobox doit aller chercher dans mon tableau les données ki existe déja pour pas écrire la même chose différament.Mais faut pas aussi qu’elle me remette tous a chaque fois que je valide, tu comprends où je veux en venir?

J’ai réussi pour le tri merci beaucoup.

Qu’elle procédure faut écrire pour que lorsque je valide un ajout de note ca me fasse des bordures autour de chaque case de ma ligne…

Encore merci

Je pensais que tu refermais ton formulaire après chaque validation.
Sinon, ce que tu peux faire, c’est effacer/recharger la combobox avec les nouvelles valeurs en fin de code du bonton validation

Edit :
Je n’ai pas très bien compris le coup des bordures. C’est uniquement pour la ligne active ou elles doivent rester ensuite ?
Toujours la même méthode : format cellule etc. que tu enregistres dans une macro automatique et ensuite édition du code
Edité le 18/05/2010 à 19:32