Listes dynamiques

Hi, it's me again...

Je cherche à afficher les postes des salariés en temps réel suivant les modifications de la feuille, je sais, c'est pas clair mon histoire...

Sur la Feuil2 du fichier joint, j'aimerais avoir la liste des noms correspondant au poste (colonne C) dans les colonnes F G H et I.

J'ai testé les TCD mais il doit y avoir un moyen de faire sans, pénibles à actualiser quand on a plein de feuilles protégées, tout ça...

Auriez-vous une piste de recherche ?

Merci à vous et bon début de week-end

9oliv34.xlsm (23.37 Ko)

Bonjour,

je ne comprends pas tout !...

Surtout l'histoire de l'actualisation des TCDs et des feuilles protégées.

Enfin de compte, je ne comprends rien. Quel est l'objectif ? As -tu un exemple de résultat à nous donner ?

Cdlt.

Désolé...

Oublie les feuilles protégées, tout ça, je veux juste éviter d'utiliser un TCD.

Sur Feuil2, je veux la liste des salariés dans les colonnes F/G/H/I, classés par poste (ceux renseignés dans la colonne C de Feuil2),

Voir le résultat souhaité en Feuil2, merci !

6oliv34.xlsm (23.42 Ko)

Bonjour,

cf PJ

Boisgontier

Je ne pouvais rêver mieux, c'est parfait, et c'est de plus un honneur pour moi, vos travaux sont ma principale source de recherche !

Merci infiniment et très bonne soirée.

Oliv

Sub ListeInverses()
  Set d = CreateObject("Scripting.Dictionary")
  For Each c In [tableau2[poste]]
    If c.Value <> "" Then
      d(c.Value) = d(c.Value) & c.Offset(, -1) & "|"
    End If
  Next c
  '------
  Set f = Sheets("feuil2")
  Set dest = f.[a1]
  dest.CurrentRegion.ClearContents
  col = 0
  For Each c In d.keys
    col = col + 1
    a = Split(d.Item(c), "|")
    dest.Offset(, col) = "poste " & c
    dest.Offset(1, col).Resize(UBound(a) + 1) = Application.Transpose(a)
  Next c
  Set Rng = dest.CurrentRegion
  Rng.Resize(Rng.Rows.Count, Rng.Columns.Count).Sort key1:=Rng.Cells(1, 1), _
    Order1:=xlAscending, Header:=xlNo, MatchCase:=False, Orientation:=xlSortRows
End Sub

Boisgontier

Bonjour Jacques,

Merci pour cet ajout, c'est effectivement mieux comme ça

Très bonne journée !

Si je peux abuser un peu ...

Existe-t-il un moyen de classer les colonnes dans un ordre prédéfini ?

Dans le fichier original, j'ai des postes (12, et qui ne sont pas des chiffres d'ailleurs )

(J, M, S, N, Abs, Mal, CP, RTT, CF, CET, Form et 0)

et j'aimerais fixer ces colonnes dans cet ordre en les affichant même si elles ne contiennent rien ...

Merci d'avance !

Comment établir la correspondance entre:

J, M, S, N, Abs, Mal, CP, RTT, CF, CET, Form et 0

et les nos de poste de la 2e colonne du tableau (0,1,2,3,4,....) ?

Boisgontier

Désolé, je me suis mal exprimé, les postes ne sont pas 0,1,2,3 etc comme j'avais bêtement mis dans mon exemple.

Ils sont J, M, S, N, Abs, Mal, CP, RTT, CF, CET, Form et 0

Sub ListeInverses()
  Set d = CreateObject("Scripting.Dictionary")
  d.CompareMode = vbTextCompare
  poste = "J,M,S,N,Abs,Mal,CP,RTT,CF,CET,Form,0"
  a = Split(poste, ",")
  For Each c In a: d(c) = "": Next c
  For Each c In [tableau2[poste]]
    If c.Value <> "" Then
      d(c.Value) = d(c.Value) & c.Offset(, -1) & "|"
    End If
  Next c
  '------
  Set f = Sheets("feuil2")
  Set dest = f.[a1]
  dest.CurrentRegion.ClearContents
  col = 0
  For Each c In d.keys
    col = col + 1
    a = Split(d.Item(c), "|")
    dest.Offset(, col) = c
    If UBound(a) > 0 Then dest.Offset(1, col).Resize(UBound(a) + 1) = Application.Transpose(a)
  Next c
End Sub

Boisgontier

Wow, c'est comme parler couramment une langue étrangère en fait

Un grand bravo, et mille mercis !

Bon week-end

Rechercher des sujets similaires à "listes dynamiques"