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