Sélectionner une plage de dimension variable

Bonjour,

Pour effacer le contenu une plage de cellules (A1:H2) je dois sélectionner cette plage. Ce qui se passe très bien avec la procédure "Effacement1" ci-dessous :

image

Problème : Ma plage est de dimension variable (en fonction de la vie de la feuille). Donc H2 évolue I2 J2 K2 etc. grâce à une procédure non décrite ici.

J'ai tenté la procédure "Enregistrement2" dont le principe est le suivant :

- 1 Sélection de la dernière colonne du tableau H

- 2 Sélection de la cellule de la deuxième ligne de cette colonne H2 (ActiveCell)

- 3 Sélection de la plage A1:H2 ("A1:ActiveCell")

- 4 Effacement de cette sélection

Problème : A l'étape 3, j'obtiens l'erreur suivante : Erreur d'exécution 1004 : La Méthode Range de l'objet '_Global' a échoué

J'ai retourné cela dans tous les sens sans succès. Quelqu'un peut-il m'aider svp ?

Merci de votre aide. Cordialement.

image

bonjour,

essaie ceci

Range("A1").Resize(2, Cells(1, Columns.Count).End(xlToLeft).Column).ClearContents

Evite d 'utiliser les select, qui sont peu efficaces

Bonsoir h2so4, et merci.

En étudiant séparément la fonction "Resize", ça devrait marcher. J'essaye demain, et te dit quoi.

Bonne nuit.

Re-Bonsoir h2so4,

Bon, je n'ai pas eu la patience d'attendre : J'ai testé et j'ai toujours le même message d'erreur.

Cela pourrait-il venir de l'environnement ou d'un paramètre qui m'échappe ? ....

Cordialement.

bonjour,

J'ai testé et j'ai toujours le même message d'erreur.

peux-tu mettre ton fichier (anonymisé s'il contient des données personnelles ou sensibles) avec la macro qui provoque l'erreur mentionnée ?

Bonjour,

Je vais plutôt tenter d'en créer un autre, car le fichier en question fait 23 onglets dont le principal comporte 5.200 lignes et 220 colonnes. Un autre comporte une trentaine de lignes mais 1200 colonnes. Toute ma compta depuis plus de 5 ans.. Difficile à anonymiser...

Mais en en créant un autre, pas sûr que je reproduise le défaut...

Que me conseilles-tu ?

Cordialement.

Que me conseilles-tu ?

Mets un fichier anonymisé avec la macro, la feuille sur laquelle tu exécutes la macro et 3 lignes de données bidon. vérifie que ce fichier permet de reproduire le problème.

Ok, je vais faire ça.

Dans la journée je pense.

Bonne journée à toi.

Cordialement

Voilà !

J'ai nettoyé tout ce qui était superflu pour le sujet de ce post. Les #REF! proviennent de la suppression des sources d'information (onglets supprimés).

Le défaut se reproduit bien sur cette version épurée.

Plage de cellules à effacer F30:AM31. J'ai adapté la formule car la cellule F30 est également variable en fonction du nombre de lignes du tableau

Le défaut apparait en cliquant sur le bouton "Validation Enregistrement" en bas à gauche de la feuille Excel. Et la macro surligne en jaune le défaut sur la ligne de code que tu m'as transmis.

Merci de ton expertise.

bonjour,

enlève le ":" après le F dans cette instruction

Range("F:" & IDLA + 9).Resize(2, Cells(1, Columns.Count).End(xlToLeft).Column).ClearContents

comme ceci

Range("F" & IDLA + 9).Resize(2, Cells(1, Columns.Count).End(xlToLeft).Column).ClearContents

bien que cela ne te pose pas de problème pour le moment, je définirais IDLA as Long au lieu de Integer et utiliserais une autre limite que 2^20 pour déterminer la dernière ligne du classeur (i.e. rows.Count)

Merci beaucoup

Le diable se cache (encore et toujours) dans les détails.
J'essaye tout cela et te tiens au courant.

Bonne journée.

C'est parfait !

Merci H2S

En revanche :

IDLA = Range("A" & RowsCount).End(3).Row

Ne fonctionne pas. Sans doute une question de syntaxe

J'ai essayé aussi :

IDLA = Range("A" & .Rows.Count).End(xlUp).Row

qui ne fonctionne pas non plus

Sans le point avant Rows :

IDLA = Range("A" & Rows.Count).End(xlUp).Row

Ca fonctionne

Merci H2S

Rechercher des sujets similaires à "selectionner plage dimension variable"