XL 2019 effacer contenu de plage

KTM

XLDnaute Impliqué
Bonjour tous

j'aimerais savoir qu'elle est la méthode adéquate pour effacer le contenu d'une plage

1- Range("A2:A20").ClearContents
2-Range("A2:A20").value=""
3-Range("A2:A20")=""

Apparemment ces 3 méthodes donnent le même résultat mais est-ce qu'il y'aurait des différences ?
Merci
 

soan

XLDnaute Barbatruc
Inactif
Bonjour @KTM, job75,

Tu as indiqué 3 méthodes ; comme tu sembles inquiet qu'il y en ait 3
pour faire la même chose, je te rassure : si tu utilises la notation avec
crochets, tu as même 3 autres méthodes de plus :

1- [A2:A20].ClearContents

2- [A2:A20].Value = ""

3- [A2:A20] = ""

Tu vois, tu as l'embarras du choix ! :p

ça y'est ? t'es rassuré ? ;) bon, à tout hasard, je t'indique quand même que la méthode
avec crochets sous-entend que c'est la fonction Evaluate() qui lit l'expression et l'évalue
(mais ça, tu t'en serais douté, hein ? pas vrai ? :D).

un dernier petit détail : même si Evaluate() n'est pas présent dans l'expression, c'est tout
simplement VBA qui y fait appel lorsqu'il rencontre ce type d'instruction avec crochets ;
plus exactement, je pense que c'est le compilateur VBA qui encode un appel à Evaluate
lorsqu'il rencontre un range noté sous forme de crochets.

(malgré tout, ne t'attends pas à de l'intelligence artificielle : VBA n'est absolument pas
un langage d'IA, comme par exemple Lisp, Java, Python, Julia, ou Scala ; tu vois, tu as
même le choix des langages ; c'est pas génial, l'informatique ? :p).


-----------------------------------------------------------------------------------------------

oh, j'allais oublier encore 6 autres méthodes (avec VBA, oui) :

1- Range("A2").Resize(19, 0).ClearContents

2- Range("A2").Resize(19, 0).Value = ""

3- Range("A2").Resize(19, 0) = ""

4- [A2].Resize(19, 0).ClearContents

5- [A2].Resize(19, 0).Value = ""

6- [A2].Resize(19, 0) = ""

et puis, comme le , 0 est facultatif, tu as encore 6 autres méthodes dérivées :

1- Range("A2").Resize(19).ClearContents

2- Range("A2").Resize(19).Value = ""

3- Range("A2").Resize(19) = ""

4- [A2].Resize(19).ClearContents

5- [A2].Resize(19).Value = ""

6- [A2].Resize(19) = ""

mais après, là je sèche : j'ai plus d'autre méthode à proposer ! :confused:

heureusement, si t'as la chance d'avoir des cellules fusionnées ( :rolleyes: ),
certaines de ces 18 méthodes vont bloquer dessus, ce qui restreindra
un tant soit peu le large éventail du choix des méthodes ; voilà, j'ai
fini, il te reste plus qu'à tester patiemment et méthodiquement ces
18 méthodes ; comme je suis pas très bon en VBA, surveille bien
les futures réponses : peut-être qu'un autre intervenant arrivera
à te sortir d'autres méthodes de derrière les fagots. :)

tu demandes quelles méthodes bloquent avec des cellules fusionnées ?
ce sont celles avec .ClearContents ... comme l'a souligné @job75.


soan
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
Pour chaque Value on peut préférer Value2.
D'ailleurs puisqu'il s'agit de vider les cellules et non de leur faire valoir un texte de longueur nulle, partout où vous affecter = "" moi je préfère affecter = Empty, même à .Value. Alors si tout ça a le même résultat, ça multiplie d'autant les façons de l'écrire …
 

soan

XLDnaute Barbatruc
Inactif
Bonjour @Dranreb, KTM,

j'savais bien qu'un autre intervenant (Barbatruc ou non) pourrait apporter encore
d'autres méthodes : heureusement que j'avais spécifié de bien surveiller les futures
réponses ! :) donc dans toutes les méthodes que j'ai proposées, KTM peut jouer
à remplacer les .Value par .Value2 ; et même remplacer = "" par = Empty. :D

suggestion pour @KTM : au cas où tu serais déçu qu'il n'y a pas plus de méthodes,
tu peux écrire à l'équipe de développement du VBA, chez Microsoft, pour qu'ils
implémentent d'autres façons de faire. ;)

(perso, je n'ai jamais trouvé d'utilité à utiliser .Value2, c'est pourquoi je n'y ai même pas pensé !)


soan
 

Discussions similaires

Réponses
2
Affichages
536

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 846
dernier inscrit
Silhabib