Copier Coller une ligne si une cellule est surligner en rouge
Résolu
empereurtilleul
Messages postés
26
Statut
Membre
-
Le Pingou Messages postés 12640 Date d'inscription Statut Contributeur Dernière intervention -
Le Pingou Messages postés 12640 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je voudrais copier coller une ligne si celle ci est surligné en rouge, dans une autre feuille nommée "Alerte".
Il peut y avoir plusieurs ligne surligner en rouge, je voudrais donc les mettre à la suite.
Merci d'avance
Voici mon code,
Je voudrais copier coller une ligne si celle ci est surligné en rouge, dans une autre feuille nommée "Alerte".
Il peut y avoir plusieurs ligne surligner en rouge, je voudrais donc les mettre à la suite.
Merci d'avance
Voici mon code,
Const coul1 = 15
Const coul2 = xlNone
Const codeb = 1
Const coreg = 3
Const coite = 4
Const copre = 6
Const cocam = 7
Const corec = 8
Const coext = 9
Const copro = 10
Const comac = 11
Const lideb = 2
Const rouge = 3
Const vert = 50
Public Sub ok()
Dim li As Long, lifin As Long, coul As Long
Dim reg As String, li1 As Long, li2 As Long, ok As Boolean
Dim cofin As Long, co As Long, s As Long, plage As Range, cel As Range, lc As String
Dim mac As Long, ite As String
Dim obj As Object, liobj As Long
lifin = Cells(Rows.Count, coreg).End(xlUp).Row
cofin = Cells(1, Columns.Count).End(xlToLeft).Column
Set plage = Range(Cells(lideb, codeb), Cells(lifin, cofin))
plage.Interior.ColorIndex = xlNone
plage.Interior.ColorIndex = xlAutomatic
Application.ScreenUpdating = False
coul = coul1
Range(Cells(lideb, codeb), Cells(lideb, cofin)).Interior.ColorIndex = coul
' alternance coul1 - coul2
For li = lideb + 1 To lifin
Range(Cells(li, codeb), Cells(li, cofin)).Interior.ColorIndex = coul
If Cells(li, coreg).Value <> Cells(li + 1, coreg) Then coul = coul1 + coul2 - coul
Next li
' les surlignements rouges
li1 = lideb
Do
reg = Cells(li1, coreg).Value
ok = True
lc = ""
li2 = li1
While Cells(li2, coreg).Value = reg And li2 <= lifin
Set plage = Range(Cells(li2, copre), Cells(li2, copro))
s = Application.WorksheetFunction.Sum(plage)
If s <> 1 Then ok = False
If ok Then
For Each cel In plage
If cel.Value <> "" Then
co = cel.Column
If co = corec Or co = coext Then co = corec
If InStr(1, lc, co - 1) = 0 Then lc = lc & co - 1
End If
Next cel
If Len(lc) > 1 Then ok = False
End If
li2 = li2 + 1
Wend
suite:
If Not ok Then Range(Cells(li1, codeb + 1), Cells(li2 - 1, cofin)).Interior.ColorIndex = rouge
If Not ok Then Range(Cells(li1, codeb + 1), Cells(li2 - 1, cofin)).Select
Selection.Copy
Sheets("Feuil3").Select
Range("A1").Select
ActiveSheet.Paste
li1 = li2
Loop Until li2 > lifin
' les surlignements verts
li1 = lideb
Do
reg = Cells(li1, coreg).Value
If Cells(li1, copro) = 1 Then
ite = Cells(li1, coite).Value
mac = Cells(li1, comac).Value
Set plage = Range(Cells(li1, coite), Cells(lifin, coite))
Set obj = plage.Find(ite, , , xlWhole)
If Not obj Is Nothing Then
liobj = obj.Row
If Cells(liobj, copre).Value = 1 And Cells(liobj, comac).Value = mac + 1 Then
Set plage = Range(Cells(li1, codeb), Cells(li1, cofin))
plage.Font.ColorIndex = vert
Set plage = Range(Cells(liobj, codeb), Cells(liobj, cofin))
plage.Font.ColorIndex = vert
End If
End If
End If
li1 = li1 + 1
Loop Until li1 >= lifin
End Sub
Configuration: Windows / Chrome 91.0.4472.77
A voir également:
- Vous ne pouvez pas coller cet élément ici car les zones copier et de collage
- Historique copier coller - Guide
- Copier-coller - Accueil - Informatique
- Copier coller pdf - Guide
- Style d'écriture a copier coller - Guide
- Symbole clavier copier coller - Guide
13 réponses
Bonjour,
Je n’arrive pas à choisir les cellules surligner en rouge afin de les coller dans la feuille « Alerte ».
Je n’arrive pas à choisir les cellules surligner en rouge afin de les coller dans la feuille « Alerte ».
Bonjour,
J'ai des regroupements contenant des items, ces items doivent tous être au même endroit.
Si elles ne le sont pas, tout le regroupement est surligné en rouge (d'où la verif des colonnes).
Je veux maintenant créer une feuille "Alerte" avec tout les regroupements en rouge.
Je veux donc savoir comment je copie colle ces regroupements en rouge dans le feuille "Alerte".
C'est pour cela que j'ai ajouté le code
Merci d'avance
J'ai des regroupements contenant des items, ces items doivent tous être au même endroit.
Si elles ne le sont pas, tout le regroupement est surligné en rouge (d'où la verif des colonnes).
Je veux maintenant créer une feuille "Alerte" avec tout les regroupements en rouge.
Je veux donc savoir comment je copie colle ces regroupements en rouge dans le feuille "Alerte".
C'est pour cela que j'ai ajouté le code
Merci d'avance
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Merci.
voici le code pour copier et coller (si surligner en rouge la cellule de la colonne "A") la ligne vers la feuille "Alerte".
Merci.
voici le code pour copier et coller (si surligner en rouge la cellule de la colonne "A") la ligne vers la feuille "Alerte".
Sub CopColLigneS()
For li = 1 To Cells(Rows.Count, 1).End(xlUp).Row
Application.ScreenUpdating = False
If 3 = Cells(li, 1).Interior.ColorIndex Then
Rows(li).Copy
Sheets("Alerte").Select
Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("Feuil1").Activate
End If
Next li
Application.ScreenUpdating = True
End Sub
Merci,
Malheureusement, j'obtiens ce message:
"Erreur d'exécution '1004':
Vous ne pouvez pas coller cet élément ici, car les zones copier et de collage sont de tailles différente.
Selectionnez une seule cellule dans la zone de collage ou une zone de même taille, puis réessayez de coller"
De plus, si je comprend bien le code:
Correspond à "si le surlignement de la cellule(li, Colonne A) est rouge"
Si je veux choisir la colonne c par exemple je modifie à :
Merci d'avance
Malheureusement, j'obtiens ce message:
"Erreur d'exécution '1004':
Vous ne pouvez pas coller cet élément ici, car les zones copier et de collage sont de tailles différente.
Selectionnez une seule cellule dans la zone de collage ou une zone de même taille, puis réessayez de coller"
De plus, si je comprend bien le code:
If 3 = Cells(li, 1).Interior.ColorIndex Then
Correspond à "si le surlignement de la cellule(li, Colonne A) est rouge"
Si je veux choisir la colonne c par exemple je modifie à :
If 3 = Cells(li, 3).Interior.ColorIndex Then?
Merci d'avance
Bonjour,
Chez moi le code est parfait il fait exactement selon : Copier-Coller une ligne si une cellule est surlignée en rouge : Il prend en compte la couleur de surlignage de la cellule de la colonne "A:A".
Je ne sais pas la structure de votre base de données…je ne peux rien dire de plus... !
Pour l'indice de colonne "C" =3 pour "A"=1 c'est correct
Salutations.
Le Pingou
Chez moi le code est parfait il fait exactement selon : Copier-Coller une ligne si une cellule est surlignée en rouge : Il prend en compte la couleur de surlignage de la cellule de la colonne "A:A".
Je ne sais pas la structure de votre base de données…je ne peux rien dire de plus... !
Pour l'indice de colonne "C" =3 pour "A"=1 c'est correct
Salutations.
Le Pingou
Bonjour,
J'ai réglé le dernier problème, malheureusement j'en ai un autre (je n'ai pas beaucoup de chance)
Le code copie colle bien les lignes en rouge, néanmoins dans la feuille alerte j'ai seulement la dernière ligne surligner en rouge.
Comment je fais pour que cela se copie colle à la première ligne vide (La colonne où j'ai toujours quelque chose de non vide est la colonne C).
Merci beaucoup
J'ai réglé le dernier problème, malheureusement j'en ai un autre (je n'ai pas beaucoup de chance)
Le code copie colle bien les lignes en rouge, néanmoins dans la feuille alerte j'ai seulement la dernière ligne surligner en rouge.
Comment je fais pour que cela se copie colle à la première ligne vide (La colonne où j'ai toujours quelque chose de non vide est la colonne C).
Merci beaucoup
Bonjour,
Il fonctionne correctement chez moi.
Mettez moi à disposition le code complet tel que vous l'utilisé .
Une image des 2 feuilles (feuille de donnée et Alerte)
Il fonctionne correctement chez moi.
Mettez moi à disposition le code complet tel que vous l'utilisé .
Une image des 2 feuilles (feuille de donnée et Alerte)
Bonjour,
Merci, cependant la première image sans les en-têtes ne me serve à rien et en plus il manque le code !
Dans un premier temps essayez de modifier ma ligne de code comme suit:
Note je serais absent jusqu'en début d'après-midi.
Merci, cependant la première image sans les en-têtes ne me serve à rien et en plus il manque le code !
Dans un premier temps essayez de modifier ma ligne de code comme suit:
Range("C" & Rows.Count).End(xlUp).Offset(1, -2).Select
Note je serais absent jusqu'en début d'après-midi.
Bonjour,
En modifiant votre ligne de code, j'ai bien ce qu'il faut merci beaucoup.
C'est un peu compliqué de vous joindre la totalité du code. En effet, la feuille de données provient d'un tableau croisé dynamique qui trouve sa source dans un fichier externe qui s'actualise toutes les 15 minutes.
Merci pour votre aide,
Cordialement,
En modifiant votre ligne de code, j'ai bien ce qu'il faut merci beaucoup.
C'est un peu compliqué de vous joindre la totalité du code. En effet, la feuille de données provient d'un tableau croisé dynamique qui trouve sa source dans un fichier externe qui s'actualise toutes les 15 minutes.
Merci pour votre aide,
Cordialement,

