OVH Cloud OVH Cloud

Effacement sur différentes feuilles

7 réponses
Avatar
Christian
Bonjour à tous et toutes
Dans un classeur comportant une quinzaine de feuilles, je devrais pouvoir
effacer le contenu de 6 feuilles; malheureusement pour moi avec des entêtes
fixes différentes et nombre de lignes différents.
J'ai fait un essai sur un classeur de 3 feuilles.

Sub efface()
Application.ScreenUpdating = False
If MsgBox("Etes-vous certain d'effacer...?", vbYesNo) = vbYes Then
Sheets("A").Select
Range("A7").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
Sheets("B").Select
Range("A3").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
Sheets("C").Select
Range("A2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
End If
Application.ScreenUpdating = True
End Sub
N'y aurait'il pas moyen de simplifier cet exemple de procédure.

--
Merci d'avance pour vos conseils.
Cordialement
Christian

7 réponses

Avatar
Daniel
Bonjour.
On peut, peut-être discriminer les entêtes par leur police, leur couleur,
leur encadrement ?
Cordialement.
Daniel
"Christian" a écrit dans le message de
news:
Bonjour à tous et toutes
Dans un classeur comportant une quinzaine de feuilles, je devrais pouvoir
effacer le contenu de 6 feuilles; malheureusement pour moi avec des
entêtes
fixes différentes et nombre de lignes différents.
J'ai fait un essai sur un classeur de 3 feuilles.

Sub efface()
Application.ScreenUpdating = False
If MsgBox("Etes-vous certain d'effacer...?", vbYesNo) = vbYes Then
Sheets("A").Select
Range("A7").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
Sheets("B").Select
Range("A3").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
Sheets("C").Select
Range("A2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
End If
Application.ScreenUpdating = True
End Sub
N'y aurait'il pas moyen de simplifier cet exemple de procédure.

--
Merci d'avance pour vos conseils.
Cordialement
Christian


Avatar
Christian
Bonjour Daniel
Que veux-tu dire par discriminer les entêtes.
S'agit-il d'une procédure particulière?
--
Christian
Avatar
Daniel
Non, je veux dire reconnaître qu'il s'agit d'un entête, pas un texte à
effacer. Suppose que tes entêtes soient en gras, on prend la première
cellule de la colonne A qui n'est pas en gras comme début de la plage à
effacer. Si tes entêtes sont encadrés, la première cellule de la colonne A
en dessous la cellule qui a une bordure en bas, etc.
Daniel
"Christian" a écrit dans le message de
news:
Bonjour Daniel
Que veux-tu dire par discriminer les entêtes.
S'agit-il d'une procédure particulière?
--
Christian





Avatar
Christian
Rebonjour Daniel
Merci pour ces éclaircissements.
Entretemps, j'ai trouvé une simplification de la procédure.
Sheets("A").Select
Range("a7", [A7].End(xlToRight).End(xlDown)).Select
Selection.ClearContents
Si tu as d'autres conseils ou astuces, je suis toujours preneur.
--
Cordialement
Christian



Non, je veux dire reconnaître qu'il s'agit d'un entête, pas un texte à
effacer. Suppose que tes entêtes soient en gras, on prend la première
cellule de la colonne A qui n'est pas en gras comme début de la plage à
effacer. Si tes entêtes sont encadrés, la première cellule de la colonne A
en dessous la cellule qui a une bordure en bas, etc.
Daniel
"Christian" a écrit dans le message de
news:
Bonjour Daniel
Que veux-tu dire par discriminer les entêtes.
S'agit-il d'une procédure particulière?
--
Christian










Avatar
Gaston
Bonjour Christian,
Pour s'amuser et sauver une ligne tu peux mettre:
Range("a7", [A7].End(xlToRight).End(xlDown)).ClearContents
Bye
Gaston
"Christian" wrote:

Rebonjour Daniel
Merci pour ces éclaircissements.
Entretemps, j'ai trouvé une simplification de la procédure.
Sheets("A").Select
Range("a7", [A7].End(xlToRight).End(xlDown)).Select
Selection.ClearContents
Si tu as d'autres conseils ou astuces, je suis toujours preneur.
--
Cordialement
Christian



Non, je veux dire reconnaître qu'il s'agit d'un entête, pas un texte à
effacer. Suppose que tes entêtes soient en gras, on prend la première
cellule de la colonne A qui n'est pas en gras comme début de la plage à
effacer. Si tes entêtes sont encadrés, la première cellule de la colonne A
en dessous la cellule qui a une bordure en bas, etc.
Daniel
"Christian" a écrit dans le message de
news:
Bonjour Daniel
Que veux-tu dire par discriminer les entêtes.
S'agit-il d'une procédure particulière?
--
Christian












Avatar
Gaston
ReBonjour Christian
Je pense que j'ai trouvé un peu mieux

Sub efface()
'Comme ça tu n'a pas besoin de sélectionner la feuille
Range(Sheets("A").Range("A7"),
Sheets("A").Range("A7").End(xlToRight).End(xlDown)).ClearContents
Range(Sheets("B").Range("A3"),
Sheets("B").Range("A3").End(xlToRight).End(xlDown)).ClearContents
Range(Sheets("C").Range("A2"),
Sheets("C").Range("A2").End(xlToRight).End(xlDown)).ClearContents
'Il y aurait une amélioration en nommant des noms pour sélectionner tes
plages avec "Decaler"
'Ex: EffaceA Þcaler(A!$A$7;;;NBVAL(A!$A$7:$A$1000);NBVAL(A!$A$7:$AA$7))
'Range("EffaceA").ClearContents "fonctionnerait"
'Comme ça si tu ajoutes des colonnes ou des lignes, ta plage sera toujours à
jour
End Sub
Bye
Gaston

"Gaston" wrote:

Bonjour Christian,
Pour s'amuser et sauver une ligne tu peux mettre:
Range("a7", [A7].End(xlToRight).End(xlDown)).ClearContents
Bye
Gaston
"Christian" wrote:

Rebonjour Daniel
Merci pour ces éclaircissements.
Entretemps, j'ai trouvé une simplification de la procédure.
Sheets("A").Select
Range("a7", [A7].End(xlToRight).End(xlDown)).Select
Selection.ClearContents
Si tu as d'autres conseils ou astuces, je suis toujours preneur.
--
Cordialement
Christian



Non, je veux dire reconnaître qu'il s'agit d'un entête, pas un texte à
effacer. Suppose que tes entêtes soient en gras, on prend la première
cellule de la colonne A qui n'est pas en gras comme début de la plage à
effacer. Si tes entêtes sont encadrés, la première cellule de la colonne A
en dessous la cellule qui a une bordure en bas, etc.
Daniel
"Christian" a écrit dans le message de
news:
Bonjour Daniel
Que veux-tu dire par discriminer les entêtes.
S'agit-il d'une procédure particulière?
--
Christian














Avatar
Christian
Bonjour Gaston
--
Merci pour ces précieux conseils.
Christian



ReBonjour Christian
Je pense que j'ai trouvé un peu mieux

Sub efface()
'Comme ça tu n'a pas besoin de sélectionner la feuille
Range(Sheets("A").Range("A7"),
Sheets("A").Range("A7").End(xlToRight).End(xlDown)).ClearContents
Range(Sheets("B").Range("A3"),
Sheets("B").Range("A3").End(xlToRight).End(xlDown)).ClearContents
Range(Sheets("C").Range("A2"),
Sheets("C").Range("A2").End(xlToRight).End(xlDown)).ClearContents
'Il y aurait une amélioration en nommant des noms pour sélectionner tes
plages avec "Decaler"
'Ex: EffaceA Þcaler(A!$A$7;;;NBVAL(A!$A$7:$A$1000);NBVAL(A!$A$7:$AA$7))
'Range("EffaceA").ClearContents "fonctionnerait"
'Comme ça si tu ajoutes des colonnes ou des lignes, ta plage sera toujours à
jour
End Sub
Bye
Gaston

"Gaston" wrote:

Bonjour Christian,
Pour s'amuser et sauver une ligne tu peux mettre:
Range("a7", [A7].End(xlToRight).End(xlDown)).ClearContents
Bye
Gaston
"Christian" wrote:

Rebonjour Daniel
Merci pour ces éclaircissements.
Entretemps, j'ai trouvé une simplification de la procédure.
Sheets("A").Select
Range("a7", [A7].End(xlToRight).End(xlDown)).Select
Selection.ClearContents
Si tu as d'autres conseils ou astuces, je suis toujours preneur.
--
Cordialement
Christian



Non, je veux dire reconnaître qu'il s'agit d'un entête, pas un texte à
effacer. Suppose que tes entêtes soient en gras, on prend la première
cellule de la colonne A qui n'est pas en gras comme début de la plage à
effacer. Si tes entêtes sont encadrés, la première cellule de la colonne A
en dessous la cellule qui a une bordure en bas, etc.
Daniel
"Christian" a écrit dans le message de
news:
Bonjour Daniel
Que veux-tu dire par discriminer les entêtes.
S'agit-il d'une procédure particulière?
--
Christian