Microsoft 365 Effacer cellules pleines en conservant mise en forme sauf bordures

  • Initiateur de la discussion Initiateur de la discussion Moreno076
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Moreno076

XLDnaute Impliqué
Bonjour le forum

Je bloque sur une macro.

Je voudrais que dans le fichier ci-joint le contenu des cellules des lignes pleines commencant à partir de A2 jusqu'à N se suppriment mais sans supprimer la mise en forme mais en supprimant par contre les bordures.

Sub EFF()
'
' EFF Macro
Dim Derlg&
Derlg = Worksheets("Synthèse").Range("a" & Rows.Count).End(xlUp).Row
If Derlg = 1 Then Exit Sub
Range("A2:N" & Derlg).Clear
Selection.Delete Shift:=xlUp
Application.DisplayAlerts = False
On Error Resume Next

Dim Feuille As Worksheet
'Pour toutes les feuilles dans CE classeur
For Each Feuille In ThisWorkbook.Worksheets
'si son nom est différent de "Feuil2" (à adapter bien sur) alors.....
If Feuille.Name <> "Synthèse" Then
'on empêche le message d'alerte à l'utilisateur
Application.DisplayAlerts = False
'on supprime la feuille
Feuille.Delete
'on remets le message d'alerte excel !!! très important !!!
Application.DisplayAlerts = True
'fin du test
End If
'feuille suivante
Next Feuille

Range("A2").Select

End Sub

Merci pour votre aide. J'ai mis la macro EFF en bouton
 

Pièces jointes

Solution
Re

Non, il faut sortir de la boucle
(donc la supprimer)
Allez, c'est dimanche, kado 😉
Deux pour le prix d'une 😉
VB:
Sub RAZ_Synthese_A()
Dim lig&
Application.ScreenUpdating = False
lig = Sheets("Synthèse").Cells(Rows.Count, 1).End(3).Row
With Sheets("Synthèse").Cells(2, "A").Resize(lig, 14)
  .Value = ""
  .Borders.LineStyle = xlNone
End With
End Sub
VB:
Sub RAZ_Synthese_Light()
Dim f As Worksheet
Set f = Sheets("Synthèse")
Application.ScreenUpdating = False
With f.Cells(2, "A").Resize(f.Cells(Rows.Count, 1).End(3).Row, 14)
.Value = "": .Borders.LineStyle = -4142
End With
End Sub
Re

On peut aussi faire comme ceci pour remplir les cellules de vide 😉
VB:
Sub Erazer_Cells()
Dim ws As Worksheet, lig&
Application.ScreenUpdating = False
For Each ws In Worksheets
lig = ws.Cells(Rows.Count, 1).End(3).Row
ws.Cells(2, "A").Resize(lig, 14) = ""
Next
End Sub
 
Re

Pour déborder les bordures 😉
VB:
Sub Erazer_Cells_et_Bords()
Dim ws As Worksheet, lig&
Application.ScreenUpdating = False
For Each ws In Worksheets
lig = ws.Cells(Rows.Count, 1).End(3).Row
With ws.Cells(2, "A").Resize(lig, 14)
  .Value = ""
  .Borders.LineStyle = xlNone
End With
Next
End Sub
 
Re

Pour déborder les bordures 😉
VB:
Sub Erazer_Cells_et_Bords()
Dim ws As Worksheet, lig&
Application.ScreenUpdating = False
For Each ws In Worksheets
lig = ws.Cells(Rows.Count, 1).End(3).Row
With ws.Cells(2, "A").Resize(lig, 14)
  .Value = ""
  .Borders.LineStyle = xlNone
End With
Next
End Sub
Merci Staple1600 C'est impeccable par contre j'ai un bug sur autre chose je cherche
 
Re

Bah oui, ton code dans ton premier message bouclait sur toutes les feuilles, donc je suis parti en boucle 😉
Tu ne vois pas comment sortir de la boucle et faire l’adaptation nécessaire pour ne traiter que la feuille Synthèse ?
 
Sub Erazer_Cells_et_Bords()
Dim ws As Worksheet("Synthèse"), lig&
Application.ScreenUpdating = False
For Each ws In Worksheets
lig = ws.Cells(Rows.Count, 1).End(3).Row
With ws.Cells(2, "A").Resize(lig, 14)
.Value = ""
.Borders.LineStyle = xlNone
End With
Next
End Sub

?
 
Re

Non, il faut sortir de la boucle
(donc la supprimer)
Allez, c'est dimanche, kado 😉
Deux pour le prix d'une 😉
VB:
Sub RAZ_Synthese_A()
Dim lig&
Application.ScreenUpdating = False
lig = Sheets("Synthèse").Cells(Rows.Count, 1).End(3).Row
With Sheets("Synthèse").Cells(2, "A").Resize(lig, 14)
  .Value = ""
  .Borders.LineStyle = xlNone
End With
End Sub
VB:
Sub RAZ_Synthese_Light()
Dim f As Worksheet
Set f = Sheets("Synthèse")
Application.ScreenUpdating = False
With f.Cells(2, "A").Resize(f.Cells(Rows.Count, 1).End(3).Row, 14)
.Value = "": .Borders.LineStyle = -4142
End With
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
165
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
497
Réponses
4
Affichages
464
Réponses
3
Affichages
676
Retour