MAJ d'une feuille

Bonjour à tous,

J'aimerais, en ajoutant une matière ou un étudiant dans la feuille 1, qu'elle se retrouve automatiquement dans la feuille 2 par la même mise en forme et le même calcul de pourcentage des chiffres en rouges.

Par exemple en ajoutant la matière "Chimie", on la retrouvera dans la feuille 2 après "Physique".

Merci d’avance.

43filtrage.xlsm (11.96 Ko)

Bonsoir,

voici une solution, mais j'ai adapté quelque formule dans feuille 2, à voir si ces modifications te conviennent.

la création de nouvelles colonnes dans feuil2 est lancée par l'ajout d'une matière en ligne 5 sur feuil1

58filtrage.xlsm (16.37 Ko)

Bonjour h2so4,

Merci pour la formule.

J'ai adapté le code et j'ai essayé d'ajouter la partie de mise à jour des étudiants.

Mais, je trouve un problème quant au condition qui teste l’existence d'un nom dans la colonne B de la feuille 2.

Si deux noms se ressemblent, il n'y aura pas d'ajout de la nouvelle ligne saisie !

29maj-calc-v001.xlsm (21.04 Ko)

bonsoir,

If Not IsNumeric(Application.Match(Target.Value, [Calc!B:B], 0)) Then

' doit remplacer

' If Not IsNumeric(Application.Match(Target.Value, [Calc!A:B], 0)) Then

Bonjour,

La recherche avec Application.Match dans les deux colonnes A et B est toujours fausse, donc ajout de tout ce qui est saisie dans la première feuille même lorsqu'il y a des doublons !

Bonjour,

J'ai apporté quelques modifications et laisser le test seulement sur le numéro d'ordre qui est unique :

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim MatRng As Range, StdRng As Range
    Dim Lg As Long, LastLg As Integer

    If Target.Row <> 5 And Target.Column <> 2 Then Exit Sub

    With Range("A5").CurrentRegion
        .Borders.LineStyle = xlThin
        .BorderAround xlContinuous, xlThin, xlColorIndexAutomatic
    End With

    If Target.Value <> "" And Target.Row = 5 Then
        With Sheets("Calc")
            If Not IsNumeric(Application.Match(Target.Value, [Calc!5:5], 0)) Then
                Set MatRng = .Range(.[C5], .Cells(.Rows.Count, 4).End(xlUp))
                MatRng.Copy .Cells(5, .Columns.Count).End(xlToLeft).Offset(, 1)
                .Cells(5, .Columns.Count).End(xlToLeft).Value = Target
            End If
        End With
    ElseIf Target.Value <> "" And Target.Column = 2 Then
        With Sheets("Calc")
            If Not IsNumeric(Application.Match(Target.Offset(, -1).Value, [Calc!A:A], 0)) Then
                'ici, ajout d'élèves
                Lg = Target.Row
                LastLg = .Cells(.Rows.Count, 1).End(xlUp).Offset(1).Row
                Range(Cells(Lg, 1), Cells(Lg, 2)).Copy .Cells(LastLg, 1)
                Set StdRng = .Range(.[C9], .Cells(9, 3).End(xlToRight))
                StdRng.Copy .Cells(LastLg, 3)
            Else
                'Modification nom
                Lg = Application.Match(Target.Offset(, -1).Value, [Calc!A:A], 0)
                MsgBox "Lg à écrire : " & Lg
                .Range("A" & Lg) = Target.Offset(, -1)
                .Range("B" & Lg) = Target
            End If
        End With
    End If
End Sub
45maj-calc-v002.xlsm (21.62 Ko)
Rechercher des sujets similaires à "maj feuille"