XL 2019 effacement contenu zone feuille

michelf

XLDnaute Junior
Bonjour, j'ai actuellement un semainier que je voudrais remettre à neuf pour préparer la rentrée scolaire.
J'ai un onglet par semaine (ce qui m'en fait 44). j'ai remis les dates à jour etc.. mais je voudrais effacer le contenu de la même zone (d7:l41)dans chaque feuille (ou une à la fois).
Je pensais avoir trouvé mais il y a un "bogage" ! Voici ce que j'avais fait :
Sub Effacer()
Dim Sh As Worksheets
For Each Sh In ThisWorkbook.Worksheets
If UCase(Left(Sh.Name, 3)) = "SEM" Then Sh.[D7:L41].ClearContents
Next
Sheets("SEM 1").Activate
Range("d7").Select

End Sub
 

Pièces jointes

  • ScreenHunter 09.png
    ScreenHunter 09.png
    69.5 KB · Affichages: 20

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Ne serait-ce pas le 's' final qui déclare Sh en tant que collections de feuilles !

Dim Sh As Worksheets <--- s en trop

La prochaine fois soyez plus précis sur le 'bogage' en question. Quelle ligne ? Quel message ? On ne peut pas deviner, que supputer.

Cordialement
 
Dernière édition:

michelf

XLDnaute Junior
Désolé je pensais que c'était suffisant
Je vous mets les captures d'écran si c'est suffisant...
ScreenHunter 15.png
ScreenHunter 14.png
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Votre macro ne fait pas la différence entre Worksheets (avec un s) et Worksheet (sans s)

Le premier représente la collection des feuilles de travail du classeur et le second UNE feuille de travail !

La boucle for parcourt les Feuilles UNE par UNE

Traduction de la première ligne de la boucle for :

Pour chaque sh (feuille de travaille unique) dans la collection des feuilles de travail du classeur


Ceci fonctionne :
VB:
Sub Effacer()
    Dim sh As Worksheet
    For Each sh In ThisWorkbook.Worksheets
        If UCase(Left(sh.Name, 3)) = "SEM" Then sh.[D7:L41].ClearContents
    Next
End Sub


Quand vous écrivez une macro ne vous contentez pas de copier coller ou d'écrire des choses que vous ne comprenez pas. Faites appel à l'aide en ligne par la touche MAGIQUE : F1 positionnée sur un mot-clef du language.

Cordialement
 
Dernière édition:

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Ce n'est ni vous ni votre demande qui m'ennuient, c'est l'obligation de devoir réclamer un fichier exemple alors que cela devrait être un reflexe lorsque les choses se compliquent. Vous êtes inscrit depuis 2015, vous avez certainement du vous rendre compte de la façon de fonctionner du forum.

Si vous donnez peu, vous recevrez peu.
 

michelf

XLDnaute Junior
Je viens de tout effacer et j'ai recommencé à zéro avec ceci

Sub Effacer()

Dim ws As Worksheet
For Each ws In Worksheets
If UCase(Left(ws.Name, 3)) = "SEM" Then ws.[D7:L41].ClearContents
Next ws
End Sub

et ça marche.....

Je vous remercie pour le temps utilisé

PS: Je ne donne pas peu, simplement je ne viens pas souvent et ne connais pas assez les habitudes du forum
 

Statistiques des forums

Discussions
312 097
Messages
2 085 261
Membres
102 844
dernier inscrit
atori2