Récupérer les valeurs d'une liste - avec mise à jour (Filtre en fonction)
4 réponses
Fredo(67)
Bonjour,
Je tiens dans un fichier un suivi des salari=E9s employ=E9s.
Chaque onglet est associ=E9 =E0 un ouvrier
dans cet onglet, sont not=E9s les diff=E9rents chantiers auxquel l'ouvrier
a =E9t=E9 affect=E9
en regard de ces affectations, sont not=E9s les taux horaires.
Sachant qu'il y a des augmentations, les taux horaires varient (pour
augmenter progressivement)
Soit, dans la zone J2-J30 les diff=E9rents taux horaires.
11.00
11.00
12.00
12.00
12.00
12.00
12.00
12.50
12.50
12.50
12.50
12.50
12.50
13.00
13.25
14.00
Avec l'option filtre =E9labor=E9, je sais r=E9cup=E9rer les diff=E9rentes
valeurs du taux horaire
Soit alors les valeurs suivantes :
11.00
12.00
12.50
13.00
13.25
14.00
Hors le r=E9sultat du filtre ne se met pas =E0 jour, =E0 moins de le refair=
e
Sachant que je fais le suivis de 130 ouvriers (donc 130 onglets)
l'utilisation d'une macro peut s'av=E9rer fastidieuse.
Y'aurait il moyen de faire cela par le biais d'une fonction
directement dans l'onglet ?
Du style =3Drecherc......
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 Fredo
Tu peux mettre ce bout de code dans le VBA de la feuille :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 10 Then Range("J2").Activate Do While ActiveCell.Row < Range("J65535").End(xlUp).Row + 1 If ActiveCell <> ActiveCell.Offset(1, 0) Then Sheets("Feuil2").Range("A65535").End(xlUp).Offset(1, 0) = ActiveCell End If ActiveCell.Offset(1, 0).Activate Loop Sheets("Feuil2").Range("A65535").End(xlUp).Offset(1, 0) = ActiveCell End If End Sub
A chaque recopie pour chaque ouvrier Le Résultat colonne A Feuil2
Celà devrait faire Dis moi !!!
Salut Fredo
Tu peux mettre ce bout de code dans le VBA de la feuille :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
Range("J2").Activate
Do While ActiveCell.Row < Range("J65535").End(xlUp).Row + 1
If ActiveCell <> ActiveCell.Offset(1, 0) Then
Sheets("Feuil2").Range("A65535").End(xlUp).Offset(1, 0) = ActiveCell
End If
ActiveCell.Offset(1, 0).Activate
Loop
Sheets("Feuil2").Range("A65535").End(xlUp).Offset(1, 0) = ActiveCell
End If
End Sub
A chaque recopie pour chaque ouvrier
Le Résultat colonne A Feuil2
Tu peux mettre ce bout de code dans le VBA de la feuille :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 10 Then Range("J2").Activate Do While ActiveCell.Row < Range("J65535").End(xlUp).Row + 1 If ActiveCell <> ActiveCell.Offset(1, 0) Then Sheets("Feuil2").Range("A65535").End(xlUp).Offset(1, 0) = ActiveCell End If ActiveCell.Offset(1, 0).Activate Loop Sheets("Feuil2").Range("A65535").End(xlUp).Offset(1, 0) = ActiveCell End If End Sub
A chaque recopie pour chaque ouvrier Le Résultat colonne A Feuil2
Celà devrait faire Dis moi !!!
Fredo(67)
Tout d'abord merci beaucoup
J'ai modifié le code comme ceci *** Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 7 Then Range("s2:s5000").ClearContents Range("g15").Activate Do While ActiveCell.Row < Range("g65535").End(xlUp).Row + 1 If ActiveCell <> ActiveCell.Offset(1, 0) Then Range("s5000").End(xlUp).Offset(1, 0) = ActiveCell End If ActiveCell.Offset(1, 0).Activate Loop Range("s2") = ActiveCell End If End Sub *** En je veux les résultats sur la feuille meme et il faut effacer les anciennes valeur à chaque changement dans la zone
Maintenant, j'aimerais que la macro ne se lance que si la modification intervient dans la plage G16:G36 (je ne trouve pas le code exact) Et je voudrais que le résultat soit affiché dans la zone S16:S36 (hors celui ci n'apaprait qu'en S2 et en dessous)
MErci
On 17 oct, 16:32, FFO wrote:
Salut Fredo
Tu peux mettre ce bout de code dans le VBA de la feuille :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 10 Then Range("J2").Activate Do While ActiveCell.Row < Range("J65535").End(xlUp).Row + 1 If ActiveCell <> ActiveCell.Offset(1, 0) Then Sheets("Feuil2").Range("A65535").End(xlUp).Offset(1, 0) = ActiveCell End If ActiveCell.Offset(1, 0).Activate Loop Sheets("Feuil2").Range("A65535").End(xlUp).Offset(1, 0) = ActiveCell End If End Sub
A chaque recopie pour chaque ouvrier Le Résultat colonne A Feuil2
Celà devrait faire Dis moi !!!
Tout d'abord merci beaucoup
J'ai modifié le code comme ceci
***
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 7 Then
Range("s2:s5000").ClearContents
Range("g15").Activate
Do While ActiveCell.Row < Range("g65535").End(xlUp).Row + 1
If ActiveCell <> ActiveCell.Offset(1, 0) Then
Range("s5000").End(xlUp).Offset(1, 0) = ActiveCell
End If
ActiveCell.Offset(1, 0).Activate
Loop
Range("s2") = ActiveCell
End If
End Sub
***
En je veux les résultats sur la feuille meme
et il faut effacer les anciennes valeur à chaque changement dans la
zone
Maintenant,
j'aimerais que la macro ne se lance que si la modification intervient
dans la plage G16:G36 (je ne trouve pas le code exact)
Et je voudrais que le résultat soit affiché dans la zone S16:S36 (hors
celui ci n'apaprait qu'en S2 et en dessous)
MErci
On 17 oct, 16:32, FFO <F...@discussions.microsoft.com> wrote:
Salut Fredo
Tu peux mettre ce bout de code dans le VBA de la feuille :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
Range("J2").Activate
Do While ActiveCell.Row < Range("J65535").End(xlUp).Row + 1
If ActiveCell <> ActiveCell.Offset(1, 0) Then
Sheets("Feuil2").Range("A65535").End(xlUp).Offset(1, 0) = ActiveCell
End If
ActiveCell.Offset(1, 0).Activate
Loop
Sheets("Feuil2").Range("A65535").End(xlUp).Offset(1, 0) = ActiveCell
End If
End Sub
A chaque recopie pour chaque ouvrier
Le Résultat colonne A Feuil2
J'ai modifié le code comme ceci *** Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 7 Then Range("s2:s5000").ClearContents Range("g15").Activate Do While ActiveCell.Row < Range("g65535").End(xlUp).Row + 1 If ActiveCell <> ActiveCell.Offset(1, 0) Then Range("s5000").End(xlUp).Offset(1, 0) = ActiveCell End If ActiveCell.Offset(1, 0).Activate Loop Range("s2") = ActiveCell End If End Sub *** En je veux les résultats sur la feuille meme et il faut effacer les anciennes valeur à chaque changement dans la zone
Maintenant, j'aimerais que la macro ne se lance que si la modification intervient dans la plage G16:G36 (je ne trouve pas le code exact) Et je voudrais que le résultat soit affiché dans la zone S16:S36 (hors celui ci n'apaprait qu'en S2 et en dessous)
MErci
On 17 oct, 16:32, FFO wrote:
Salut Fredo
Tu peux mettre ce bout de code dans le VBA de la feuille :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 10 Then Range("J2").Activate Do While ActiveCell.Row < Range("J65535").End(xlUp).Row + 1 If ActiveCell <> ActiveCell.Offset(1, 0) Then Sheets("Feuil2").Range("A65535").End(xlUp).Offset(1, 0) = ActiveCell End If ActiveCell.Offset(1, 0).Activate Loop Sheets("Feuil2").Range("A65535").End(xlUp).Offset(1, 0) = ActiveCell End If End Sub
A chaque recopie pour chaque ouvrier Le Résultat colonne A Feuil2
quelqun peu m'aider je ne sais plus dll mes mise a jour merci bonne soirée
"Fredo(67)" wrote:
Tout d'abord merci beaucoup
J'ai modifié le code comme ceci *** Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 7 Then Range("s2:s5000").ClearContents Range("g15").Activate Do While ActiveCell.Row < Range("g65535").End(xlUp).Row + 1 If ActiveCell <> ActiveCell.Offset(1, 0) Then Range("s5000").End(xlUp).Offset(1, 0) = ActiveCell End If ActiveCell.Offset(1, 0).Activate Loop Range("s2") = ActiveCell End If End Sub *** En je veux les résultats sur la feuille meme et il faut effacer les anciennes valeur à chaque changement dans la zone
Maintenant, j'aimerais que la macro ne se lance que si la modification intervient dans la plage G16:G36 (je ne trouve pas le code exact) Et je voudrais que le résultat soit affiché dans la zone S16:S36 (hors celui ci n'apaprait qu'en S2 et en dessous)
MErci
On 17 oct, 16:32, FFO wrote: > Salut Fredo > > Tu peux mettre ce bout de code dans le VBA de la feuille : > > Private Sub Worksheet_Change(ByVal Target As Range) > If Target.Column = 10 Then > Range("J2").Activate > Do While ActiveCell.Row < Range("J65535").End(xlUp).Row + 1 > If ActiveCell <> ActiveCell.Offset(1, 0) Then > Sheets("Feuil2").Range("A65535").End(xlUp).Offset(1, 0) = ActiveCell > End If > ActiveCell.Offset(1, 0).Activate > Loop > Sheets("Feuil2").Range("A65535").End(xlUp).Offset(1, 0) = ActiveCell > End If > End Sub > > A chaque recopie pour chaque ouvrier > Le Résultat colonne A Feuil2 > > Celà devrait faire > Dis moi !!!
quelqun peu m'aider je ne sais plus dll mes mise a jour merci bonne soirée
"Fredo(67)" wrote:
Tout d'abord merci beaucoup
J'ai modifié le code comme ceci
***
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 7 Then
Range("s2:s5000").ClearContents
Range("g15").Activate
Do While ActiveCell.Row < Range("g65535").End(xlUp).Row + 1
If ActiveCell <> ActiveCell.Offset(1, 0) Then
Range("s5000").End(xlUp).Offset(1, 0) = ActiveCell
End If
ActiveCell.Offset(1, 0).Activate
Loop
Range("s2") = ActiveCell
End If
End Sub
***
En je veux les résultats sur la feuille meme
et il faut effacer les anciennes valeur à chaque changement dans la
zone
Maintenant,
j'aimerais que la macro ne se lance que si la modification intervient
dans la plage G16:G36 (je ne trouve pas le code exact)
Et je voudrais que le résultat soit affiché dans la zone S16:S36 (hors
celui ci n'apaprait qu'en S2 et en dessous)
MErci
On 17 oct, 16:32, FFO <F...@discussions.microsoft.com> wrote:
> Salut Fredo
>
> Tu peux mettre ce bout de code dans le VBA de la feuille :
>
> Private Sub Worksheet_Change(ByVal Target As Range)
> If Target.Column = 10 Then
> Range("J2").Activate
> Do While ActiveCell.Row < Range("J65535").End(xlUp).Row + 1
> If ActiveCell <> ActiveCell.Offset(1, 0) Then
> Sheets("Feuil2").Range("A65535").End(xlUp).Offset(1, 0) = ActiveCell
> End If
> ActiveCell.Offset(1, 0).Activate
> Loop
> Sheets("Feuil2").Range("A65535").End(xlUp).Offset(1, 0) = ActiveCell
> End If
> End Sub
>
> A chaque recopie pour chaque ouvrier
> Le Résultat colonne A Feuil2
>
> Celà devrait faire
> Dis moi !!!
quelqun peu m'aider je ne sais plus dll mes mise a jour merci bonne soirée
"Fredo(67)" wrote:
Tout d'abord merci beaucoup
J'ai modifié le code comme ceci *** Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 7 Then Range("s2:s5000").ClearContents Range("g15").Activate Do While ActiveCell.Row < Range("g65535").End(xlUp).Row + 1 If ActiveCell <> ActiveCell.Offset(1, 0) Then Range("s5000").End(xlUp).Offset(1, 0) = ActiveCell End If ActiveCell.Offset(1, 0).Activate Loop Range("s2") = ActiveCell End If End Sub *** En je veux les résultats sur la feuille meme et il faut effacer les anciennes valeur à chaque changement dans la zone
Maintenant, j'aimerais que la macro ne se lance que si la modification intervient dans la plage G16:G36 (je ne trouve pas le code exact) Et je voudrais que le résultat soit affiché dans la zone S16:S36 (hors celui ci n'apaprait qu'en S2 et en dessous)
MErci
On 17 oct, 16:32, FFO wrote: > Salut Fredo > > Tu peux mettre ce bout de code dans le VBA de la feuille : > > Private Sub Worksheet_Change(ByVal Target As Range) > If Target.Column = 10 Then > Range("J2").Activate > Do While ActiveCell.Row < Range("J65535").End(xlUp).Row + 1 > If ActiveCell <> ActiveCell.Offset(1, 0) Then > Sheets("Feuil2").Range("A65535").End(xlUp).Offset(1, 0) = ActiveCell > End If > ActiveCell.Offset(1, 0).Activate > Loop > Sheets("Feuil2").Range("A65535").End(xlUp).Offset(1, 0) = ActiveCell > End If > End Sub > > A chaque recopie pour chaque ouvrier > Le Résultat colonne A Feuil2 > > Celà devrait faire > Dis moi !!!