Copier-Coller sous condition de couleur
Résolu
Andbed
Messages postés
14
Date d'inscription
Statut
Membre
Dernière intervention
-
Andbed Messages postés 14 Date d'inscription Statut Membre Dernière intervention -
Andbed Messages postés 14 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voici mon code :
Pourquoi ne fonctionne-t-il pas?
Merci de vos réponses.
Voici mon code :
Private Sub CommandButton1_Click() Dim Lig As Long Dim Col As String Dim NbrLig As Long Dim NumLig As Long Sheets("Synthèse").Activate ' feuille de destination Col = "E" ' colonne de la donnée non vide à tester NumLig = 5 ' début de la ligne à écrire dans la feuille de destination With Sheets("Fichier inv") ' feuille source NbrLig = .Cells(500, Col).End(xlUp).Row 'zone à tester For Lig = 7 To NbrLig 'définition du commencement et de la fin de la zone à tester If .Cells(Lig, Col).Font.Color = RGB(255, 0, 0) Then 'condition de test : si le texte de la cellule de la colonne E est rouge alors .Cells(Lig, Col).EntireRow.Copy 'copie de la ligne entière NumLig = NumLig + 1 'sélection de la ligne de destination Cells(NumLig, 1).Select ' ActiveSheet.Paste 'Coller sur la feuille de destination End If Next 'boucle End With 'Fin de boucle End Sub
Pourquoi ne fonctionne-t-il pas?
Merci de vos réponses.
A voir également:
- Copier-Coller sous condition de couleur
- Excel cellule couleur si condition texte - Guide
- Historique copier coller - Guide
- Copier coller pdf - Guide
- Copier-coller - Accueil - Informatique
- Style d'écriture a copier coller - Guide
6 réponses
Bonjour,
tout dépend de ton fichier.
Voici ce que fait ton code et il fonctionne :
- il balaie toute la colonne E de la feuille Fichier inv
- Si dans la colonne E, tu as une donnée écrite en rouge (RGB(255,0,0)) alors il copie la ligne dans la feuille synthèse.
Il faudrait voir ton fichier (en le mettant sur cjoin.com et mettant le lien ici) pour savoir ce que tu voudrais que ton code fait et qu'il ne fait pas.
tout dépend de ton fichier.
Voici ce que fait ton code et il fonctionne :
- il balaie toute la colonne E de la feuille Fichier inv
- Si dans la colonne E, tu as une donnée écrite en rouge (RGB(255,0,0)) alors il copie la ligne dans la feuille synthèse.
Il faudrait voir ton fichier (en le mettant sur cjoin.com et mettant le lien ici) pour savoir ce que tu voudrais que ton code fait et qu'il ne fait pas.
Voici le lien du fichier en question : https://www.cjoint.com/?3LkiAqWXrVU
Les codes liés aux boutons du fichiers ont été réalisés via des solutions trouvées sur internet et de fait pas forcément optimisées...je ne maitrise pas VBA.
Et effectivement la couleur rouge est une MFC, de fait comment palier à ça?
En tout cas, merci vos conseils.
Les codes liés aux boutons du fichiers ont été réalisés via des solutions trouvées sur internet et de fait pas forcément optimisées...je ne maitrise pas VBA.
Et effectivement la couleur rouge est une MFC, de fait comment palier à ça?
En tout cas, merci vos conseils.
Bonjour,
Ton code ne peux pas fonctionner car la couleur de ta police est obtenue par Mise en Forme conditionnelle.
Pour t'en persuader, clic droit sur une cellule concernée (E8 par exemple), Format de cellules, et regarde la couleur de ta police. Elle est bien en auto et donc pas RGB(255, 0, 0).
Il faut donc que ton test ne se fasse pas sur la couleur, mais sur la même formule que dans ta mise en forme conditionnelle.
En fait, lorsque tes cellules en colonne E sont rouges (ou vertes), c'est qu'une condition est remplie. Par conséquent, utilises cette condition dans ton If...
Ton code ne peux pas fonctionner car la couleur de ta police est obtenue par Mise en Forme conditionnelle.
Pour t'en persuader, clic droit sur une cellule concernée (E8 par exemple), Format de cellules, et regarde la couleur de ta police. Elle est bien en auto et donc pas RGB(255, 0, 0).
Il faut donc que ton test ne se fasse pas sur la couleur, mais sur la même formule que dans ta mise en forme conditionnelle.
En fait, lorsque tes cellules en colonne E sont rouges (ou vertes), c'est qu'une condition est remplie. Par conséquent, utilises cette condition dans ton If...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai modifié la ligne condition dans le If :
If .Cells(Lig, Col).Font.Color = RGB(255, 0, 0) Then
Par :
If .Cells(Lig, Col).Value < CDate(Date + 13) Then
ça fonctionne mieux, mais le filtre me copie des lignes de la feuille "Fichier inv" qui n'ont pas de valeur, dans la feuille "Synthèse". De fait, je me retrouve avec une liste synthétique non représentative du travail que j'aurai a faire en réalité.
Comment palier à cette intégration de ligne en "trop" ?
Nouveau lien : https://www.cjoint.com/?3LkpARbfbmw
If .Cells(Lig, Col).Font.Color = RGB(255, 0, 0) Then
Par :
If .Cells(Lig, Col).Value < CDate(Date + 13) Then
ça fonctionne mieux, mais le filtre me copie des lignes de la feuille "Fichier inv" qui n'ont pas de valeur, dans la feuille "Synthèse". De fait, je me retrouve avec une liste synthétique non représentative du travail que j'aurai a faire en réalité.
Comment palier à cette intégration de ligne en "trop" ?
Nouveau lien : https://www.cjoint.com/?3LkpARbfbmw