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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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 !!!!!!
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
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