Macro copier coller une plage de données colorée
Bonjour à tous et à toutes!
J'ai consulté quelques sujets concernant le problème qui me fait face, cela m'a permis d'écrire une macro mais celle-ci ne fonctionne pas excactement comme je le souhaite.
Je vous explique mon problème !
J'ai une plage de donnée. J'ai fais une macro qui colore les lignes selon la valeur de deux des cellules de la ligne.
Cette macro fonctionne comme je le souhaite. Mais, je veux ensuite copier ces lignes colorées afin de les coller dans ma deuxième feuille. J'ai alors écrit une macro mais celle-ci ne copie-colle que la première case en haut à gauche de ma plage de données.
Voici mon code :
Dim iRI 'On déclare iRI
Dim RI As Worksheet 'On définie RI comme feuille
Set RI = Worksheets("Bs rendu en Papier") 'On le nomme
iRE = 2 'On définit la valeur de iRE
For iRE = 2 To RE.Cells.Find("*", , , , , xlPrevious).Row
If RE.Range("A" & iRE).Interior.Color = RGB(225, 15, 15) Then
RE.Range("A" & iRE).Copy RI.Range("A2")
End If
NextEt voici mon fichier exemple pour mieu comprendre le lien avec ma macro précédente.
S'il vous plaît, une aide serait la bien venue! Je vous remercie par avance de l'interêt que vous portez envers mon problème.
Amicalement
Florian
Bonjour
D'abord :
- évite de colorier tes lignes sur toute ta feuille lorsque tu ne l'utilises que partiellement
- évite aussi les accents comme dans le nom du code.
Pour le nom de tes feuilles, évite aussi les espaces. Mets plutôt un caractère souligné "_" . cela évite des soucis pour la gestion des codes.
Mets ceci plutôt : "Bs_rendu_en_Papier"
Ton code adapté à ta demande
Sub probleme()
Dim iRE As Integer
Dim RE As Worksheet
Set RE = Worksheets("Extraction")
iRE = 2
For iRE = 2 To Cells.Find("*", , , , , xlPrevious).Row
If RE.Range("F" & iRE).Value = "" And RE.Range("K" & iRE).Value > 7 Then
RE.Range("A" & iRE & ":K" & iRE).Interior.Color = RGB(225, 15, 15)
End If
Next
Dim iRI As Integer 'On déclare iRE, iRI
Dim RI As Worksheet 'On définit RE comme feuille
Set RI = Worksheets("Bs rendu en Papier") 'On le nomme
iRE = 2 'On définit la valeur de iRE
For iRE = 2 To RE.Cells.Find("*", , , , , xlPrevious).Row
If RE.Range("A" & iRE).Interior.Color = RGB(225, 15, 15) Then
RE.Range("A" & iRE).Copy RI.Range("A" & RI.Range("A" & RI.Rows.Count).End(xlUp).Row + 1)
End If
Next
End SubSi ok, n'omet pas de cloturer le fil
Cordialement
Salut Dan! Merci beaucoup pour ta réponse qui est toujours aussi satisfaisante que les autres.
Elle me convient (même si je dois adapter les modifications que tu as faites pour obtenir le résultat que je souhaite), je vais donc la valider pour cloturer le fil!
Merci beaucoup pour les conseils que tu donnes aussi.
Amicalement
Florian