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

job75

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

Bonjour ATHE RIOVELI,

Pas bien clair, où entre-t-on le nom d'un élève et à quoi doit ressembler la nouvelle ligne ?

Sachez cependant que si le tableau est organisé par la commande Tableau de l'onglet INSERTION le tableau est redimensionné automatiquement quand on entre à la suite une nouvelle donnée.

La mise en forme ainsi que les formules sont recopiées sur la nouvelle ligne.

Dans le fichier joint j'ai donc organisé de cette manière le tableau de la feuille "1er Trim".

Nota : un tableau Excel nécessite une ligne d'en-têtes, elle est en ligne 11, je l'ai masquée.

A+
 

Pièces jointes

  • MGT(1).xlsx
    46.6 KB · Affichages: 69

job75

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

Re,

Si l'on veut partir d'un tableau "vide" il faut masquer aussi la ligne 12.

Avant de la masquer, pour la numérotation, j'ai mis en A12 la formule :

Code:
=SI(LIGNES(A$11:A11)=1;0;A11+1)
Fichier (2).

A+
 

Pièces jointes

  • MGT(2).xlsx
    46.5 KB · Affichages: 88

job75

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

Re,

Allez un petit plus pour le calcul des moyennes car ce n'est pas si simple.

En supposant que les notes des colonnes marquées "M" ne sont pas comptées, formules en T12 U12 V12 :

Code:
=SOMMEPROD(ESTNUM(C$9:S$9)*ESTNUM(Tableau1[@[Colonne3]:[Colonne19]]);C$9:S$9;Tableau1[@[Colonne3]:[Colonne19]])
Code:
=SIERREUR(T12/SOMMEPROD(ESTNUM(C$9:S$9)*ESTNUM(Tableau1[@[Colonne3]:[Colonne19]]);C$9:S$9);"")
Code:
=SIERREUR(RANG(U12;[Colonne21]);"")
Fichier (3).

A+
 

Pièces jointes

  • MGT(3).xlsx
    47.2 KB · Affichages: 69
Dernière édition:

chris

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

Bonjour
Coucou Job75

Excellente solution :cool:

Juste pour info

On peut décocher l'affichage de la ligne d'en-tête dans les options de tableaux ce qui évite de la masquer.

On peut aussi laisser la 1ère ligne visible : il suffit de compléter la ligne puis ne pas écraser la formule de la colonne A quand on saisit d'autres lignes et tout se passe bien.
 

job75

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

Bonjour chris,

Merci pour ces précisions.

Il me semble quand même que outre la ligne de titres il est mieux de masquer la 1ère ligne de données.

Cela me fait penser qu'il faut (par précaution) interdire d'entrer des données en colonnes A T U V puisque ces colonnes doivent recevoir des formules.

Pour ce faire j'ai mis cette macro dans le code de la feuille :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If ListObjects.Count = 0 Then Exit Sub
Dim r As Range
Set r = ListObjects(1).Range
For Each r In r.Rows(r.Rows.Count).Cells
  If r(0).HasFormula And r.FormulaR1C1 <> r(0).FormulaR1C1 _
    Then r.EntireRow.Delete: Exit Sub
Next
End Sub
Elle ne fonctionne que si la base de données est organisée en "Tableau".

Fichier (4).

Bonne soirée.
 

Pièces jointes

  • MGT(4).xlsm
    55.1 KB · Affichages: 71

ATHE RIOVELI

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

BONJOUR mon frère JOB75.
Excuse moi, c'est un peu ce que je veux, mais le fichier joint n'est pas celui qui explique mieux ce que je veux exactement.
Biensure en entrant un nom et tapant sur Entrer, je voudrais que la ligne de moyenne puisse descendre également. C'est ce qui se passe sur ACCES.
VOICI LE FICHIER.
Merci beaucoup pour ton aide.
 

Pièces jointes

  • Moyenne Générale.xlsx
    16.3 KB · Affichages: 58
  • Moyenne Générale.xlsx
    16.3 KB · Affichages: 56

job75

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

Bonsoir ATHE RIOVELI, chris,

Dans ce fichier (5) la plage des moyennes est nommées MOYENNES.

Elle de décale vers le bas quand une nouvelle ligne est créée dans le tableau.

Il suffisait de compléter la macro :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If ListObjects.Count = 0 Then Exit Sub
Dim r As Range, c As Range
Set r = ListObjects(1).Range
For Each c In r.Rows(r.Rows.Count).Cells
  If c(0).HasFormula And c.FormulaR1C1 <> c(0).FormulaR1C1 _
    Then c.EntireRow.Delete: Exit For
Next
If r.Rows(r.Rows.Count).Row + 1 = [MOYENNES].Row Then _
  [MOYENNES].Cut [MOYENNES].Rows(2) 'les moyennes se décalent
End Sub
Bonne nuit.
 

Pièces jointes

  • MGT(5).xlsm
    56 KB · Affichages: 74
Dernière édition:

ATHE RIOVELI

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

BONJOUR les amis,(JOB75)
il y a trop de puissant gars par ici par ici.
Si j'avais connu ce forum beaucoup plutôt, tous mes projets aurais vu le jour.
J'ai bien compris ces macros et cela fonction à merveille. Une fois de plus merci.
Permet mois de te déranger encore, j'ai des formules, lorsqu'on entre des noms au premier trimestre, ces noms se retouve automatiquement au trim2, trim3 et bilan. Je souhaite que le déplacement de la ligne moyenne qui se fait lorsqu'on remplit le premier trimestre puisse aussi avoir lieu immédiatement au niveau des autres feuilles qui sont trim2, trim3, bilan et après je verai comment écrire les formules de calcul de moyennes.
MERCI D'AVANCE.
 

Pièces jointes

  • CALCUL MOY.xlsx
    92.1 KB · Affichages: 70
  • CALCUL MOY.xlsx
    92.1 KB · Affichages: 62

job75

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

Bonjour ATHE RIOVELI, chris, le forum,

Voyez le fichier joint.

J'ai complètement modifié la macro dans la feuille "1er Trim" :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If ListObjects.Count = 0 Then Exit Sub
Dim br As Range, r As Range, w As Worksheet
Set br = ListObjects(1).DataBodyRange
'---empêche la modification des formules du tableau---
Set r = Intersect(Target, br)
If Not r Is Nothing Then
  For Each r In r
    With Intersect(br.Rows(1), r.EntireColumn)
      If .HasFormula And r.FormulaR1C1 <> .FormulaR1C1 _
        Then r.FormulaR1C1 = .FormulaR1C1
    End With
  Next
End If
'---décalage des moyennes---
If br.Rows(br.Rows.Count).Row + 1 = [MOYENNES1].Row Then _
  [MOYENNES1].Cut [MOYENNES1].Rows(2)
'---recopie le nom de l'élève dans la feuille du 2ème trimestre---
Set r = Intersect(Target, br.Columns(2))
If Not r Is Nothing Then
  For Each w In Worksheets
    If LCase(w.Name) Like "2*trim*" Then Exit For
  Next
  With w.ListObjects(1).DataBodyRange
    For Each r In r
      If r <> "" And IsError(Application.Match(r, .Columns(2), 0)) _
        Then .Cells(.Rows.Count + 1, 2) = r
    Next
  End With
End If
End Sub
La macro est similaire pour le 2ème trimestre, pour le 3ème trimestre il n'y a pas de recopie du nom.

Notez que maintenant il est impossible de modifier une formule quelconque du tableau.

Notez aussi que les plages des moyennes sont nommées MOYENNES1 MOYENNES2 MOYENNES3.

Notez enfin que si l'on modifie un nom d'élève du 1er trimestre un nouveau nom est créé dans les autres feuilles...

Il me paraît difficile de changer cela.

Bonne journée.
 

Pièces jointes

  • CALCUL MOY(1).xlsm
    75.6 KB · Affichages: 81
  • CALCUL MOY(1).xlsm
    75.6 KB · Affichages: 76

ATHE RIOVELI

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

Encore merci JOBS,
mais il a un souci.. A partir du 3ème nom dans la feuille trim1, il n'y a plus la même dynamique au niveau des autres feuilles.
Lorsque je rempli la 3ème ligne de la feuille trim1, les autres feuille reste avec le nom de la 3ème ligne.
Je dois mettre également des tableaux statiques juste en bas la ligne moyenne qui doivent aussi etre décaler au moment du décalage de la ligne moyenne.
GRAND MERCI POUR TON SOUTIENT.
 

ATHE RIOVELI

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

Excuse moi JOB75,
les macros fonctionne à merveille, merci énormément.
Le souci encore reste les tableaux statistique que je met après la ligne moyenne qui doivent également descendre.
MERCI BEAUCOUP.
 

Pièces jointes

  • CALCUL MOY.xlsx
    92.1 KB · Affichages: 63
  • CALCUL MOY.xlsx
    92.1 KB · Affichages: 75

ATHE RIOVELI

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

Salut JOB75.
Encore un souci.
Je viens de mettre une autre feuille dénomée "BILAN ANNUEL", le problème maintenant est que je n'arrive pas faire respecter les copies des noms comme pour trim2 et trim3.
 

Pièces jointes

  • CALCUL MOY(1).xlsm
    56.1 KB · Affichages: 68
  • CALCUL MOY(1).xlsm
    56.1 KB · Affichages: 73
Dernière modification par un modérateur:

job75

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

Re,

Lorsque je rempli la 3ème ligne de la feuille trim1, les autres feuille reste avec le nom de la 3ème ligne.

Je ne vois pas ce que vous voulez dire, si le nom validé dans la feuille "1er Trim" existe déjà dans les 2 autres feuilles il n'est bien sûr pas recopié, autrement il l'est toujours.

Cela dit j'ai légèrement modifié le code de recopie (inversion With et For).

Maintenant si vous avez des tableaux sous les moyennes il ne faut pas faire un Couper-Coller mais insérer une ligne :

Code:
'---décale les moyennes---
If br.Rows(br.Rows.Count).Row + 1 = [MOYENNES1].Row Then
  [MOYENNES1].EntireRow.Insert
  [MOYENNES1].EntireRow(0).Borders.LineStyle = xlNone
End If
Fichier (2).

A+
 

Pièces jointes

  • CALCUL MOY(2).xlsm
    75.3 KB · Affichages: 81
  • CALCUL MOY(2).xlsm
    75.3 KB · Affichages: 90

Statistiques des forums

Discussions
314 729
Messages
2 112 269
Membres
111 481
dernier inscrit
zrk