Excel- Explication effacement de zone

Résolu
mod77 Messages postés 1284 Date d'inscription   Statut Membre Dernière intervention   -  
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   -
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

gilles
 
Bonjour,

Ta zone est fixe ou elle change ?

Gilles
0
mod77 Messages postés 1284 Date d'inscription   Statut Membre Dernière intervention   53
 
Bonjour,
Elle peut varier!

Merci
0
gilles
 
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 1284 Date d'inscription   Statut Membre Dernière intervention   53
 
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
gilles
 
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 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
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 1284 Date d'inscription   Statut Membre Dernière intervention   53
 
Bonsoir Le Pingou,

Merci pour la réponse.
0
gilles
 
Je ne sais pas si tu as vu ma réponse mais pour moi çà semble correct
Gilles
0
mod77 Messages postés 1284 Date d'inscription   Statut Membre Dernière intervention   53
 
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
gilles
 
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 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
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 1284 Date d'inscription   Statut Membre Dernière intervention   53
 
Oui et c'est aussi pourquoi je voulais la tester.

Encore Merci à tous les 2.
0
mod77 Messages postés 1284 Date d'inscription   Statut Membre Dernière intervention   53
 
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 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
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 1284 Date d'inscription   Statut Membre Dernière intervention   53
 
Bonsoir Le Pingou,

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

Merci d'avance.
0
mod77 Messages postés 1284 Date d'inscription   Statut Membre Dernière intervention   53
 
Ok ! merci à tous j'ai compris!
J'ai mis le temps je sais mais voila.

Merci
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
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 1284 Date d'inscription   Statut Membre Dernière intervention   53
 
Un grand merci à vous je poste un lien sur le poste en question .

Merci.
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Une petite explication sur se que vou faite une fois le choix réalisé ?
0
mod77 Messages postés 1284 Date d'inscription   Statut Membre Dernière intervention   53
 
Désolé, il faut voir le poste " Affichage case d'option".

Merci à tous.
0
mod77 Messages postés 1284 Date d'inscription   Statut Membre Dernière intervention   53
 
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 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
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 1284 Date d'inscription   Statut Membre Dernière intervention   53
 
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