Erreur bout de code ???

delboe

XLDnaute Nouveau
Bonsoir à tous,

J'ai un bout de code qui, je pense, fait le travail suivant : sur toutes les colonnes E, à partir de E7 sur les feuilles citées (et seulement elles !), Excel devrait effacer le contenu... N'est-ce pas le cas ?

Voici le bout de code :

Dim Lg%, i%
For i = 1 To Worksheets.Count
With Worksheets(i)
Lg = .Range("e65536").End(xlUp).Row
If .Name <> "Programmation annuelle" And .Name <> "Programmation de cycle" And .Name <> "période 1" And .Name <> "période 2" And .Name <> "période 3" And .Name <> "période 4" And .Name <> "période 5" Then
.Range("e7:e" & Lg).ClearContents
End If
End With

Je précise que je ne comprends pas grand chose au VB ; je traduis instinctivement...

Voici mon problème : J'ai une feuille intitulée "Base de données" (située dans le classeur) dont le contenu s'efface également de E7 à E.... Et je voudrais que le contenu ne bouge pas sur cette feuille... ce qui devrait être le cas si je comprends les restrictions précisées dans ce code... et pourtant, non...

Pouvez-vous m'aider ou ne suis-je pas assez clair ?

D'avance merci !
Greg
 

Fred0o

XLDnaute Barbatruc
Re : Erreur bout de code ???

Bonsoir delboe,

C'est en effet un "bout de code que tu nous forunis...

Cependant, on peut constater qu'il efface la colonne E à partir de E7 sur toutes les feuilles EXXCEPTE les feuilles citées.

Donc, si ne veux pas que la colonne E de la feuille "Base de données" ne soit pas effacée, il te faut la rajouter dans la condition IF.

A+
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Erreur bout de code ???

Bonsoir delboe,

Supposons que le nom de la feuille traitée dans la boucle soit "Base de données".
Dans ce cas, la condition If .Name <> "Programmation annuelle" And .Name <> "Programmation de cycle" And .Name <> "période 1" And .Name <> "période 2" And .Name <> "période 3" And .Name <> "période 4" And .Name <> "période 5"
est bien vérifiée (donc on procède à l'effacement) puisque:

.Name <> "Programmation annuelle" est vrai
.Name <> "Programmation de cycle" est vrai
.Name <> "période 1" est vrai
.Name <> "période 2" est vrai
.Name <> "période 3" est vrai
.Name <> "période 4" est vrai
.Name <> "période 5" est vrai

la condition telle qu'elle est écrite n'effacera pas les données des feuilles citées dans la condition. Soit par exemple la feuille "période 2", alors .Name <> "période 2" est faux et la condition globale est donc fausse aussi.

Pour éliminer les feuilles non désirées, on peut écrire:
if NOT ( .Name ="Base de données" or .Name ="Autre feuille sans effacement") then
effacement
endif

ce qui revient à conserver la forme de la condition mais avec les feuilles sans effacement:
if .Name <>"Base de données" and .Name <>"Autre feuille sans effacement") then
effacement
endif
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Erreur bout de code ???

Bonsoir le fil, bonsoir le forum,

Une proposition avec un Select Case (non testé) :
Code:
Dim Lg%, i%
For i = 1 To Worksheets.Count
With Worksheets(i)
    Select Case Worksheets(i).Name
        Case "Programmation annuelle", "Programmation de cycle", "période 1", "période 2", "période 3", "période 4", "période 5", "Base de données"
        Case Else
            Lg = .Range("e65536").End(xlUp).Row
            .Range("e7:e" & Lg).ClearContents
    End Select
End With
 

Discussions similaires

Réponses
14
Affichages
688

Statistiques des forums

Discussions
312 373
Messages
2 087 726
Membres
103 655
dernier inscrit
MOUNIRACH16