VBA - Inconvénients de ClearContents

  • Initiateur de la discussion Initiateur de la discussion job75
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

job75

XLDnaute Barbatruc
Bonjour à tous,

Je connaissais un inconvénient de "ClearContents" : plage.ClearContents peut entrainer un bug quand plage contient des cellules fusionnées.

Alors que plage = "" ne pose pas de problème.

Au post #17 de ce fil je découvre un autre inconvénient :

https://www.excel-downloads.com/threads/resolu-extraction-doublon-ligne-dans-plage.226619/

Quelqu'un peut-il expliquer dans ce dernier cas le fonctionnement de "ClearContents" et pourquoi = "" ne pose aucun problème ?

Merci d'avance et A +

Edit : la référence au fil d'Annette a compliqué la compréhension du problème.

Je l'ai reformulé simplement au post #32 :

https://www.excel-downloads.com/threads/vba-inconvenients-de-clearcontents.226675/

A+
 
Dernière édition:
Re : VBA - Inconvénients de ClearContents

Re,

Maintenant j'ai été voir pourquoi la fonction VBA ColorCountIf renvoie une valeur d'erreur.

Pour tester je l'ai modifiée comme suit (la variable macoul étant Variant) :

Code:
Function ColorCountIf(SearchArea As Object, BgColor As Range, deb As Integer, fin As Integer) As Variant
Application.Volatile True
On Error Resume Next 'évite l'arrêt du calcul
ColorCountIf = 0
macoul = BgColor.Font.ColorIndex
If IsEmpty(macoul) Then ColorCountIf = "aaa": Exit Function 'pour comprendre ce qui se passe
For Each cell In SearchArea
If cell.Font.ColorIndex = macoul And cell.Value >= deb And cell.Value <= fin Then ColorCountIf = ColorCountIf + 1
Next cell
End Function
On voit donc que macoul n'est pas calculée parce que BgColor.Font.ColorIndex renvoie une erreur.

Et tout ça serait dû à ClearContents... Très curieux non ?

A+
 
Re : VBA - Inconvénients de ClearContents

Re,

Dans la fonction ColorCountIf j'ai remplacé Font par Interior : le phénomène reste le même.

J'en conclus que l'utilisation de ClearContents perturbe la lecture des formats par la fonction.

A+
 
Re : VBA - Inconvénients de ClearContents

Bonjour Gerard

Dans le fichier exemple stats j'ai remplacé

Function ColorCountIf(SearchArea As Object, BgColor As Range, deb As Integer, fin As Integer) As Integer

par

Function ColorCountIf(SearchArea As Range, BgColor As Range, deb As Integer, fin As Integer) As Integer

Et il semble que cela ait arrangé les choses
 
Re : VBA - Inconvénients de ClearContents

Bonjour à tous

Euh, moi, j'ai rien compris, surtout sans fichier dans ce fils qui permettrait de voir plus facilement le problème.

Bon , après, j'ai déjà remarqué qu'il y'a des codes qui fonctionnent et d'autres qui ne fonctionnent pas 😕.
 
Re : VBA - Inconvénients de ClearContents

Bonjour à tous, [{job75, Si, leti,Efgé, pierrejean, MJ13}= 😉 ]

[aparté]
Et dire que l'objet du délit était là tapi dans l'ombre au moins depuis 8 ans 😉 (voir avant si on retourne à la source originelle)
https://www.excel-downloads.com/threads/fonction-conditionnelle.54152/
[/aparté]

MJ13
le fichier est là (comme indiqué par job75 dans le premier message)
https://www.excel-downloads.com/threads/resolu-extraction-doublon-ligne-dans-plage.226619/
 
Dernière édition:
Re : VBA - Inconvénients de ClearContents

Bonjour Gerard

Dans le fichier exemple stats j'ai remplacé:

Function ColorCountIf(SearchArea As Object, BgColor As Range, deb As Integer, fin As Integer) As Integer

par

Function ColorCountIf(SearchArea As Range, BgColor As Range, deb As Integer, fin As Integer) As Integer

ce qui semble-t-il a débloqué la fonction ColorCountIf
 
Re : VBA - Inconvénients de ClearContents

Bonjour les amis,

@ Pierre, SearchArea As Range ne change rien, je me demande ce que tu as testé.

@ Michel, la flemme aujourd'hui ? Le fichier à utiliser est bien sûr celui du post #15 du lien que j'ai indiqué.

@ JM, pas compris, tu peux expliciter ce que tu veux nous dire ?

A+
 
Re : VBA - Inconvénients de ClearContents

Re

Voici ce que j'ai testé:

Mais je suis peut-être hors sujet

Edit:

re testé et in fine ajouté

Sheets("Feuil5").Calculate

dans

Private Sub Worksheet_Change(ByVal Target As Range) de la feuille compare
 

Pièces jointes

Dernière édition:
Re : VBA - Inconvénients de ClearContents

Re

@ JM, pas compris, tu peux expliciter ce que tu veux nous dire ?

Je veux juste (théoriquement par un trait d'humour) dire que le code originel de la fonction est
Code:
Function ColorCountIf(SearchArea As Object, BgColor As Integer) As Integer 
'S. Royer, mpfe
     For Each cell In SearchArea 
ColorCountIf = ColorCountIf + Abs(cell.Interior.ColorIndex = BgColor)     
Next cell 
End Function
et qu'on en trouve trace sur le forum dans les archives du forum (cf le fil de 2006 que j'ai mis en lien)
2014-2006 = 8 ans, cela fait donc 8 ans qu'on utilise ce code sans avoir remarqué que peut-être SearchArea As Range est plus approprié que SearchArea As Object.

Comme ce trait d'humour n'était pas d'une haute importance, j'avais pris soin d'indiquer que ce n'était qu'un aparté.

Désolé du dérangement.
 
Re : VBA - Inconvénients de ClearContents

Re,

re testé et in fine ajouté

Sheets("Feuil5").Calculate

Bien sûr avec Calculate les fonctions sont recalculées, et cela efface donc l'effet qu'a eu ClearContents.

Je te rappelle que le sujet de ce fil c'est de comprendre pourquoi il y a problème avec ClearContents et pas avec = "".

As-tu vu ce que j'ai fait aux posts #16 et #17 de ce fil ?

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

P
Réponses
2
Affichages
1 K
Ptrs32
P
K
Réponses
5
Affichages
23 K
K
I
Réponses
8
Affichages
2 K
iStarOSX
I
A
Réponses
6
Affichages
1 K
admin4444
A
Retour