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

Récupérer les valeurs d'une liste - avec mise à jour (Filtre en fonction)

4 réponses
Avatar
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......

Merci de vos lumi=E8res

4 réponses

Avatar
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 !!!
Avatar
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 !!!


Avatar
Fredo(67)
un petit "up"
Avatar
fabienne
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 !!!