Excel- Explication effacement de zone

Résolu/Fermé
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 - 27 janv. 2010 à 20:19
Le Pingou Messages postés 12069 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 mai 2024 - 31 janv. 2010 à 19:59
Bonjour,

Je n'arrive pas à effacer une zone de ma feuille.
On m'a donné ce code VBA mais je n'arrive pas à l'appliquer pour une autre zone.
Quelqu'un peut-il m'expliquer comment ça marche SVP ?

covide = Range("IV3").End(xlToLeft).Column
'covide = Cells(lig, Rows(3).Cells.Count).End(xlToLeft).Column 'cette ligne est équivalente à la première

Range( Cells(lg, cl), Cells(3, covide) ).ClearContents

Ce que je crois :
Range(X,Y).ClearContents : j'interprète que ça efface la cellule en [XY]

Range("YX").End(xlToLeft).Column : trop obscure pour moi et le reste aussi.
---------
Si je veux effacer la zone de la cellule B5 à J10 comment dois-je écrire ces lignes SVP?

Merci.
A voir également:

26 réponses

Bonjour,

Ta zone est fixe ou elle change ?

Gilles
0
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
27 janv. 2010 à 20:28
Bonjour,
Elle peut varier!

Merci
0
Le problème n'est pas d'effacer la zone mais de la sélectionner.
Je fais quelquefois ce genre de macro et j'utilise la méthode end(xldown). Exemple tu veux effacer les cellules de la colonne A. Il y a un titre en ligne 1

Je sélectionne la première cellule
Range("A2").Select

'tu sélectionne la dernière de la zone (il ne doit pas y avoir de ligne blanche)
Selection.End(xlDown).Select
x = ActiveCell.Row

'tu sélectionne la zone entière
Range("A2:A" & x).Select
Selection.ClearContents

Je pense que l'on peut le faire en plus simple

Gilles
0
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
27 janv. 2010 à 21:01
Alors pour résumer j'écris:

Range("A2").Select 'Sélection de la 1ere cellule
Selection.End(xlDown).Select 'Sélection dernier cellule de la zone
x = ActiveCell.Row ' x= dernière remplie
Range("A2:A" & x).Select 'Sélection de la colonne jusqu'à "x"
Selection.ClearContents 'Effacement

Si je veux 10 colonnes, puis-je écrire: Range("A2:J"& x) ?

Merci
0
Pour moi, c'est juste
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Le Pingou Messages postés 12069 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 mai 2024 1 431
27 janv. 2010 à 21:02
Bonjour,
Pour ceci : Si je veux effacer la zone de la cellule B5 à J10 comment dois-je écrire ces lignes SVP?
Voice le code :
Range("B5:J10").ClearContents

0
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
27 janv. 2010 à 21:04
Bonsoir Le Pingou,

Merci pour la réponse.
0
Je ne sais pas si tu as vu ma réponse mais pour moi çà semble correct
Gilles
0
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
27 janv. 2010 à 21:10
Oui Gilles, j'ai vu et répondu avant le message de Le Pingou.
Merci pour votre réponse j'essaie le code maintenant, même si le code de Le Pingou me satisfait.

Merci à tous les 2.
0
Bien sûr, la seconde méthode est bonne et c'est même la meilleure, seulement il faut que la zone soit statique.

Gilles
0
Le Pingou Messages postés 12069 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 mai 2024 1 431
27 janv. 2010 à 22:14
Bonjour gilles et mod77,
Eh bien oui la seconde méthode est meilleure et c'est vous qui le dite.
Dans sa se cas en voilà deux très intéressantes :
Numéro de la première colonne vide à droite: par exemple pour la ligne 3
covide = Cells(3, Rows(3).Cells.Count).End(xlToLeft).Column + 1

Idem pour la première ligne vide par exemple la colonne [A] ou [1]
livide = Cells(Columns(1).Cells.Count, 1).End(xlUp).Row + 1

0
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
27 janv. 2010 à 21:22
Oui et c'est aussi pourquoi je voulais la tester.

Encore Merci à tous les 2.
0
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
28 janv. 2010 à 16:51
Bonjour Le Pingou,

Merci pour les fomules.
covide = Cells(3, Rows(3).Cells.Count).End(xlToLeft).Column + 1

Voila justement dans votre formule ce que je ne comprend pas.
Que représente le "3" de Rows ?
Le 1er "3" c'est parce que c'est la ligne 3, non?!

idem pour la ligne A, faut-il toujours mettre 1 en fin du 1er Cells ?
livide = Cells(Columns(1).Cells.Count, 1).End(xlUp).Row + 1
puis-je mettre "A" à la place du 1 ?

Merci
0
Le Pingou Messages postés 12069 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 mai 2024 1 431
28 janv. 2010 à 20:50
Bonjour,
Que représente le "3" de Rows ?
Rep : Rows(3) est la ligne numéro 3, mais il faut prendre l’ensemble : Rows(3).Cells.Count ou je compte le nombre des cellules de la ligne 3 et cette valeur est donc l’index de la dernière colonne (petit souvenir, c’est quoi [IV1] ) se qui me donne la position de la dernière cellule et avec le End(xlToLeft).Column je récupère le numéro de la première cellule non vide sur la gauche.

Le 1er "3" c'est parce que c'est la ligne 3, non?!
C’est l’index de ligne 3. Pour l’objet Cells(IndexLigne, IndexColonne)

puis-je mettre "A" à la place du 1 ? l’IndexColonne est un nombre, cependant il est possible d’utiliser la lettre de colonne comme ceci : livide = Cells(Columns(1).Cells.Count, [“A”]).End(xlUp).Row + 1
0
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
28 janv. 2010 à 22:06
Bonsoir Le Pingou,

Pouvez-vous m'aider sur mon poste de 17H52 SVP?

Merci d'avance.
0
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
28 janv. 2010 à 21:36
Ok ! merci à tous j'ai compris!
J'ai mis le temps je sais mais voila.

Merci
0
Le Pingou Messages postés 12069 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 mai 2024 1 431
28 janv. 2010 à 22:13
Bonjour mod77,
Je vais regardé demain.
Il serait quand même bien si vous mettiez un petit exemple explicite (sur une feuille excel par exemple)!
0
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
28 janv. 2010 à 22:19
Un grand merci à vous je poste un lien sur le poste en question .

Merci.
0
Le Pingou Messages postés 12069 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 mai 2024 1 431
28 janv. 2010 à 22:34
Bonjour,
Une petite explication sur se que vou faite une fois le choix réalisé ?
0
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
28 janv. 2010 à 22:41
Désolé, il faut voir le poste " Affichage case d'option".

Merci à tous.
0
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
30 janv. 2010 à 22:11
Bonsoir,

Quelqu'un peut-il me dire ce qui ne va pas dans ces lignes SVP ? VBA dit " incompatibilité de type"

livide = Sheets("feuil1").Cells(Columns(1).Cells.Count, [“A”]).End(xlDown).Row + 1
Range(Sheets("feuil1").Cells(3, 1), Sheets("feuil1").Cells(livide, 1)).ClearContents

Car je dois effacer la 1ere colonne d'une autre feuille (feuil1) et j'ai essayé d'appliquer les formules précédentes.

Merci
0
Le Pingou Messages postés 12069 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 mai 2024 1 431
30 janv. 2010 à 22:40
Bonjour,
Sans savoir ou la procédure est arrêtée (soulignement jaune) c'est une chance sur deux !
En principe,, cette ligne n'est pas correcte:
Range(Sheets("feuil1").Cells(3, 1), Sheets("feuil1").Cells(livide, 1)).ClearContents
correcte :
Sheets("feuil1").Range(Cells(3, 1),Cells(livide, 1)).ClearContents
0
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
30 janv. 2010 à 23:32
C'est sur la première ligne que ça plante, mais lorsque je met votre ligne c'est sur la votre que ça se marque en jaune.
Merci
0