Copier valeurs dans nouvelles feuilles à partir de 2 conditions

Bonjour,

Je dois remplir l'onglet "Rapport" de mon fichier à partir de celui "Retraitement" et je souhaiterais utiliser une macro.

Je souhaite copier les valeurs (en violet) de l'onglet Retraitement dans l'onglet Rapport en fonction du nom de l’échantillon (Bleu) et de l'élément (Vert).

Je n'arrive malheureusement pas à trouver comment faire...Auriez-vous une solution?

Merci de votre aide.

6macro-valeur.xlsm (29.24 Ko)

Bonjour,

à tester,

=SIERREUR(INDIRECT("Retraitement!"&ADRESSE(EQUIV($J24;Retraitement!$C:$C;0);EQUIV($A24;Retraitement!$6:$6;0)));"")

Bonjour,

Une piste à tester :

Sub Test()

    Dim PlgRapport As Range
    Dim PlgRetrait As Range
    Dim Cel As Range
    Dim CelCherche As Range

    'défini les plages dans les deux feuilles
    With Worksheets("Rapport"): Set PlgRapport = .Range(.Cells(24, 10), .Cells(.Rows.Count, 10).End(xlUp)): End With
    With Worksheets("Retraitement"): Set PlgRetrait = .Range(.Cells(9, 3), .Cells(.Rows.Count, 3).End(xlUp)): End With

    'parcours la plage de la feuille "Rapport" (colonne J)
    For Each Cel In PlgRapport

        'effectue la recherche de l'élément dans la plage de la feuille "Retraitement" (colonne C)
        Set CelCherche = PlgRetrait.Find(Cel.Value, , xlValues, xlWhole)

        'si trouvé, recupère la valeur en fonction du code situé en colonne A de la feuille "Retraitement"
        'pour l'inscrire en colonne L de la feuille Rapport
        If Not CelCherche Is Nothing Then

            Select Case Cel.Offset(, -9).Value

                Case 82543: Cel.Offset(, 2).Value = CelCherche.Offset(, 1).Value
                Case 82544: Cel.Offset(, 2).Value = CelCherche.Offset(, 2).Value
                Case 82545: Cel.Offset(, 2).Value = CelCherche.Offset(, 3).Value

            End Select

        End If

    Next Cel

End Sub

Merci Theze, ça fonctionne bien.

Le nom en bleu est amené à changer chaque jour.

Il faut donc que je définisse aussi une plage en fonction du nom du produit?

En résumé, le but est si dans l'onglet "rapport" le nom de la colonne A+celui de la colonne J est le même que dans l'onglet "retraitement" de la ligne 6 et colonne C, alors copier la valeur correspondante dans la colonne L de "rapport".

Je vais essayer de faire la modif en partant de ce que tu m'as préparé.

Merci de ton aide

Bonjour,

Désolé du retard !

On peut par exemple utiliser un tableau auquel on affecte les trois valeurs :

Sub Test()

    Dim Tbl(1 To 3) As Long
    Dim PlgRapport As Range
    Dim PlgRetrait As Range
    Dim Cel As Range
    Dim CelCherche As Range

    'défini les plages dans les deux feuilles
    With Worksheets("Rapport"): Set PlgRapport = .Range(.Cells(24, 10), .Cells(.Rows.Count, 10).End(xlUp)): End With
    With Worksheets("Retraitement"): Set PlgRetrait = .Range(.Cells(9, 3), .Cells(.Rows.Count, 3).End(xlUp)): End With

    Tbl(1) = Worksheets("Retraitement").Range("D6").Value
    Tbl(2) = Worksheets("Retraitement").Range("E6").Value
    Tbl(3) = Worksheets("Retraitement").Range("F6").Value

    'parcours la plage de la feuille "Rapport" (colonne J)
    For Each Cel In PlgRapport

        'effectue la recherche de l'élément dans la plage de la feuille "Retraitement" (colonne C)
        Set CelCherche = PlgRetrait.Find(Cel.Value, , xlValues, xlWhole)

        'si trouvé, recupère la valeur en fonction du code situé en colonne A de la feuille "Retraitement"
        'pour l'inscrire en colonne L de la feuille Rapport
        If Not CelCherche Is Nothing Then

            Select Case Cel.Offset(, -9).Value

                Case Tbl(1): Cel.Offset(, 2).Value = CelCherche.Offset(, 1).Value
                Case Tbl(2): Cel.Offset(, 2).Value = CelCherche.Offset(, 2).Value
                Case Tbl(3): Cel.Offset(, 2).Value = CelCherche.Offset(, 3).Value

            End Select

        End If

    Next Cel

End Sub

Merci c'est parfait !!!

Rechercher des sujets similaires à "copier valeurs nouvelles feuilles partir conditions"