Supprimer cellules contenant mot spécifique Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Avatar du membre
Kit
Membre fidèle
Membre fidèle
Messages : 150
Appréciations reçues : 2
Inscrit le : 13 janvier 2017
Version d'Excel : 2016 FR

Message par Kit » 24 janvier 2017, 11:44

Hello !

Question sans doute toute simple à résoudre :

J'ai un tableau dont la première ligne (range A2:L2) contient des dates sous la forme "dimanche 1 janvier 2017"

Je souhaite supprimer les cellules de cette ligne contenant le mot "samedi" ou "dimanche", mais mon code semble inefficace.
Sub MAJ_Calendrier()
Dim c As Range

'With Range("A2:L2")
For Each c In Range("A2:L2")
    If c Like "dimanche" Or c Like "samedi" Then Cells.Delete
Next
'End With
End Sub
Pas de message d'erreur mais aucun résultat (je suis bien sur la bonne feuille).


Merci d'avance !
Les macros vaincront Image
Avatar du membre
ThauThème
Passionné d'Excel
Passionné d'Excel
Messages : 3'757
Appréciations reçues : 165
Inscrit le : 19 octobre 2014
Version d'Excel : 2010 FR

Message par ThauThème » 24 janvier 2017, 12:05

Bonjour Kit, bonjour le forum,

Même si la cellule t'affiche le jour de la semaine, sa vraie valeur est seulement la date. L'affichage est dû au format de date utilisé. De plus, quand tu Delete une cellule tu dois spécifier ce que se passe après. Est-ce que c'est la cellule à sa gauche qui prend sa place ou celle en dessous... Je pense que tu veux juste effacer son contenu. Essaie comme ça :
Sub MAJ_Calendrier()
Dim c As Range

For Each c In Range("A2:L2")
    If Format(Weekday(c), "dddd") = "dimanche" Or Format(Weekday(c), "dddd") = "samedi" Then c.ClearContents
Next
End Sub
À plus,

ThauTheme


Je suis Charlie
VBA m'éclate, les formules m'ennuient ! Je n'y peux rien c'est comme ça...
Avatar du membre
Kit
Membre fidèle
Membre fidèle
Messages : 150
Appréciations reçues : 2
Inscrit le : 13 janvier 2017
Version d'Excel : 2016 FR

Message par Kit » 24 janvier 2017, 13:02

Suis-je bête, les dates ne sont évidemment pas des valeurs texte. :roll:

Par contre je souhaite supprimer la cellule (remontée de la colonne vers le haut). Du coup je prpose la modification suivante :
Sub MAJ_Calendrier()
Dim c As Range
Application.ScreenUpdating = False
For Each c In Range("A2:L2")
    If Format(Weekday(c), "dddd") = "dimanche" Or Format(Weekday(c), "dddd") = "samedi" Then c.Delete Shift:=xlUp 
Next
Application.ScreenUpdating = True
End Sub
 

Ça marche (le Application.ScreenUpdating = False est là pour accélérer l’exécution du code).


Merci pour le coup de main :)
Les macros vaincront Image
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message