Tableau excel avec insertion d'une ligne automatique comme le fait ACCESS

ATHE RIOVELI

XLDnaute Occasionnel
Salut à tous,
Je reviens encore auprès de vous les amis afin d'avoir une solution à ce problème qui me hante depuis quelques mois.
Je suis étudiant. J'ai fait un tableau excel qui permette aux enseignants de gérer le calcul des moyennes de leurs élèves. Mon problème actuellement, je souhaite qu'a chaque fois le professeur entre le nom d'un élève et tape Entrer, il puisse avoir insertion automatique d'une nouvelle ligne. C'est ce que fait ACCESS.
s'il vous plait les amis, j'ai grand besoin de votre aide.
[SUP][/SUP]
 

Pièces jointes

  • MGT.xlsx
    39.8 KB · Affichages: 78

ATHE RIOVELI

XLDnaute Occasionnel
Re : Tableau excel avec insertion d'une ligne automatique comme le fait ACCESS

Salut JOBS75.
regarde le fichier que je joint.
il y une nouvelle feuille " BILAN ANNUEL", je souhaite le même processus des autres feuilles trim2, trim3 puisse avoir lieu sur cette feuille.
MILLE FOIS MERCI.
 

Pièces jointes

  • CALCUL MOY(1).xlsm
    56.1 KB · Affichages: 80
  • CALCUL MOY(1).xlsm
    56.1 KB · Affichages: 80

ATHE RIOVELI

XLDnaute Occasionnel
Re : Tableau excel avec insertion d'une ligne automatique comme le fait ACCESS

BONSOIR JOBS75.
Je joint le dernier fichier que tu viens de gérer, il est parfait.
Régarde maintenant sur la feuille "BILAN ANUUEL". Je veux qu'elle se comporte exactement comme les autres (trim2 et trim3).
MERCI SURTOUT POUR LA RAPIDITE AVEC LAQUELLE TU ME REPOND.
 

Pièces jointes

  • CALCUL MOY(2).xlsm
    56.8 KB · Affichages: 72
  • CALCUL MOY(2).xlsm
    56.8 KB · Affichages: 77

job75

XLDnaute Barbatruc
Re : Tableau excel avec insertion d'une ligne automatique comme le fait ACCESS

Re,

Pour la feuille "BILAN ANNUEL" c'est nettement plus compliqué.

En effet il faut pour chaque élève faire la somme, dans toutes les feuilles, de toutes les notes, des totaux des notes et des coefficients utilisés (j'ai ajouté une colonne "TOTAL COEF").

Bien voir qu'un élève peut être présent un trimestre et absent dans un autre, de même il peut manquer des notes.

Le code de la feuille "BILAN ANNUEL" est assez conséquent :

Code:
Private Sub Worksheet_Activate()
If ListObjects.Count = 0 Then Exit Sub
Dim br As Range, d As Object, w As Worksheet, i&
Dim a, ncol%, tablo(), lig As Variant, j%
Set br = ListObjects(1).DataBodyRange
Application.ScreenUpdating = False
br.Offset(1).EntireRow.Delete 'RAZ
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
'---liste des élèves sns doublon---
For Each w In Worksheets
  If LCase(w.Name) Like "#*trim*" Then
    With w.ListObjects(1).DataBodyRange
      For i = 2 To .Rows.Count
        d(.Cells(i, 2).Value) = ""
      Next i
    End With
  End If
Next w
If d.Count = 0 Then Exit Sub
'---création du tableau---
a = d.keys
ncol = br.Columns.Count - 4 '-1 colonne au début et -3 à la fin
ReDim tablo(1 To UBound(a) + 1, 1 To ncol)
For i = 1 To UBound(tablo)
  tablo(i, 1) = a(i - 1)
  For Each w In Worksheets
    If LCase(w.Name) Like "#*trim*" Then
      With w.ListObjects(1).DataBodyRange
        lig = Application.Match(a(i - 1), .Columns(2), 0)
        If IsNumeric(lig) Then
          For j = 2 To ncol
            If IsNumeric(CStr(.Cells(lig, j + 1))) Then _
              tablo(i, j) = tablo(i, j) + .Cells(lig, j + 1)
          Next j
        End If
      End With
    End If
  Next w
Next i
'---restitution---
[MOYENNES].EntireRow.Resize(UBound(tablo)).Insert
br(2, 2).Resize(UBound(tablo), ncol) = tablo
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If ListObjects.Count = 0 Then Exit Sub
'---décale les moyennes---
With ListObjects(1).DataBodyRange
  If .Rows(.Rows.Count).Row + 1 = [MOYENNES].Row Then
    [MOYENNES].EntireRow.Insert
    [MOYENNES].EntireRow(0).ClearFormats 'efface la ligne précédente
  End If
End With
End Sub
La macro Worksheet_Activate complète le tableau quand la feuille est activée.

Fichier (3).

Bonne soirée.
 

Pièces jointes

  • CALCUL MOY(3).xlsm
    69.3 KB · Affichages: 77

job75

XLDnaute Barbatruc
Re : Tableau excel avec insertion d'une ligne automatique comme le fait ACCESS

Re,

Il faut quand même noter que dans la feuille "BILAN ANNUEL" les moyennes calculées de la colonne C à la colonne S n'ont guère de sens s'il manque des notes certains trimestres.

Seule la moyenne calculée en colonne V a un sens.

A+
 

job75

XLDnaute Barbatruc
Re : Tableau excel avec insertion d'une ligne automatique comme le fait ACCESS

Re,

Compte tenu de ce que je viens de dire il vaut mieux utiliser ce fichier (4).

Dans la feuille "BILAN ANNUEL" la plage de la moyenne est maintenant nommée MOYENNE_GENERALE.

Edit : si les coef peuvent changer d'un trimestre à l'autre, supprimer leur ligne dans la feuille "BILAN ANNUEL".

A+
 

Pièces jointes

  • CALCUL MOY(4).xlsm
    69.9 KB · Affichages: 89
Dernière édition:

ATHE RIOVELI

XLDnaute Occasionnel
Re : Tableau excel avec insertion d'une ligne automatique comme le fait ACCESS

Bonsoir job75.
Je vais d'abord commencer par te dire infiniment merci pour tout ce temps que tu met à m'expliquer et à concevoir ces macros.
J'assure que depuis que je suis sur cette terre des hommes, je n'est jamais connu quelqu'un qui prend tout son temps à vouloir forcement résoudre les problèmes des autres. J'ai appris beaucoup en si peu de temps.
Permet moi encore de te déranger. C'est avec les macros que c'est un peu difficiles pour moi, sinon, je n'ai aucun problème pour gérer tout ce qui est du niveau des calculs lorsque je suis directement sur la feuille excell.
Le gros problème, actu sur ce nous fichier "CALCUL MOY(3)" que tu viens de réaliser, c"est que :
_ 1) Lorsqu'on entre un nom sur la feuille trim1, lorsqu'on l’efface, le tracer reste toujours.
Si j'ai la possibiltié de modifier la formule directement sur la feuille, on peut regler cela. Alors je démande : est ce les macros empèche des mises en formes conditionnelle puissent se faire direcrtement? je veux dire sans passer par les macros.
_2) Lorsqu'on entre un nom, la touches "retour" ou "avancer" ne fonctionne plus. On peut donc revenir lorsqu'on se trompe de nom.
MERCI ENORMEMENT MON FRERE job75
 

ATHE RIOVELI

XLDnaute Occasionnel
Re : Tableau excel avec insertion d'une ligne automatique comme le fait ACCESS

BONSOIR job75.
Comme tu l'as fait en mettant des formules directement dans A13, A14 , est ce qu'on peut sans macros reproduire ce fichier de sorte lorsqu'on efface le nom, le numeros disparait automatiquement?
Exemple:
A12=SI(B12="";"";1)
A13=SI(B13="";"";A12+1)
Cela, dès que B13 est vide, la cellule A13 est également vide.
Pour ce qui est des calculs, on peut gérer ça après, mais avant, merci pour le code sur le BILAN ANNUEL,
 

job75

XLDnaute Barbatruc
Re : Tableau excel avec insertion d'une ligne automatique comme le fait ACCESS

Bonjour ATHE RIOVELI, le forum,

Voyez ce fichier(5), j'ai pas mal remanié les codes.

1) Dans "1er Trim" j'ai ajouté ce code :

Code:
'---suppressions aux 2ème et 3ème trimestres si des noms d'élèves sont modifiés/supprimés---
If Not Intersect(Target, br(1, 2).EntireColumn) Is Nothing Then
  Application.ScreenUpdating = False
  Set memsel = Selection
  Application.Undo 'annule la modification
  memlist = ListObjects(1).DataBodyRange.Columns(1).Resize(, 2) 'au moins 2 éléments
  Application.Undo 'rétablit la modification
  memsel.Select
  Application.ScreenUpdating = True
  For i = 2 To UBound(memlist)
    If IsError(Application.Match(memlist(i, 2), br.Columns(2), 0)) Then
      For Each w In Worksheets
        If LCase(w.Name) Like "2*trim*" Or LCase(w.Name) Like "3*trim*" Then
          With w.ListObjects(1).DataBodyRange
            j = Application.Match(memlist(i, 2), .Columns(2), 0)
            If IsNumeric(j) Then .Rows(j).EntireRow.Delete
          End With
        End If
      Next
    End If
  Next
End If
J'ai fait de même dans "2èm Trim" avec un code similaire.

Ces codes assez lourds suppriment les lignes des trimestres suivants quand on modifie ou supprime un nom d'élève.

2) Dans Module1 les variables Public flag1 et flag2 bloquent les macros Worksheet_Change.

3) Dans "BILAN ANNUEL" j'ai ajouté un tri alphabétique sur les noms.

4) Enfin comme vous le demandez j'ai modifié la formule en A12 :

Code:
=SI(LIGNES(A$11:A11)=1;0;SI(B12="";"";A11+1))
Bonne journée.
 

Pièces jointes

  • CALCUL MOY(5).xlsm
    75.6 KB · Affichages: 51
  • CALCUL MOY(5).xlsm
    75.6 KB · Affichages: 48
Dernière édition:

job75

XLDnaute Barbatruc
Re : Tableau excel avec insertion d'une ligne automatique comme le fait ACCESS

Re,

Au post #21 vous parliez de Mise en forme conditionnelle (MFC).

Si c'est pour visualiser les doublons de noms il vaut mieux les effacer ainsi :

Code:
'---efface les doublons, recopie le nom de l'élève dans la feuille du 2ème trimestre---
Set P = Intersect(Target, br.Columns(2))
If Not P Is Nothing Then
  For Each r In P
    If Application.CountIf(br.Columns(2).Offset(1), r) > 1 Then _
      r.Select: MsgBox "Doublon !", 48: r = ""
  Next
'-----
Fichier (6).

A+
 

Pièces jointes

  • CALCUL MOY(6).xlsm
    77.4 KB · Affichages: 47
  • CALCUL MOY(6).xlsm
    77.4 KB · Affichages: 55
Dernière édition:

ATHE RIOVELI

XLDnaute Occasionnel
Re : Tableau excel avec insertion d'une ligne automatique comme le fait ACCESS

bonsoir job75.
C'est juste ce que je voulais, mais encore un soucci dans le fichier CALCUL MOY(6).
1) lorsqu'on continue le remplissage, la feuille 3èm trim ne continue plus l’insertion automatique de ligne comme le font les autres feuilles.
2) sur la feuille trim1, lorsqu'on commence à supprimer les noms (en commençant par le dernier mis), il y a deux soucis:
- les traits et couleurs au niveau de trim1 ne disparaissent pas. (au niveau de trim2 et BILAN, ils disparaissent. Ce qui est vraiment intéressant).
- la feuille trim3 ne fait pas réagit pas.
Voici les deux exemples. (trim3 c'est ausi 3ème trim)
 

Pièces jointes

  • CALCUL MOY(6).xlsm
    74.3 KB · Affichages: 45
  • CALCUL MOY(6).xlsm
    74.3 KB · Affichages: 42
  • CALCUL MOY(6).xlsm
    72.2 KB · Affichages: 38
  • CALCUL MOY(6).xlsm
    72.2 KB · Affichages: 40

job75

XLDnaute Barbatruc
Re : Tableau excel avec insertion d'une ligne automatique comme le fait ACCESS

Re,

Il y avait une coquille dans le fichier (6) du post #24, je viens de corriger, testez-le à nouveau.

Dans les 3 feuilles des trimestres si l'on efface un nom le tableau ne se redimensionne pas, c'est tout à fait normal, donc les couleurs de la ligne (et les notes qu'on a pu y mettre) demeurent.

Si l'on veut que le tableau se redimensionne il faut tout simplement sélectionner toute la ligne et la supprimer (clic droit).

A+
 

job75

XLDnaute Barbatruc
Re : Tableau excel avec insertion d'une ligne automatique comme le fait ACCESS

Re,

Maintenant pour répondre à votre question sur les MFC, oui on peut en créer dans les tableaux.

Voyez le fichier joint où les doublons ne sont pas effacés mais signalés par la couleur rouge d'une MFC.

La MFC est appliquée sur la 2ème colonne du tableau commençant en B12 (masquée).

Formule =NB.SI(B$11:B11;B12)

Bonne soirée.
 

Pièces jointes

  • CALCUL MOY avec MFC(1).xlsm
    77.1 KB · Affichages: 40
  • CALCUL MOY avec MFC(1).xlsm
    77.1 KB · Affichages: 42

ATHE RIOVELI

XLDnaute Occasionnel
Re : Tableau excel avec insertion d'une ligne automatique comme le fait ACCESS

Salut job75,
il y a encore malheurement un autre problème au niveau de la feuille 2ème trim.
Régarde, lorsque j'efface les noms au niveau de 1er trim, le premier nom au niveau de 2em trim reste toujours.
Regarde ci-joints les deux fichiers que j'apporte.
-les nom de trim1, se sont pas tous recopier automatiquement dans les autres feuilles: martin au trim1 et n'est pas dans les autres. (ficihier1)
- Dupont effacer au trim1 reste encore au trim2 et l'ordre des noms à complètement changer au trim3. (ficiher 2)

- régarde le fichier(3) lorsqu'on efface les noms de trim1, dupont reste sur trim2 et les autres.
 

Pièces jointes

  • CALCUL MOY avec MFC(1).xlsm
    71.9 KB · Affichages: 38
  • CALCUL MOY avec MFC(1).xlsm
    71.9 KB · Affichages: 34

ATHE RIOVELI

XLDnaute Occasionnel
Re : Tableau excel avec insertion d'une ligne automatique comme le fait ACCESS

Bonsoir job75.
vous ete un excellent DEVELOPPEUR.
Voici le fichier idéal qui repond effectiviement à toutes mes aspirations.
La seule chose qui est la suivante:
le tri par ordre alphabétique qui se passe au niveau de la feuille bilan devrait plutot se passer au niveau de trim1 et les autres feuilles recoicent directement ces memes noms.
C'est tout ce qui reste. Bout de ce premiier tunel n'est plus loin.
INFINIMENT MERCI.
 

Pièces jointes

  • CALCUL MOY(5).xlsm
    71 KB · Affichages: 45
  • CALCUL MOY(5).xlsm
    71 KB · Affichages: 45

ATHE RIOVELI

XLDnaute Occasionnel
Re : Tableau excel avec insertion d'une ligne automatique comme le fait ACCESS

Bonsoir job75.
Avec le ficihier 24, tout était fini.
stp, voila ce qui reste.
Que les noms entré dans trim1 soit automatiquement rangé par ordre alphabétique et aussi les notes qui leur sont attribué puissent etre automatiquent dans les cellules qui correspond au nom.
Le bout du tunel n'est plus loin pour cette prémière phase.
INFINIMENT MERCI JOB75
 

Pièces jointes

  • CALCUL MOY(6) (1).xlsm
    72.8 KB · Affichages: 47

Statistiques des forums

Discussions
312 279
Messages
2 086 722
Membres
103 378
dernier inscrit
phdrouart