Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Tableau croisé dynamique

2 réponses
Avatar
eric
Bonjour,

j'ai un tableau Excel qui permet de savoir semaine par semaine la
localisation géographique de collaborateurs.

Tableau d'origine:

nom semaine 1 semaine 2 semaine 3 semaine 4 semaine 5
pierre paris paris paris paris lyon
paul marseille paris paris lyon lyon
jacques bordeaux nantes bordeaux bordeaux bordeaux
francois nantes nantes lyon paris nantes
claude paris paris paris paris paris
serge bordeaux bordeaux nantes bordeaux bordeaux
fred lyon lyon lyon paris paris


A partir de ce tableau, je souhaiterai mettre en champ de page le nom d'une
ville pour pouvoir obtenir un tableau de suivi pour chaque ville.

par exemple, en rentrant en champ de page lyon, je souhaiterai obtenir
automatiquement le tableau suivant:

nom semaine 1 semaine 2 semaine 3 semaine 4 semaine 5
pierre 1
paul 1 1
francois 1
fred 1 1 1


c'est à dire la liste des seuls collaborateurs ayant travaillé à Lyon
semaine par semaine.

idem, en mettant en champ de page, le nom des autres villes.

J'espère avoir été assez précis dans mes explications.

Je vous remercie d'avance pour votre aide!

2 réponses

Avatar
FFO
Salut à toi

Je te propose une solution VBA avec ce code :

For j = 1 To Sheets.Count
If Sheets(j).Name <> "Liste" And Sheets(j).Range("A2") <> "" Then
Sheets(j).Range("A2", "A" &
Sheets(j).Range("A65535").End(xlUp).Row).EntireRow.Clear
End If
Liste = Liste & Sheets(j).Name & "/"
Next
i = 2
Do While Range("A" & i) <> ""
For Each c In Range("B" & i, Cells(i,
Range("IV1").End(xlToLeft).Column).Address)
If c <> "" Then
If Liste Like "*" & c & "*" = False Then
Sheets.Add.Name = c
ActiveSheet.Move after:=Sheets(Sheets.Count)
Sheets("" & c & "").Range("A1", Cells(1,
Sheets("Liste").Range("IV1").End(xlToLeft).Column).Address).Value =
Sheets("Liste").Range("A1", Cells(1,
Sheets("Liste").Range("IV1").End(xlToLeft).Column).Address).Value
Liste = Liste & c & "/"
Sheets("Liste").Activate
End If
If Sheets("" & c & "").Range("A65535").End(xlUp) <> Range("A" & c.Row) Then
Ligne = Sheets("" & c & "").Range("A65535").End(xlUp).Offset(1, 0).Row
Else
Ligne = Sheets("" & c & "").Range("A65535").End(xlUp).Row
End If
Sheets("" & c & "").Cells(Ligne, 1) = Range("A" & i)
Sheets("" & c & "").Cells(Ligne, c.Column) = 1
End If
Next
i = i + 1
Loop

Les données sont dans la feuille "liste"
Le code alimentera tous les onglets de chaque ville en le créant si il est
absent

Sur ce lien un exemple avec ce code

http://www.cijoint.fr/cjlink.php?file=cj201001/cijDV0RfLJ.xls

Aprés l'avoir récupéré et ouvert onglet "Liste" cliques sur le bouton
"Traitement"

Vérifies le résultat dans chaque onglet

Donnes moi des nouvelles !!!!!!
Avatar
eric
ça marche du tonnerre

Merci bcp!