Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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,

En fait la référence au fil d'Annette a compliqué le problème posé.

Je le reformule plus simplement avec ce code dans le fichier joint :

Code:
Function Mafonction(c As Range)
Application.Volatile
Mafonction = c.Interior.ColorIndex 'c.Font.ColorIndex
End Function

Sub Efface1()
[B3].ClearContents
End Sub

Sub Efface2()
[B3] = ""
End Sub
Pourquoi y a-t-il #VALEUR! en D3 avec Efface1 et pas avec Efface2 ?

A+
 

Pièces jointes

Re : VBA - Inconvénients de ClearContents

salut the Crowd

En fait la référence au fil d'Annette a compliqué le problème posé.

Eh oui ! Serais-je parmi les quelques personnes qui ont saisi ta demande (sans me préoccuper de la fonction) pour avoir suivi ce fil ?

Ta remarque à propose de Application.Calculation m’a permis de me rappeler que, justement, je l’utilisais dans le fichier que j’avais conçu. Pour ne pas mélanger les sujets je le joins ici.

Si j’ai parlé de l’existence, c’était pour savoir quel était son contexte d’application donc de sa façon d’agir. Comme toi, je ne peux que constater les effets en essayant de les analyser et de «supputer » mais je serais aussi heureux d’en appréhender le pourquoi du comment.

Donc Wait and see …😎
 
Re : VBA - Inconvénients de ClearContents

Bonsoir, Gérard, bonsoir lézamis.

Peut-être un début de commencement de piste : rien serait-il différent de "" ?
(Voir zone B23 à D24 du fichier joint)

Edit : Et il semblerait que la formule ="" ne renvoie pas la même "absence de chose" que son équivalent VBA 😕😕
 

Pièces jointes

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

Bonsoir tous.

M'a l'air d'un bogue dans Excel (ce n'est pas le seul, loin de là).
Ne se produit pas chez moi en affectant Empty plutôt que "", ce qui est quand même plus proche de l'effet du ClearContents.
Ça va peut être me conduire utiliser de moins en moins celui ci.

P.S. En revalidant la formule lorsqu'elle affichait #VALEUR! elle redonnait déjà le bon résultat. C'est donc un problème aberrant d’accessibilité à certaines propriété de l'objet Range juste après un ClearContents, le calcul de la formule étant peut être effectué trop tôt…
 
Dernière édition:
Re : VBA - Inconvénients de ClearContents

Bonsoir Patrick, Bernard,

Et il semblerait que la formule ="" ne renvoie pas la même "absence de chose" que son équivalent VBA 😕😕

Dans une cellule la formule ="" donne un texte vide, c'est très classique, je pensais que tu connaissais ça.

C'est donc un problème aberrant d’accessibilité à certaines propriété de l'objet Range juste après un ClearContents, le calcul de la formule étant peut être effectué trop tôt

C'est aussi ce que j'arrive à penser, le recalcul a lieu alors que ClearContents travaille encore.

Bonne fin de soirée.
 
Re : VBA - Inconvénients de ClearContents

re

C'est aussi ce que j'arrive à penser, le recalcul a lieu alors que ClearContents travaille encore.

à moins que la fonction ne soit prioritaire sur le Range comme le dit Dranreb, sans qu'il y ait nécessairement une aberration (supposition personnelle quant au choix de la priorité choisie à la conception).
 
Re : VBA - Inconvénients de ClearContents

Bonjour.
Ce n'est pas vraiment ce que j'ai dit. Je pense que, le ClearContent entrainant une modification de valeurs de cellules, ils ont lancé la mis en œuvre des calculs aussitôt que cet effet était produit, sans imaginer que des fonctions pouvaient aller se baser sur autre chose que la valeur, tel que la propriété Interior, qui n'est, à ce moment là du processus pas du tout encore remise d'équerre avec le reste dans la représentation interne de l'objet Range.
Si, c'est aberrant. C'est de la programmation de salopard, de la programmation de Microsoft.
 
Dernière édition:
Re : VBA - Inconvénients de ClearContents

Bonjour à tous,

Ce que j'ai constaté, pour faire avancer...
L'événement Calculate est bien appelé, la fonction est bien évaluée, mais que si on a mis un point d'arrêt sur ClearContents (?) Seulement à cet instant beaucoup de propriétés de c (dont .interior) ne sont pas lisibles.
Au delà de ça ce sont toutes les cellules dont on ne peut pas lire les propriétés.
Un peu comme si le Calculate était lancé au milieu du clearcontents alors qu'il n'a pas fini le travail.
Edit : bon, je viens de voir que ça fait un peu doublon avec ce qu'à dit Dranreb

Autre bizarrerie qui montre qu'on est dans une situation ambiguë : =D3 (et même =D3+2) sur la feuille donne 0 et non #VALEUR!

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

Bonjour à tous 🙂,

Tout a été dit. Juste pour visualiser ce qui se passe, un fichier avec quelques debug.print pour se rendre compte des appels et sorties de procédures ou fonction. Le cas de Clearcontents aboutit à un appel de la fonction Mafonction puis à un recalcul au sein de Mafonction mais on revient pas dans Mafonction 🙁 pour en sortir correctement et retourner la bonne valeur.
 

Pièces jointes

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

Bonjour à tous.


Si on en croit l'aide fournie par le Bill's Gang :

Range.ClearContents, méthode

Cette méthode efface les formules de la plage.

Mais on nous dit pas tout ! comme dit la p'tite dame.

En vrai, Range.ClearContents, fait temporairement bien d'autres choses moins avouables.

Voyez une expérience amusante dans le classeur joint.
(L'exécution pas à pas et l'observation des variables de type Range est instructive.)


ℝOGER2327
#7704


Dimanche 8 Sable 142 (Conception du Père Ubu (A.J.) - fête Suprême Seconde)
18 Frimaire An CCXXIII, 0,9443h - lierre
2014-W50-1T02:15:59Z
 

Pièces jointes

Re : VBA - Inconvénients de ClearContents

Bonjour mapomme, Roger, le forum,

Merci pour vos études.

@ mapomme

On rentre bien dans Mafonction, puis recalcul mais on ne revient pas dans Mafonction pour en sortir correctement

Cela est très normal puisque l'impossibilité de lire le format de la cellule arrête l'exécution de la fonction.

@ Roger, on peut écrire votre code :

Code:
Sub Efface_3()
With [B3]
.ClearContents
[D15].Resize(11, 2) = Ma_Fonction(.Cells)
End With
End Sub

Sub Efface_4()
With [B3]
.Value = Empty
[D15].Resize(11, 2) = Ma_Fonction(.Cells)
End With
End Sub
ce qui montre clairement que tout est rentré dans l'ordre après l'exécution de ClearContents.

C'est bien pendant l'exécution de ClearContents qu'il y a un problème.

Bonne journée.
 
- 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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…