Effacer des cellules dans différentes feuilles en même temps

Bonjour,

je souhaiterais pouvoir effacer le contenu de cellules qui se trouve dans différentes feuilles de mon classeur et pas forcement dans la même cellule sur chaque feuille (qui sont protégées).

j'ai essayer ça mais ça fonctionne pas (copier/modification d'autres macros que je n'ai pas créées) :

Sub datectrl()
Dim feuilleFin As Variant

feuilleFin = Sheets.Count

For a = 1 To feuilleFin

Sheets(a).Range("zzda1").Select
Selection.ClearContents
Next

End Sub

Merci d'avance pour votre aide.

Bonjour,

Si protégé, il te faut déprotéger pour effacer, puis reprotéger...

On ne sait pas à quoir réfère "zzda1" ?

Cordialement.

Bonjour,

Une piste :

Sub datectrl()

    Dim Fe As Worksheet
    Dim TblCel
    Dim I As Integer

    'l'ordre des cellules dans le tableau doit correspondre à l'ordre des feuilles
    TblCel = Array("A1", "C6", "H7", "K12")

    For Each Fe In Worksheets

        Fe.Unprotect 'mettre ici le mot de passe si il y a...
        Fe.Range(TblCel(I)).ClearContents
        I = I + 1
        Fe.Protect 'remettre ici le mot de passe si il y a...

    Next Fe

End Sub

zzda1 = nom donné à la plage des cellules des différentes feuilles ou sont les données à effacer.

cf pj : date à effacer = cellules jaunes s/ les feuilles.

Les cellules ne sont pas protégées (les feuilles contiennent d'autres cellules protégées)

Merci.

17exemple1.xlsx (47.69 Ko)

Re,

A partir de mon code précédant :

Sub datectrl()

    Dim Fe As Worksheet
    Dim TblCel
    Dim I As Integer

    'l'ordre des cellules dans le tableau doit correspondre à l'ordre des feuilles
    TblCel = Array("E10", "B6", "B3", "D3")

    For Each Fe In Worksheets

        Fe.Range(TblCel(I)).ClearContents
        I = I + 1

    Next Fe

End Sub

Pardon,

il peut y avoir plusieurs dates à effacer par feuille cf. pj2.

Merci

11exemple2.xlsx (47.79 Ko)

Re, Salut Theze !

Tu pourrais y arriver avec quelque chose comme ça :

Sub Effacer()
    Dim zz, fc, i%
    zz = Names("zzda1").RefersTo
    zz = Replace(Replace(zz, "=", ""), "$", "")
    zz = Split(zz, ",")
    For i = 0 To UBound(zz)
        fc = Split(zz(i), "!")
        Worksheets(fc(0)).Range(fc(1)).ClearContents
    Next i
End Sub

Cependant je conseillerais plutôt d'abandonner cette définition de nom multizones-multifeuilles !

En nommant chaque cellule du même nom mais avec extension du nom limitée à la feuille, tu pourrais faire fonctionner ta méthode initiale :

Sub Effacer()
    Dim ws As Worksheet
    For Each ws In Worksheets
        ws.Range("zzda1").ClearContents
    Next ws
End Sub

Ou bien tu suis la voie indiquée par Theze...

Cordialement.

Bonjour,

j'ai mis la deuxième macro dans le XL mais cela ne fonctionne pas.

Pouvez-vous, svp, insérer votre macro dans l'exemple 3 pour voir ?

Merci

11exemple3.xlsx (47.73 Ko)

La 2e macro exige que tu nommes par feuille ! Ce que tu n'as pas fait !

Re,

Dans ce cas, une autre piste avec Evaluate() :

Sub datectrl()

    Dim Nom As Name
    Dim TblCel
    Dim Chaine As String
    Dim I As Integer

    For Each Nom In Names: Chaine = Chaine & Nom.RefersTo & ",": Next Nom

    TblCel = Split(Left(Chaine, Len(Chaine) - 1), ",")

    For I = 0 To UBound(TblCel)

        Evaluate(Replace(TblCel(I), "=", "")).Value = ""

    Next I

End Sub

La 2e macro exige que tu nommes par feuille ! Ce que tu n'as pas fait !

Pardon,

Dois-je nommer dans chaque feuille les cellules avec zzda1?

Comment nommer dans chaque feuille les cellules avec un même pour ttes les feuilles ?

Pouvez-vous faire un exemple avec les feuil11 et feuil2?

Merci.

La 2e macro exige que tu nommes par feuille ! Ce que tu n'as pas fait !

Pardon,

Dois-je nommer dans chaque feuille les cellules avec zzda1?

Comment nommer dans chaque feuille les cellules avec un même pour ttes les feuilles ?

Pouvez-vous faire un exemple avec les feuil11 et feuil2?

Merci.

Pardon j'ai trouvé.

merci

Cependant je conseillerais plutôt d'abandonner cette définition de nom multizones-multifeuilles !

En nommant chaque cellule du même nom mais avec extension du nom limitée à la feuille, tu pourrais faire fonctionner ta méthode initiale :

Sub Effacer()
    Dim ws As Worksheet
    For Each ws In Worksheets
        ws.Range("zzda1").ClearContents
    Next ws
End Sub

Ou bien tu suis la voie indiquée par Theze...

Cordialement.

[/quote]

S'il n'y a pas de zone zzda1 dans une feuille du classeur, la macro plante.

Comment indiquer d’exécuter la macro même s'il n'y a pas de zone zzda1 dans ttes les feuilles?

Merci d'avance.

Avant la boucle :

    On Error Resume Next

Ce n'est pas le plus élégant, mais cela reste le plus rapide à faire...

Cordialement.

Merci à placer ou dans la macro?

Comme indiqué, avant la boucle !

oui mais efficace!

Seulement ça marche que s'il n'y a pas de zone zzda1 dans les feuilles suivantes mais pas s'il y pas de zone zzda1 dans les feuilles précédentes...

Une astuce?

c'est bon, il fallait qu'il y ait une zone zzda1 s/ la première feuille.

A l'inverse comment indiquer une même date dans toute les cellules comprises dans les plages zzda1 de ttes les feuilles?

Merci.

Rechercher des sujets similaires à "effacer differentes feuilles meme temps"