Vba excel pour effacer des cellules colorées

Bonjour,

Je cherche à faire une petite macro pour effacer des colorées ( je suis débutant vba :) ) . En fait, j'ai d'abord utilisé la mise en forme conditionnel valeurs en double ( excel 2007 ) ce qui m'a colorié tous les doublons. Le fichier contient presque 10 000 données, je souhaite donc faire une macro pour effacer tous les doublons . La macro est simple puisque il s'agit simplement de balayer la premiére colonne et d'effacer la ligne entiere lorsque la cellule a été colorée par la mise en forme conditionnel. J’ai fait un test avec cette boucle :

Sub Test_color()

For ligne = 30 To 2 Step -1

Set cellule = Sheets("feuil1").Cells(ligne, 1)

If cellule.Interior.ColorIndex <> xlNone Then cellule.EntireRow.Delete

Next

End Sub

Le problème est qu’Excel m’efface toutes les lignes, il ne va pas chercher seulement les cellules colorées.

Merci d'avance pour votre aide
Configuration: Windows XP
Firefox 3.0.8

5 réponses

  1. Contributeur
    bonjour

    sans t'occuper des MFC qui sont la conséquences des doublons que tu cherche à éliminner: on s'attaque donc aux doublons (tableau sur 1 colonne A)

    essaies (réalisée ss XL<2007)

    Sub epurer()
    
    Dim triage As Collection
    Dim nbre As Long, cptr As Long
    
    'ActiveSheet.Unprotect
    Application.ScreenUpdating = False
    
    
    nbre = Application.CountA(Range("A:A"))
    Set triage = New Collection
    
    On Error Resume Next
    cptr = 1
    While cptr <= nbre
            'le parametre Key devant être unique, un doublon provoquerait une erreur _
            le gestionnaire étant activé, Tonton Vba ignore l'erreur et passe à la cellule suivante _
            s'il n'y a pas pas d'erreur le numéro d'item de la collection triage est alors implémenté
            triage.Add Cells(cptr, 1).Value, CStr(Cells(cptr, 1).Value)
            cptr = cptr + 1
    Wend
    On Error GoTo 0
    
    nbre = triage.Count
    
    ' Ecrit la zone épurée (ici dans des cellules mais peut-etre adapté à des listbox et combobox)
    Range("A:A").ClearContents
    cptr = 1
    While cptr <= nbre
        Cells(cptr, 1) = triage(cptr)
        cptr = cptr + 1
    Wend
    
    'ActiveSheet.Protect
    'libère le pointeur
    set triage= nothing
    
    End Sub
    

    1
    1. Merci bcp, c'est un peu compliqué pour mon niveau vba mais jvais essayer.
      0
      1. Contributeur
        Bonjour, comment va Michel ?
        bizoo : Pour ton info,
        Les couleurs d'une MFC ne sont pas "visble" façilement.
        pour les détecter tu peu t'inspirer

        de ce lien, couleur MFC
        A+
        0
        1. Je viens d'essayer, marche niquel, par contre juste une question, je voudrais que lorsque que le macro efface le doublon elle efface toute la ligne avec, seulement votre macro est un peu compliqué pour moi, je sais pas ou mettre le : cellule.entirerow.delete

          merci d'avance
          0
          1. Je vais même préciser quelque chose. Le but initial de ma manœuvre était de supprimer les doublons dans la colonne 1 mais la recherche des doublons se faisait dans la colonne 2, donc ensuite à terme je voulais supprimer toute cellule qui avait un doublon. maintenant avec votre macro je met tout en une seule colonne, je fais un tri et il me supprime les doublons . Cependant ce qu'il faudrait c'est que, des que excel trouve un doublon il supprime les 2.

            Ex : André
            André
            pierre
            jacques
            jacques

            aprés la macro il faudrait qu'il me reste seulement pierre; car lorsqu'il ya un doublon il faudrait supprimer les 2 en supprimant toute la ligne. En fait j'ai une base de donné de contact et lorsqu'il ya un doublon cela signifie que j'ai déja le contact dans mon logiciel et il ne faut pas que je le rentre 2 fois.

            Je ne sais pas si je suis claire. Si vous pouviez m'aider ça serait génial et bravo pour votre premiere macro. MErci d'avance
            0