effacement selectif de cellules avec une couleur

pierre39

XLDnaute Nouveau
Bonjour
je suis sous excel 2013.
je voudrais remettre à zéro des cellules dans lesquelles j'entre des valeurs.
dans mon fichier joint, celles en jaune de c7 à t213
ces cellules ont une couleur jaune, celles que je ne veux pas effacer ne sont pas colorées .
il faut passer par une macro, mais en enregt automatique on en peut pas mettre une condition de couleur, donc du code mais je n'y connais rien.
Quelqu'un peut il m'aider?
Merci d'avance
 

Pièces jointes

  • ANALYSE FINANCIERE.xlsm
    261 KB · Affichages: 56

Modeste

XLDnaute Barbatruc
Re : effacement selectif de cellules avec une couleur

Bonsoir pierre39 et bienvenue à toi,

Tu n'as pas vraiment posté au bon endroit: le forum Excel aurait été plus indiqué ... Ceci explique sans doute en partie le succès mitigé de ton fil :)

Pour ne pas laisser cette bouteille à la mer sombrer corps et âme, on pourrait imaginer, plutôt que d'effacer le contenu d'une série de cellules a posteriori, de créer un modèle de classeur (*.xltx) qui serait, à chaque création d'un fichier basé sur ce modèle, vierge de données dans les fameuses cellules jaunes (les formules, MFC, validations et autres seraient, quant à elles présentes dans le modèle en question).
L'écriture du code, en elle-même prendra autant de temps que la sélection et l'effacement du contenu des cellules jaunes. L'intérêt de la démarche ne saute pas tout à fait aux yeux ... ceci expliquant, pour une autre part, le succès mitigé ... etc. ;)

Et puis, plus "prosaïquement", voyons déjà si tu repasses par ici :confused:
 

pierre39

XLDnaute Nouveau
Re : effacement selectif de cellules avec une couleur

Bonsoir Modeste,
merci pour la réponse.
C'est effectivement une solution, le seul hic lié au modèle, c'est généralement que quand on modifie le fichier sur lequel on travaille on ne modifie pas le modèle! J'aurais préféré une solution plus rapide...
Merci encore.
A +
PIERRE39
 

Modeste

XLDnaute Barbatruc
Re : effacement selectif de cellules avec une couleur

Bonjour,

Ah ben ça .. tu es bien revenu ... et même David ou Pascal ont déplacé la discussion dans le bon forum. En voilà deux bonnes nouvelles!

Par contre, quand tu dis:
le seul hic lié au modèle, c'est généralement que quand on modifie le fichier sur lequel on travaille on ne modifie pas le modèle!
C'est bien là l'idée du modèle: préserver le document initial :confused:

... et je comprends moins encore le rapport avec la suite:
J'aurais préféré une solution plus rapide...


D'autre part, dans ta plage de C7 à T213, tu as tout de même de-ci de-là une ou deux formules dans des cellules jaunes.

Si tu tiens vraiment à passer par une macro, il me semble que je démarrerais avec le code suivant ... qu'il faudra peut-être adapter/peaufiner par la suite? Celui-ci n'efface pas les cellules contenant des formules (puisque tu parlais de cellules où tu "entrais des valeurs")
Dans ton module standard, colle ce qui suit:
VB:
Sub efface()
With Sheets("ANALFIN")
    For Each c In .[C7:T213].SpecialCells(xlCellTypeConstants)
        If c.Interior.Color = 10092543 Then c.Value = ""
    Next c
End With
End Sub
 

pierre39

XLDnaute Nouveau
Re : effacement selectif de cellules avec une couleur

Bonjour Modeste,

Merci pour cette solution qui me convient pour le moment, elle permet d'effacer un maximum de cellules dans lesquelles sont entrées des valeurs. Pour celles , inévitables, dans lesquelles je suis obligé de mettre une formule, je les effacerai manuellement.

Pour ta remarque justifiée sur le modèle : par expérience, on part d'un modèle, mais bien souvent on apporte des modifications sur un classeur et on oublie, par fainéantise ou manque de temps , d'aller modifier le modèle de base.
Et on repart du dernier classeur utilisé qu'il faut remettre à blanc...

Merci encore, car avec cette macro, je vais pouvoir diffuser ce classeur auprès de collègues pour leur faciliter la vie..

Bonne soirée et à bientot.

Pierre39


Bonjour,

Ah ben ça .. tu es bien revenu ... et même David ou Pascal ont déplacé la discussion dans le bon forum. En voilà deux bonnes nouvelles!

Par contre, quand tu dis:

C'est bien là l'idée du modèle: préserver le document initial :confused:

... et je comprends moins encore le rapport avec la suite:



D'autre part, dans ta plage de C7 à T213, tu as tout de même de-ci de-là une ou deux formules dans des cellules jaunes.

Si tu tiens vraiment à passer par une macro, il me semble que je démarrerais avec le code suivant ... qu'il faudra peut-être adapter/peaufiner par la suite? Celui-ci n'efface pas les cellules contenant des formules (puisque tu parlais de cellules où tu "entrais des valeurs")
Dans ton module standard, colle ce qui suit:
VB:
Sub efface()
With Sheets("ANALFIN")
    For Each c In .[C7:T213].SpecialCells(xlCellTypeConstants)
        If c.Interior.Color = 10092543 Then c.Value = ""
    Next c
End With
End Sub
 

Modeste

XLDnaute Barbatruc
Re : effacement selectif de cellules avec une couleur

Re,

J'ai mieux compris ton souci avec le modèle (même si, avec un peu de rigueur, on devrait arriver à ses fins :D)

Effacer l'ensemble des cellules jaunes (qu'elles contiennent des constantes ou des formules) peut se faire en supprimant la références aux cellules contenant des constantes ... (voir partie mise en commentaire dans le code).
Un souci pourrait apparaître si la plage de cellules avait tendance, dans l'avenir, à croître de manière démesurée.
VB:
Sub efface()
Application.ScreenUpdating = False
With Sheets("ANALFIN")
     For Each c In .[C7:T213] '.SpecialCells(xlCellTypeConstants) 
         If c.Interior.Color = 10092543 Then c.Value = ""
     Next c
End With
Application.ScreenUpdating = True
End Sub
... en "suspendant" le rafraîchissement de l'écran pendant l'exécution (Application.ScreenUpdating), on gagnera peut-être quelques fractions de secondes (en fonction de la taille de la plage, comme évoqué plus haut)
 

pierre39

XLDnaute Nouveau
Re : effacement selectif de cellules avec une couleur

Re,
merci pour l'additif, c'est super!

Pierre39

Re,

J'ai mieux compris ton souci avec le modèle (même si, avec un peu de rigueur, on devrait arriver à ses fins :D)

Effacer l'ensemble des cellules jaunes (qu'elles contiennent des constantes ou des formules) peut se faire en supprimant la références aux cellules contenant des constantes ... (voir partie mise en commentaire dans le code).
Un souci pourrait apparaître si la plage de cellules avait tendance, dans l'avenir, à croître de manière démesurée.
VB:
Sub efface()
Application.ScreenUpdating = False
With Sheets("ANALFIN")
     For Each c In .[C7:T213] '.SpecialCells(xlCellTypeConstants) 
         If c.Interior.Color = 10092543 Then c.Value = ""
     Next c
End With
Application.ScreenUpdating = True
End Sub
... en "suspendant" le rafraîchissement de l'écran pendant l'exécution (Application.ScreenUpdating), on gagnera peut-être quelques fractions de secondes (en fonction de la taille de la plage, comme évoqué plus haut)
 

Discussions similaires

Réponses
2
Affichages
158

Statistiques des forums

Discussions
312 206
Messages
2 086 207
Membres
103 158
dernier inscrit
laufin