Vba excel pour effacer des cellules colorées

Fermé
bizoo - 2 juil. 2009 à 15:18
 bizoo - 2 juil. 2009 à 17:17
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

5 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
2 juil. 2009 à 16:40
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
Merci bcp, c'est un peu compliqué pour mon niveau vba mais jvais essayer.
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
2 juil. 2009 à 16:56
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
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

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

Posez votre question
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