Microsoft 365 Aide sur MFC (conflit après ajout de données)

Véhuel

XLDnaute Nouveau
Bonjour,

Je demande votre aide, le problème est que si je rajoute un nouveau nom (en dessous des autres, voir exemple en rouge) dans l’onglet salarié(e) et que je clic sur le bouton trier pas de problème là-dessus. Mais dans les 2 autres onglets le nouveau nom rentré prend la MFC du nom en place et du coup me décale toutes mes MFC des autres noms. Je n’ai pas pensé à ça quand j’ai conçu le tableau et je ne sais pas comment m’y prendre. C’est par les colonnes I, O, V et W que les MFC s’appliquent. En quelques mots je veux que quand je rentre un nouveau nom et mit en ordre alphabétique qu’il ne soit sans MFC. Bien entendu normalement toutes les feuilles son protégées. Merci pour votre aide
 

Pièces jointes

  • MODELE VIERGE -POUR VM - MUT - SUIVI .xlsm
    48.4 KB · Affichages: 9
Solution
Cela dit le fonctionnement normal des tableaux structurés se fait sans lignes vides.

Dans le fichier joint j'ai donc supprimé les lignes vides et revu la macro :
VB:
Sub Ttier()
Dim i&, x$, n&
[Tableau5].Parent.Protect "toto", UserInterfaceOnly:=True 'mot de passe à adapter
With [Tableau1]
    .Sort .Columns(1), xlAscending, .Columns(2), , xlAscending, Header:=xlYes 'tri sur colonne A
    For i = 1 To .Rows.Count
        If .Cells(i, 1) <> "" Then
            x = .Cells(i, 1) & "   " & .Cells(i, 2) '3 espaces
            If Application.CountIf([Tableau5].Columns(1), x) = 0 Then
                n = [Tableau5].Rows.Count - ([Tableau5].Cells(1) <> "")
                [Tableau5].Cells(n, 1) = x
            End If
        End If
    Next
End With
[Tableau5].Sort [Tableau5].Cells(1), xlAscending...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Clamatt,
En dehors du problème de MFC, un truc me chiffonne dans votre fichier.
En page "VISITE MEDICALE & MUTUELLE " la colonne A est indexée sur la feuille Salariées avec des formules du genre "='SALARIÉS(E)'!D3" . Par contre toutes les autres colonnes sont "en dur" et ne font l'objet d'aucune formule.
Donc si la liste de Salariée change alors la liste NomPrénom change mais pas les autres colonnes.
Comment assurez vous la cohérence des données entre le Nom et les autres données de la ligne ?
 

Véhuel

XLDnaute Nouveau
Bonjour Clamatt,
En dehors du problème de MFC, un truc me chiffonne dans votre fichier.
En page "VISITE MEDICALE & MUTUELLE " la colonne A est indexée sur la feuille Salariées avec des formules du genre "='SALARIÉS(E)'!D3" . Par contre toutes les autres colonnes sont "en dur" et ne font l'objet d'aucune formule.
Donc si la liste de Salariée change alors la liste NomPrénom change mais pas les autres colonnes.
Comment assurez vous la cohérence des données entre le Nom et les autres données de la ligne ?
Bonjour sylvanu,
merci de vous pencher son mon cas et oui, ça fait parti aussi du problème, il y a dans l'onglet " VISITE MEDICALE & MUTUELLE" les colonnes H- M- P - Y(masquée) avec des formules. le but est de n'avoir aucune MFC quand je rentre un nouveau nom (après ce nom sera mis en forme)
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
ça fait parti aussi du problème
Je pense m'être mal exprimé. Votre fichier tel qu'il ne peut pas marcher.
Le moindre tri de la feuille Salariés vous fera perdre toute cohérences dans la feuille Visite.
En d'autres termes si vous touchez à la feuille Salariés ( or ajout ), comme un tri, une suppression de ligne ... votre feuille Visite devient totalement fausse.
C'est à mon avis le premier point à résoudre.
Par ex, avant tri :
1689412996274.png

Après tri :
1689413027952.png

Vous voyez bien que toutes les données sont fausses.
 

job75

XLDnaute Barbatruc
Bonjour clamatt, [Edit]sylvanu, le forum,

Il ne faut pas de formules de liaison en colonne A de la feuille "VISITE MEDICALE & MUTUELLE ".

Il suffit d'utiliser cette macro :
VB:
Sub Ttier()
Dim P As Range, i&, x$
Set P = [Tableau5]
P.Parent.Protect "toto", UserInterfaceOnly:=True 'mot de passe à adapter
With [Tableau1]
    .Sort .Columns(1), xlAscending, .Columns(2), , xlAscending, Header:=xlYes 'tri sur colonne A
    For i = 1 To .Rows.Count
        If .Cells(i, 1) <> "" Then
            x = .Cells(i, 1) & "   " & .Cells(i, 2) '3 espaces
            If Application.CountIf(P.Columns(1), x) = 0 Then P.Columns(1).Find("", , xlValues) = x 'entrée dans la 1ère cellule vide
        End If
    Next
End With
P.Sort P(1), xlAscending, Header:=xlYes 'tri sur colonne A
P.Parent.Activate 'facultatif
End Sub
Nota 1 : la feuille "VISITE MEDICALE & MUTUELLE " est protégée comme demandé.

Nota 2 : la colonne D de la feuille "SALARIÉS(E)" était inutile, je l'ai supprimée.

Nota 3 : en colonne B de la feuille "TABLEAU de BORD" format personnalisé mmm-aa;; pour masquer les valeurs zéro.

A+
 

Pièces jointes

  • MODELE VIERGE -POUR VM - MUT - SUIVI.xlsm
    50.1 KB · Affichages: 6
Dernière édition:

Véhuel

XLDnaute Nouveau
Bonjour clamatt, [Edit]sylvanu, le forum,

Il ne faut pas de formules de liaison en colonne A de la feuille "VISITE MEDICALE & MUTUELLE ".

Il suffit d'utiliser cette macro :
VB:
Sub Ttier()
Dim P As Range, i&, x$
Set P = [Tableau5]
P.Parent.Protect "toto", UserInterfaceOnly:=True 'mot de passe à adapter
With [Tableau1]
    .Sort .Columns(1), xlAscending, .Columns(2), , xlAscending, Header:=xlYes 'tri sur colonne A
    For i = 1 To .Rows.Count
        If .Cells(i, 1) <> "" Then
            x = .Cells(i, 1) & "   " & .Cells(i, 2) '3 espaces
            If Application.CountIf(P.Columns(1), x) = 0 Then P.Columns(1).Find("", , xlValues) = x 'entrée dans la 1ère cellule vide
        End If
    Next
End With
P.Sort P(1), xlAscending, Header:=xlYes 'tri sur colonne A
P.Parent.Activate 'facultatif
End Sub
Nota 1 : la feuille "VISITE MEDICALE & MUTUELLE " est protégée comme demandé.

Nota 2 : la colonne D de la feuille "SALARIÉS(E)" était inutile, je l'ai supprimée.

Nota 3 : en colonne B de la feuille "TABLEAU de BORD" format personnalisé mmm-aa;; pour masquer les valeurs zéro.

A+
Bonjour job 75,
c'est parfait tu as tout compris et en plus mon petit problème sur "TABLEAU de BORD" .
bravo et merci, problème résolu bonne journée
 

job75

XLDnaute Barbatruc
Cela dit le fonctionnement normal des tableaux structurés se fait sans lignes vides.

Dans le fichier joint j'ai donc supprimé les lignes vides et revu la macro :
VB:
Sub Ttier()
Dim i&, x$, n&
[Tableau5].Parent.Protect "toto", UserInterfaceOnly:=True 'mot de passe à adapter
With [Tableau1]
    .Sort .Columns(1), xlAscending, .Columns(2), , xlAscending, Header:=xlYes 'tri sur colonne A
    For i = 1 To .Rows.Count
        If .Cells(i, 1) <> "" Then
            x = .Cells(i, 1) & "   " & .Cells(i, 2) '3 espaces
            If Application.CountIf([Tableau5].Columns(1), x) = 0 Then
                n = [Tableau5].Rows.Count - ([Tableau5].Cells(1) <> "")
                [Tableau5].Cells(n, 1) = x
            End If
        End If
    Next
End With
[Tableau5].Sort [Tableau5].Cells(1), xlAscending, Header:=xlYes 'tri sur colonne A
[Tableau5].Parent.Activate 'facultatif
End Sub
Tableau5 s'agrandit au fur et à mesure que des noms sont ajoutés.
 

Pièces jointes

  • MODELE VIERGE -POUR VM - MUT - SUIVI(1).xlsm
    43 KB · Affichages: 3

Véhuel

XLDnaute Nouveau
Cela dit le fonctionnement normal des tableaux structurés se fait sans lignes vides.

Dans le fichier joint j'ai donc supprimé les lignes vides et revu la macro :
VB:
Sub Ttier()
Dim i&, x$, n&
[Tableau5].Parent.Protect "toto", UserInterfaceOnly:=True 'mot de passe à adapter
With [Tableau1]
    .Sort .Columns(1), xlAscending, .Columns(2), , xlAscending, Header:=xlYes 'tri sur colonne A
    For i = 1 To .Rows.Count
        If .Cells(i, 1) <> "" Then
            x = .Cells(i, 1) & "   " & .Cells(i, 2) '3 espaces
            If Application.CountIf([Tableau5].Columns(1), x) = 0 Then
                n = [Tableau5].Rows.Count - ([Tableau5].Cells(1) <> "")
                [Tableau5].Cells(n, 1) = x
            End If
        End If
    Next
End With
[Tableau5].Sort [Tableau5].Cells(1), xlAscending, Header:=xlYes 'tri sur colonne A
[Tableau5].Parent.Activate 'facultatif
End Sub
Tableau5 s'agrandit au fur et à mesure que des noms sont ajoutés.
merci job 75, c'est très bien aussi, merci pour ton implication.
 

Statistiques des forums

Discussions
314 655
Messages
2 111 604
Membres
111 217
dernier inscrit
aladinkabeya2