Un fichier comporte environ 800 lignes consécutives utilisées et ......
je ne sais pas trop combien de lignes vides en dessous. Comment
sélectionner et virer toutes ces lignes enregistrées pour rien, sans
avoir besoin de faire défiler le fichier jusqu'à la fin ?
Merci
(si la procédure peut fonctionner sur LO également c'est encore mieux !)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
MichD
Bonjour, Pour faire le ménage pour toutes les feuilles du classeur, exécute une fois cette macro. '------------------------------------------------------------------ Sub test() Dim Sh As Worksheet, DerLig As Long, DerCol As Integer Dim ModeCalcul As String Application.ScreenUpdating = False ModeCalcul = Application.Calculation Application.Calculation = xlCalculationManual Application.EnableEvents = False On Error Resume Next For Each Sh In ThisWorkbook.Worksheets With Sh If Not IsEmpty(.UsedRange) Then DerLig = .Cells.Find(What:="*", _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious).Row DerCol = .Cells.Find(What:="*", _ LookIn:=xlFormulas, _ SearchOrder:=xlByColumns, _ SearchDirection:=xlPrevious).Column .Range(.Cells(1, DerCol + 1), .Cells(.Rows.Count, .Columns.Count)).Clear .Range(.Cells(1, DerCol + 1), .Cells(.Rows.Count, .Columns.Count)).Delete .Range(.Cells(DerLig + 1, 1), .Cells(.Rows.Count, .Columns.Count)).Clear .Range(.Cells(DerLig + 1, 1), .Cells(.Rows.Count, .Columns.Count)).Delete End If End With If Err <> 0 Then Err = 0 Next Application.Calculation = ModeCalcul Application.EnableEvents = True Application.ScreenUpdating = True End Sub '------------------------------------------------------------------ MichD
Bonjour,
Pour faire le ménage pour toutes les feuilles du classeur,
exécute une fois cette macro.
'------------------------------------------------------------------
Sub test()
Dim Sh As Worksheet, DerLig As Long, DerCol As Integer
Dim ModeCalcul As String
Application.ScreenUpdating = False
ModeCalcul = Application.Calculation
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
On Error Resume Next
For Each Sh In ThisWorkbook.Worksheets
With Sh
If Not IsEmpty(.UsedRange) Then
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
.Range(.Cells(1, DerCol + 1), .Cells(.Rows.Count, .Columns.Count)).Clear
.Range(.Cells(1, DerCol + 1), .Cells(.Rows.Count, .Columns.Count)).Delete
.Range(.Cells(DerLig + 1, 1), .Cells(.Rows.Count, .Columns.Count)).Clear
.Range(.Cells(DerLig + 1, 1), .Cells(.Rows.Count, .Columns.Count)).Delete
End If
End With
If Err <> 0 Then Err = 0
Next
Application.Calculation = ModeCalcul
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
'------------------------------------------------------------------
Bonjour, Pour faire le ménage pour toutes les feuilles du classeur, exécute une fois cette macro. '------------------------------------------------------------------ Sub test() Dim Sh As Worksheet, DerLig As Long, DerCol As Integer Dim ModeCalcul As String Application.ScreenUpdating = False ModeCalcul = Application.Calculation Application.Calculation = xlCalculationManual Application.EnableEvents = False On Error Resume Next For Each Sh In ThisWorkbook.Worksheets With Sh If Not IsEmpty(.UsedRange) Then DerLig = .Cells.Find(What:="*", _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious).Row DerCol = .Cells.Find(What:="*", _ LookIn:=xlFormulas, _ SearchOrder:=xlByColumns, _ SearchDirection:=xlPrevious).Column .Range(.Cells(1, DerCol + 1), .Cells(.Rows.Count, .Columns.Count)).Clear .Range(.Cells(1, DerCol + 1), .Cells(.Rows.Count, .Columns.Count)).Delete .Range(.Cells(DerLig + 1, 1), .Cells(.Rows.Count, .Columns.Count)).Clear .Range(.Cells(DerLig + 1, 1), .Cells(.Rows.Count, .Columns.Count)).Delete End If End With If Err <> 0 Then Err = 0 Next Application.Calculation = ModeCalcul Application.EnableEvents = True Application.ScreenUpdating = True End Sub '------------------------------------------------------------------ MichD
JièL
Message perso à Jacquouille : y'en a qui sont en retard, mais d'autres en avances de version, t'a vu ça ?! ;-) Le 07/02/2017 à 16:35, AlainL a écrit :
...Excel 2017...
Déjà ?
Comment sélectionner et virer toutes ces lignes enregistrées pour rien (si la procédure peut fonctionner sur LO également c'est encore mieux !)
hum... le VBA ne faisant pas parti de LO ni OOo je ne vois pas comment ça pourrait fonctionner pour ces derniers. Manuellement : se mettre sur une cellule contenant du texte (sous entendu y'en à aussi dans toutes celles qui sont en dessous). Appuyer une fois sur la touche Fin (indicateur dans la ligne d'état) appuyer une fois sur la flèche vers le bas (arrivé à la fin des données) Appuyer encore une fois sur la flèche vers le bas pour se trouver sur une ligne vide Ctrl+Espace (sélection de la ligne) Appuyer encore une fois sur la touche Fin Maintenir Majuscule (shift) et flèche vers le bas Ctrl+- (le moins sur le pavé numérique) enregistrer Je n'ai pas testé avec OOo ni LO mais de mémoire ça fonctionne de la même façon PS : c'est plus long à lire (et encore plus à écrire) qu'a faire -- JièL limité à 2016
Message perso à Jacquouille : y'en a qui sont en retard, mais d'autres
en avances de version, t'a vu ça ?! ;-)
Le 07/02/2017 à 16:35, AlainL a écrit :
...Excel 2017...
Déjà ?
Comment sélectionner et virer toutes ces lignes enregistrées pour rien
(si la procédure peut fonctionner sur LO également c'est encore mieux !)
hum... le VBA ne faisant pas parti de LO ni OOo je ne vois pas comment
ça pourrait fonctionner pour ces derniers.
Manuellement : se mettre sur une cellule contenant du texte (sous
entendu y'en à aussi dans toutes celles qui sont en dessous).
Appuyer une fois sur la touche Fin (indicateur dans la ligne d'état)
appuyer une fois sur la flèche vers le bas (arrivé à la fin des données)
Appuyer encore une fois sur la flèche vers le bas pour se trouver sur
une ligne vide
Ctrl+Espace (sélection de la ligne)
Appuyer encore une fois sur la touche Fin
Maintenir Majuscule (shift) et flèche vers le bas
Ctrl+- (le moins sur le pavé numérique)
enregistrer
Je n'ai pas testé avec OOo ni LO mais de mémoire ça fonctionne de la
même façon
PS : c'est plus long à lire (et encore plus à écrire) qu'a faire
Message perso à Jacquouille : y'en a qui sont en retard, mais d'autres en avances de version, t'a vu ça ?! ;-) Le 07/02/2017 à 16:35, AlainL a écrit :
...Excel 2017...
Déjà ?
Comment sélectionner et virer toutes ces lignes enregistrées pour rien (si la procédure peut fonctionner sur LO également c'est encore mieux !)
hum... le VBA ne faisant pas parti de LO ni OOo je ne vois pas comment ça pourrait fonctionner pour ces derniers. Manuellement : se mettre sur une cellule contenant du texte (sous entendu y'en à aussi dans toutes celles qui sont en dessous). Appuyer une fois sur la touche Fin (indicateur dans la ligne d'état) appuyer une fois sur la flèche vers le bas (arrivé à la fin des données) Appuyer encore une fois sur la flèche vers le bas pour se trouver sur une ligne vide Ctrl+Espace (sélection de la ligne) Appuyer encore une fois sur la touche Fin Maintenir Majuscule (shift) et flèche vers le bas Ctrl+- (le moins sur le pavé numérique) enregistrer Je n'ai pas testé avec OOo ni LO mais de mémoire ça fonctionne de la même façon PS : c'est plus long à lire (et encore plus à écrire) qu'a faire -- JièL limité à 2016