Remplissage tableau à partir de 2 conditions

6tab2022.xlsm (167.52 Ko)

Le bonjour à tous,

Etant bloqué de trouver la fonction qui me convient, permettez-moi d'exposer le problème que je rencontre en joignant mon fichier Excel avec un explicatif.

Je cherche à remplir les colonnes H/O uniquement de la feuille "CLEREPARTITION" coloré en jaune à partir de la feuille "RAPPORT", sachant que "CCP" est le maître d'ouvrage et "CC" est l'intervenant dans l'ouvrage.

En prenant le code Centre de Coût de la feuille CLEREPARTITION colonne B, je le recherche sur la feuille RAPPORT colonne B, dès que je le localise, je récupère le CC Colonne C qui a intervenu et prendre le taux horaire Colonne D et le mettre sur la feuille3 "CLEREPARTITION" dans la colonne qui correspond.

Merci pour toute solution de votre part.

Bonjour Zozo, bonjour le forum,

Si j'ai bien compris, une proposition VBA :

Sub ThauTheme()
Dim CL As Worksheet 'déclare la variable CL (onglet CLEREPARTITION)
Dim RA As Worksheet 'déclare la variable RA (onglet RAPPORT)
Dim TC As Variant 'déclare la variable TC (Tableau CLEREPARTITION)
Dim TR As Variant 'déclare la variable TR (tableau RAPPORT)
Dim R As Range 'déclare la variable R (Recherche)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Dim COL As Integer 'déclare la variable COL (COLonne)

Set CL = Worksheets("CLEREPARTITION") 'définit l'onglet CL
TC = CL.Range("A1").CurrentRegion 'définit le tableau TC
Set RA = Worksheets("RAPPORT") 'définit l'onglet RA
TR = RA.Range("A1").CurrentRegion 'définit le tableau TR
For I = 4 To UBound(TC, 1) 'boucle 1 : sur toutes les lignes I du tableau TC (en partant de la 4ème)
    For J = 2 To UBound(TR, 1) 'boucle 2 : sur toutes les lignes J du tableau TR (en partant de la 2ème)
        If TC(I, 2) = TR(J, 2) Then 'condition : si la donnée ligne I colonne 2 de TC est égale à la donnée ligne J colonne 2 de TR
            'définit la recherche R (recherche la valeur entière de la donnée ligne J colonne 3 de TR dans la ligne 1 de l'onglet CL)
            Set R = CL.Rows(1).Find(TR(J, 3), , xlValues, xlWhole)
            If Not R Is Nothing Then 'condition 2 : si au moins une occurrence est trouvée
                COL = R.Column 'définit la colonne COL de la première occurrence trouvée
                'renvoie la valeur de la donnée ligne J colonne 4 de TR dans la cellule ligne I colonne COL de l'onglet CL
                CL.Cells(I, COL).Value = TR(J, 4)
                Exit For 'sort de la boucle 2
            End If 'fin de la condition 2
        End If 'fin de la condition 1
    Next J 'prochaine ligne de la boucle 2
Next I 'prochaine ligne de la boucle 1
End Sub

Bonjour

Avec une interprétation différente de celle de ThauThème pour une demande franchement pas claire.

J'ai recherché dans la feuille "Rapport" les lignes qui correspondent à la fois aux lignes de la feuille "CLEREPARTITION" et aux codes de la première ligne de cette même feuille. J'ai injecté des valeur aléatoires dans la colonne D de la feuille "Rapport" pour faire des tests.

4tab2022-yal-v1.xlsm (260.30 Ko)

Merci pour vos réponse, je vous tiendrai au courant du résultat.

Cordialement

Rechercher des sujets similaires à "remplissage tableau partir conditions"