Une macro qui ne parvient pas à vider le contenu de plus de 2 colonnesr

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 !

Magic_Doctor

XLDnaute Barbatruc
Bonsoir,

J'ai rédigé une macro afin d'effacer le contenu d'un certain nombre de colonnes.
Curieusement elle fonctionne pour 2 colonnes mais pas pour 3.

Merci d'avance pour m'en expliquer la raison.

Ci-join le classeur avec la macro.
 

Pièces jointes

Re : Une macro qui ne parvient pas à vider le contenu de plus de 2 colonnesr

Bonjour Magic_Doctor,

Si j'ai bien compris, il faut que la colonne B ne soit pas effacée... Si c'est le cas, alors voici une proposition avec UNION pour bien définir la plage à effacer.

Code:
Sub Macro1()

Dim listeselect(3) As String

listeselect(1) = [FirstCellColonneTransfert1].Address & ":" & [FirstCellColonneTransfert1].Offset([TotalVisites] - 1, 0).Address
listeselect(2) = [FirstCellColonneTransfert2].Address & ":" & [FirstCellColonneTransfert2].Offset([QtNoms] - 1, 0).Address
listeselect(3) = [FirstCellColonneTransfert3].Address & ":" & [FirstCellColonneTransfert3].Offset([QtNoms] - 1, 0).Address

'On efface tout

'Ça marche pour 2 colonnes
'Union(Range(listeselect(1)), Range(listeselect(2))).ClearContents


'Ça marche aussi pour 3 colonnes !
Union(Range(listeselect(1)), Range(listeselect(2)), Range(listeselect(3))).ClearContents

End Sub

A+
 
Re : Une macro qui ne parvient pas à vider le contenu de plus de 2 colonnesr

Bonsoir, Docteur.

As-tu testé
Range(listeselect(1), listeselect(3)).ClearContents
L'aide (F1) en sélectionnant le mot Range dit :
Cette propriété renvoie un objet Range qui représente une cellule ou une plage de cellules.

expression.Range(Cell1, Cell2)
Sinon voir également Union(Range("Range1"), Range("Range2"))

Edit : Bonsoir, Grand Chaman Excel 🙂
 
Dernière édition:
Re : Une macro qui ne parvient pas à vider le contenu de plus de 2 colonnesr

Bonsoir Grand Chaman Excel, bonsoir Victor,

Je me suis peut-être mal exprimé, mais je voulais vider le contenu des 3 colonnes et, curieusement, je ne parvenais à vider le contenu que de 2 colonnes.
Empiriquement, avant de recevoir la réponse de Victor, j'avais essayé :
Range(listeselect(1), listeselect(3)).ClearContents

Et ça marche !

Mais pourquoi donc Range(listeselect(1), listeselect(2), listeselect(3)).ClearContents ne marchait pas ?
Aurais-je dû écrire Union(Range(listeselect(1), listeselect(2), listeselect(3)) ?

Toutes ces colonnes, sur la feuille sont certes contiguës, mais si j'avais voulu effacer une 4ème colonne (que j'aurais appelée listeselect(4)) non contiguë aux 3 colonnes précédentes, en écrivant Range(listeselect(1), listeselect(2), listeselect(3)).ClearContents cela aurait-il marché ? Ou alors, peut-être Union(Range(listeselect(1), listeselect(3), listeselect(4)) ?
 
Re : Une macro qui ne parvient pas à vider le contenu de plus de 2 colonnesr

Bonsoir Magic_Doctor,

Si tu utilises la fonction Range, les arguments Cell1 et Cell2 sont la "première" et la "dernière" cellule de la plage. Quand tu écris :
Range(listeselect(1), listeselect(3)).ClearContents
, ça prend la 1re cellule de "Listeselect(1)" comme point de départ et la dernière cellule de "Listeselect(3)" comme point d'arrivée.

Tu ne peux pas passer plus que 2 arguments dans la fonction Range, c'est pourquoi ça ne fonctionnait pas avec 3 colonnes.

Par contre, pour définir un "range" de plages non contigües, tu n'as pas le choix de passer par la fonction UNION. Ainsi, si tu veux effacer une 4e colonne, il faudrait que tu fasses :

Code:
Union(Range(listeselect(1)), Range(listeselect(2)), Range(listeselect(3)),Range(listeselect(4))).ClearContents

Union de 4 plages différentes. Ou encore

Code:
Union(Range(listeselect(1), listeselect(3)), Range(listeselect(4))).ClearContents

Union de 2 plages.

En espérant que ça t'aide un peu...
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

Retour