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)...

patty58

XLDnaute Occasionnel
Bonjour à tous , Bonjour Rabeto
Si ton fichier est sans cesse modifié, je vais abandonner, je pense.
J'avais commencé à le reprendre pour trouver les colonnes et lignes sans mettre des valeurs fixes, au cas où tu bouleverses encore tout, mais je vois que pour un même ID, tu as encore plusieurs types en fonction des agents.
Donc, pour moi, c'est un gros chantier et il manque du coup des explications.
Je laisse cela à plus fort que moi, je suis trop âgée pour me prendre la tête à ce point sans être sûre, en plus, de te donner satisfaction.
Je suis désolée, j'espère que tu vas trouver quelqu'un de compétent.
Bonne fin de journée
 

Rabeto

XLDnaute Occasionnel
Bonjour patty58

Je l'ai juste adapté avec le format final dont j'ai besoin,
je pensais que changer quelque valeurs dans tes codes me permets d'avoir ce dont j'ai besoin au final mais j'y ai travaillé sans succès.

mais je vois que pour un même ID, tu as encore plusieurs types en fonction des agents.
ne t'en fait pas pour ces valeurs qui se répètent, ce dont j'ai besoin, c'est juste une MAJ de ton codes selon le dernier model, car tes codes fonctionnent bien.

A moi de rectifier les valeurs répétitifs dans la base.
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Ceci devrait être un peu plus rapide :
VB:
Sub Plani()
   Dim TDon(), RngPlan As Range, DtDéb As Date, DtFin As Date, TPlan(), L As Long, Dt As Date
   TDon = ActiveSheet.[A2].Resize(ActiveSheet.[A1000000].End(xlUp).Row - 1, 4).Value
   Set RngPlan = ActiveSheet.[G3].Resize(UBound(TDon, 1), ActiveSheet.[AN2].End(xlToLeft).Column - 6)
   DtDéb = RngPlan(0, 2).Value
   RngPlan(0, 3).Resize(1, RngPlan.Columns.Count - 2).FormulaR1C1 = "=RC[-1]+1"
   DtFin = RngPlan(0, RngPlan.Columns.Count).Value
   ReDim TPlan(1 To UBound(TDon, 1), 1 To DtFin - DtDéb + 2)
   For L = 1 To UBound(TDon, 1)
      TPlan(L, 1) = TDon(L, 1)
      For Dt = Int(TDon(L, 3)) To Int(TDon(L, 4))
         If Dt > DtFin Then Exit For
         If Dt >= DtDéb Then TPlan(L, Dt - DtDéb + 2) = TDon(L, 2)
         Next Dt, L
   ActiveSheet.[G3].Resize(UBound(TPlan, 1), UBound(TPlan, 2)).Value = TPlan
   End Sub
 

klin89

XLDnaute Accro
Bonjour à tous 😃

Pour ton problème, tu peux utiliser un dictionnaire pour ventiler tes données.
Pour les récupérer, tu parcours le premier tableau pour former la clé et y associer l'item comme ceci :
Dico(Id & ladate) = "CP"

Ensuite avec la méthode exists du dictionnaire, tu ventiles tes données en parcourant l'autre tableau.

klin89
 

Cousinhub

XLDnaute Barbatruc
Inactif
Par macro si possible :)
Bonjour,
Hélas...
Power Query pourrait-il faire l'affaire?
2 ou 3 secondes pour remplir
De plus, comme tu travailles par demi-journée, tu peux avoir des Types différents pour la même journée (Ex: l'ID 8053, le 04/10/2023, matin en CP, apm en TT)
1707063713762.png

Si ça t'intéresse, bien sûr...
Bonne fin d'apm
 

Discussions similaires

Statistiques des forums

Discussions
315 093
Messages
2 116 127
Membres
112 667
dernier inscrit
foyoman