Copier Coller une ligne si une cellule est surligner en rouge
Résolu
empereurtilleul
Messages postés
26
Date d'inscription
Statut
Membre
Dernière intervention
-
Le Pingou Messages postés 12249 Date d'inscription Statut Contributeur Dernière intervention -
Le Pingou Messages postés 12249 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 pdf - Guide
- Copier-coller - Accueil - Informatique
- Style d'écriture a copier coller - Guide
- Arobase copier coller - Forum Windows 10
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,