Copier-Coller sous condition de couleur

Résolu/Fermé
Andbed Messages postés 14 Date d'inscription mercredi 16 octobre 2013 Statut Membre Dernière intervention 5 juin 2014 - Modifié par pijaku le 10/12/2013 à 08:50
Andbed Messages postés 14 Date d'inscription mercredi 16 octobre 2013 Statut Membre Dernière intervention 5 juin 2014 - 10 déc. 2013 à 20:48
Bonjour,

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:

6 réponses

melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
9 déc. 2013 à 16:39
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.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
9 déc. 2013 à 16:47
Bonjour,

Normal si couleur vient d'une MFC
0
Andbed Messages postés 14 Date d'inscription mercredi 16 octobre 2013 Statut Membre Dernière intervention 5 juin 2014 1
Modifié par Andbed le 10/12/2013 à 09:17
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.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
10 déc. 2013 à 08:58
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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Andbed Messages postés 14 Date d'inscription mercredi 16 octobre 2013 Statut Membre Dernière intervention 5 juin 2014 1
10 déc. 2013 à 15:27
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
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
10 déc. 2013 à 15:47
Si tu ne veux pas les lignes ou il n'y a rien en colonne E :

If .Cells(Lig, Col).Value < CDate(Date + 13) And .Cells(Lig, Col).Value <> "" Then 


Prends l'habitude ici d'utiliser les balises code <> en haut de la zone de texte.
0
Andbed Messages postés 14 Date d'inscription mercredi 16 octobre 2013 Statut Membre Dernière intervention 5 juin 2014 1
10 déc. 2013 à 20:48
Merci pijaku, c'était pas grand chose, mais il fallait y penser.

Merci aussi aux autres intervenants pour leurs conseils avisés.
0