XL 2019 Recherche valeur (Critère date et ID) et copier valeur dans tableau dans la cellule correspondante

Rabeto

XLDnaute Occasionnel
Bonjour,

J'aimerai faire une recherche de valeur dans la colonne Type en se basant sur 2 critères (ID et Date) et placer les résultats dans la cellule concernée du tableau.

Je vous joint un fichier pour mieux expliquer la demande, mais c'est juste un exemple.

Il se trouve que je pourrai avoir une centaine d'ID avec des dates allant jusqu'à la fin de l'année.

Par macro si possible :)

merci,
 

Pièces jointes

  • Recherche Rabeto.xlsx
    12.2 KB · Affichages: 22
Solution
Rebonjour
Essaie de mettre cette macro dans un module
VB:
Global DLig, Ws, DatDeb, DatFin, DColDeb, DColFin
Sub Placer()
Set Ws = ActiveSheet
DLig = Ws.Range("A65536").End(xlUp).Row
DColDeb = 8
DColFin = 38
'rech date corresp   col date deb
For ind = 2 To DLig
    DatDeb = DateValue(Ws.Cells(ind, 3))
    DatFin = DateValue(Ws.Cells(ind, 4))
    For ColD = DColDeb To DColFin
        If Ws.Cells(2, ColD) = DatDeb Then
            ColDat = ColD
            Call RechercheLigneType(ind, Ws.Cells(ind, 1), ColDat)
            Exit For
        End If
    Next ColD
Next ind
End Sub

Sub RechercheLigneType(LigTyp, Id, Col)
    For Lig = 3 To DLig + 1
        If Ws.Cells(Lig, 7) = Id Then
            Ws.Cells(Lig, Col) = Ws.Cells(LigTyp, 2)...

Rabeto

XLDnaute Occasionnel
Bonsoir à tous, et merci pour vos réponses,

Je vais prendre un peu de temps pour assimiler vos propositions, mais je tiens fortement à vous remercier.

Premièrement, mes excuses, car je n'étais pas clair au début, et je n'ai pas directement mis le bon fichier final en pensant que je modifie juste des valeurs dans la macro proposé par patty58 (macro ci-dessous) pour avoir la réponse, mais je me suis trompé.

@job75 : Après un premier coup d'œil, le code VBA donne les résultats souhaités, sauf que si je change les valeurs dans les colonnes B à D, les données dans le tableau s'efface, alors que les données dans ces colonnes servent à alimenter le tableau et doivent y rester pour garder les historiques.

je pense que cette réponse par patty58 en post 7 a peut être résolu le sujet, sauf qu'elle ne prend pas en compte si l'ID a des doublons sur une même date et je n'arrive pas à l'adapter avec le fichier ci-joint.

Global DLig, Ws, DatDeb, DatFin, DColDeb, DColFin
Sub Placer()
Set Ws = ActiveSheet
DLig = Ws.Range("A65536").End(xlUp).Row
DColDeb = 8
DColFin = 38
'rech date corresp col date deb
For ind = 2 To DLig
DatDeb = DateValue(Ws.Cells(ind, 3))
DatFin = DateValue(Ws.Cells(ind, 4))
For ColD = DColDeb To DColFin
If Ws.Cells(2, ColD) = DatDeb Then
ColDat = ColD
Call RechercheLigneType(ind, Ws.Cells(ind, 1), ColDat)
Exit For
End If
Next ColD
Next ind
End Sub

Sub RechercheLigneType(LigTyp, Id, Col)
For Lig = 3 To DLig + 1
If Ws.Cells(Lig, 7) = Id Then
Ws.Cells(Lig, Col) = Ws.Cells(LigTyp, 2)
Col = Col + 1
While Ws.Cells(2, Col) <= DatFin And Col < DColFin
Ws.Cells(Lig, Col) = Ws.Cells(LigTyp, 2)
Col = Col + 1
Wend
End If
Next

End Sub

Je vais essayer d'être clair et éviter que vous soyez confus : (encore mes excuses si j'étais pas clair au début)

Mes besoins :
1 - Je fais une extraction de donnée (comme dans : colonne A jusqu'à H de ce fichier) puis je colle les données.
2 - Je souhaite que le tableau à partir de colonne AH16 (Tableau Colonne = ID / Ligne = Date) soit remplis par les valeurs depuis colonne D Type (selon les critères ID et date)
3- Il se peut qu'il y ai des ID qui se répètent sur une même date, car un ID, peut avoir 2 ou 3 types en une journée ex (CP + TT) par exemple, il faut juste concaténer les données comme (CP/TT/ect.....) si même date et même ID.

Finalité :
1 - Chaque fois que j'alimente ma base (changé les données dans colonne A:H; après une nouvelle extraction, le tableau soit à jour.
2 - Je peux rajouter des ID de façon manuelle dans la colonne AG car ID = liste de personne

@ Cousinhub : Ta proposition par PowerQuery est une autre alternative, sauf que je ne t'ai pas indiqué que la colonne AG doit servir de source pour les ID et à un moment, je dois rajouter un ID.
PQ ne prend que les ID qui sont déjà présent dans la base à traiter.


Encore une fois, merci
 

Pièces jointes

  • Recherche Rabeto patty58_V2.xlsm
    182.3 KB · Affichages: 5

Cousinhub

XLDnaute Barbatruc
Re-,
OK, fin de mes interventions
PS, PQ prend tout ce qu'on lui donne, et s'il y a un rajout d'ID en Colonne B du tableau de base, cet ID sera bien évidemment rajouté... Et le fait de le rajouter en colonne AG, quel intérêt, s'il n'est pas présent dans le tableau de données???????
Bref, bon courage
 

job75

XLDnaute Barbatruc
Concaténer plusieurs Types (B) dans une même cellule me paraît une idée saugrenue puisqu'une cellule correspond à un seul jour.

L'historique est conservé tant qu'on ne modifie pas les données sources des colonnes B C D.

Pour ajouter des dates sur un même ID il suffit d'ajouter de nouvelles lignes et de trier ensemble les 2 tableaux sur la colonne A.
 

Cousinhub

XLDnaute Barbatruc
Hi,
Job, les jours sont sécables (matin, apm), et il peut y avoir 2 lignes pour le même jour, et le même ID.
Par contre, je te rejoins complètement sur le pseudo-historique que voudrait Rabeto...
Bref, il ne sait pas lui-même ce qu'il veut, et découvre au fur et à mesure des réponses, ce qu'il pourrait avoir...
Donc, fin pour moi
Bonne soirée
 

Rabeto

XLDnaute Occasionnel
Bonjour patty58 / job75 / Cousinhub

job75 : Je dois changer les données dans BCD car ce sont des données issus d'une extraction et je dois faire la maj chaque jour, si je garde les données, le fichier risque de devenir très lourd au fur et à mesure que j'alimente avec de nouvelle donnée

Cousinhub : J'étais pas juste précis dès le début, je pensais qu'un simple fichier et quelque explication pourrait vous aider, mes excuses.

patty58 : Oui, c'est exactement ça, nickel c'est le but à 100%
Je ne vous embêterai plus après ce dernier point,
est ce possible d'ajouter un code comme quoi si la cellule contient déjà quelque chose, effacer et remplacer par la nouvelle valeur
ou bien le contraire, si la cellule contient quelque chose, ne rien faire
 

patty58

XLDnaute Occasionnel
Bonjour à tous,
si la cellule contient déjà quelque chose, effacer et remplacer par la nouvelle valeur
ou bien le contraire, si la cellule contient quelque chose, ne rien faire
Je ne comprend pas du tout le but de ton travail, mais ce que tu demandes là est bizarre, Si je comprend , cela veut dire que tu te moques complètement que ce soit une valeur ou une autre.
En clair, tu veux dire que tu ne veux pas voir 2 ou 3 valeurs du style TT/CP, mais une seule ??
 

Rabeto

XLDnaute Occasionnel
tu veux dire que tu ne veux pas voir 2 ou 3 valeurs du style TT/CP, mais une seule ??
En faite, le dernier fichier est déjà bon,
Je souhaite garder le type de valeurs, TT/CP si un ID a 2 types différents avec la même date.

Mais si vous reprenez le dernier fichier, chaque fois qu'on actualise la macro, de nouvelle donnée s'ajoute dans les cellules ex le 03/O1 pour 8010 on a CP/CP/CP si on actualise 3 fois la macro, le but est de ne pas changer les valeurs si la cellule contient déjà des données, il y avait déjà un CP.
Car je mets à jours la base dans colonne A:H quotidiennement.
Si une cellule contient déjà des données, soit remplacer par une nouvelle valeur trouvé dans A:H soit ne rien faire c'est tout ce qui est à rajouté dans la macro.

je comprends si c'est trop demandé, je devais donner plus de précision au début.
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonhour Rabeto, le forum,
job75 : Je dois changer les données dans BCD car ce sont des données issus d'une extraction et je dois faire la maj chaque jour, si je garde les données, le fichier risque de devenir très lourd au fur et à mesure que j'alimente avec de nouvelle donnée
Non, vous pouvez conserver les anciennes données et supprimer les lignes en doublons sur A B C D.

A+
 

Cousinhub

XLDnaute Barbatruc
Pas sur mon fichier ni sur celui du post #1, restons simples.

Je ne vois pas l'intérêt de faire des 1/2 journées pour compliquer les choses inutilement.
Bonjour Job
Je ne comprends pas du tout ton "restons simples"
Le demandeur l'a dit lui-même...
Il s'est trompé dans son 1er fichier, justement pour "faire simple", mais si tu lis tout le fil, tu t'en rendras compte...
Et toute journée peut-être décomposée, notamment pour les RTT, si accord
1707242057170.png

Bonne soirée
 

ChTi160

XLDnaute Barbatruc
Bonjour Rabeto ,Le Fil
je regarde ce fil et je me pose des questions Lol
tu as au Post #13 dans le Fichier de Patty
2023-01-01 13:30:00​
2023-01-01 13:30:00​
0,5
le 0,5 correspond a quoi ?
peux tu avoir des périodes qui chevauchent 2 mois ?
quelles Sont les Limites de 9:00 à 12:30 puis de 13:30 à 18:00
les demandes sont faites a partir de ces Horaires ?
Exemple pour le Jour de début de 13:30 si la personne travaille le Matin et 9:00 si la personne pose toute la Journée .
pour le Jour de Fin 12:30 si la personne travaille l'après midi et 18:00 si elle ne travaille pas de la Journée .

Bonne fin de Journée
jean marie
 

Discussions similaires

Statistiques des forums

Discussions
312 505
Messages
2 089 066
Membres
104 015
dernier inscrit
kkgk