Tableau croisé dynamique

Le
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!
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
FFO
Le #21070121
Salut à toi

Je te propose une solution VBA avec ce code :

For j = 1 To Sheets.Count
If Sheets(j).Name 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 !!!!!!
eric
Le #21071641
ça marche du tonnerre

Merci bcp!
Publicité
Poster une réponse
Anonyme