Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Optimiser macro qui supprime des lignes

10 réponses
Avatar
garnote
Bonjour,

J'ai un tableau de 15219 lignes et 14 colonnes.
La première ligne contient des en-têtes.
Je veux garder exclusivement les lignes pour
lesquelles la colonne 10 n'est pas vide.
Cette macro me semble correcte mais je la
trouve un peu lente.
Auriez-vous des suggestions à me faire
pour optimiser cette macro ?

Sub Garde_Téléphones()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For i = 15219 To 2 Step -1
If IsEmpty(Cells(i, 10)) Then Cells(i, 1).EntireRow.Delete
Next i
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

Serge

10 réponses

Avatar
Jacky
Bonjour,

Un truc du genre
'-----------
Range("j2:j15219").SpecialCells(xlCellTypeBlanks).EntireRow.Delete (xlUp)
'-----------------
--
Salutations
JJ


"garnote" a écrit dans le message de news:
urZiz$
Bonjour,

J'ai un tableau de 15219 lignes et 14 colonnes.
La première ligne contient des en-têtes.
Je veux garder exclusivement les lignes pour
lesquelles la colonne 10 n'est pas vide.
Cette macro me semble correcte mais je la
trouve un peu lente.
Auriez-vous des suggestions à me faire
pour optimiser cette macro ?

Sub Garde_Téléphones()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For i = 15219 To 2 Step -1
If IsEmpty(Cells(i, 10)) Then Cells(i, 1).EntireRow.Delete
Next i
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

Serge



Avatar
michdenis
Moi, j'essaierais ceci :

Worksheets("NomDelaFeuille").Range("J:J").SpecialCells(xlCellTypeBlanks).EntireRow.Delete



"garnote" a écrit dans le message de groupe de discussion :
urZiz$
Bonjour,

J'ai un tableau de 15219 lignes et 14 colonnes.
La première ligne contient des en-têtes.
Je veux garder exclusivement les lignes pour
lesquelles la colonne 10 n'est pas vide.
Cette macro me semble correcte mais je la
trouve un peu lente.
Auriez-vous des suggestions à me faire
pour optimiser cette macro ?

Sub Garde_Téléphones()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For i = 15219 To 2 Step -1
If IsEmpty(Cells(i, 10)) Then Cells(i, 1).EntireRow.Delete
Next i
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

Serge
Avatar
LSteph
Bonjour Serge,

Feuil1.Range(Columns(10), [2:15219]).SpecialCells
(xlCellTypeBlanks).EntireRow.Delete

'lSteph

On 30 oct, 13:53, "garnote" wrote:
Bonjour,

J'ai un tableau de 15219 lignes et 14 colonnes.
La première ligne contient des en-têtes.
Je veux garder exclusivement les lignes pour
lesquelles la colonne 10 n'est pas vide.
Cette macro me semble correcte mais je la
trouve un peu lente.
Auriez-vous des suggestions à me faire
pour optimiser cette macro ?

Sub Garde_Téléphones()
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    For i = 15219 To 2 Step -1
        If IsEmpty(Cells(i, 10)) Then Cells(i, 1).EntireRow.Delet e
    Next i
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
End Sub

Serge


Avatar
JB
Bonjour,

Avec le filtre élaboré, recopier dans un autre onglet les lignes qui
ne sont pas vides.

ou (si c'est possible) trier sur la colonne

http://boisgontierjacques.free.fr/pages_site/Doublons.htm#Suppression

JB

On 30 oct, 13:53, "garnote" wrote:
Bonjour,

J'ai un tableau de 15219 lignes et 14 colonnes.
La première ligne contient des en-têtes.
Je veux garder exclusivement les lignes pour
lesquelles la colonne 10 n'est pas vide.
Cette macro me semble correcte mais je la
trouve un peu lente.
Auriez-vous des suggestions à me faire
pour optimiser cette macro ?

Sub Garde_Téléphones()
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    For i = 15219 To 2 Step -1
        If IsEmpty(Cells(i, 10)) Then Cells(i, 1).EntireRow.Delet e
    Next i
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
End Sub

Serge


Avatar
garnote
Merci à tous pour vos suggestions.
Trois fois plus rapide.

Et une autre question pour vous occuper ;-)
Comment détecter par macro si une cellule
contient un motif ?

A+ et Salutations distinguées
Serge
Avatar
garnote
ReBonjour,

Voulant détecter un motif en particulier,
j'ai trouvé une solution :

Sub Cellule_Avec_Barres_Verticales()
If ActiveCell.Interior.Pattern = xlLightVertical _
Then MsgBox "Oui" Else MsgBox "Non"
End Sub

Quant à détecter un motf quelconque ???

Bonne fin de semaine, pardon pour les outre-mare,
Bon week-end ;-)

Serge


"garnote" a écrit dans le message de news:
%
Merci à tous pour vos suggestions.
Trois fois plus rapide.

Et une autre question pour vous occuper ;-)
Comment détecter par macro si une cellule
contient un motif ?

A+ et Salutations distinguées
Serge





Avatar
isabelle
bonjour Serge,

If Selection.Interior.Pattern <> -4142 Then MsgBox "a un pattern" Else
MsgBox "n'a pas de pattern"

isabelle

garnote a écrit :
ReBonjour,

Voulant détecter un motif en particulier,
j'ai trouvé une solution :

Sub Cellule_Avec_Barres_Verticales()
If ActiveCell.Interior.Pattern = xlLightVertical _
Then MsgBox "Oui" Else MsgBox "Non"
End Sub

Quant à détecter un motf quelconque ???

Bonne fin de semaine, pardon pour les outre-mare,
Bon week-end ;-)

Serge


"garnote" a écrit dans le message de news:
%

Merci à tous pour vos suggestions.
Trois fois plus rapide.

Et une autre question pour vous occuper ;-)
Comment détecter par macro si une cellule
contient un motif ?

A+ et Salutations distinguées
Serge











Avatar
michdenis
Une façon de se simplifier la vie,

Petit exemple, si dans la ligne de code suivante
X = xlPatternVertical
Tu effaces le signe "=" et tu le tapes à nouveau, excel va
t'afficher la liste des constantes disponibles

'-----------------------------------
Sub test()
Dim C As Range

Dim X As XlPattern
X = xlPatternVertical

For Each C In Range("A1:A10")
Select Case C.Interior.Pattern
Case X
'Le code à appliquer
MsgBox C.Address
End Select
Next
End Sub
'-----------------------------------



"garnote" a écrit dans le message de groupe de discussion :

ReBonjour,

Voulant détecter un motif en particulier,
j'ai trouvé une solution :

Sub Cellule_Avec_Barres_Verticales()
If ActiveCell.Interior.Pattern = xlLightVertical _
Then MsgBox "Oui" Else MsgBox "Non"
End Sub

Quant à détecter un motf quelconque ???

Bonne fin de semaine, pardon pour les outre-mare,
Bon week-end ;-)

Serge


"garnote" a écrit dans le message de news:
%
Merci à tous pour vos suggestions.
Trois fois plus rapide.

Et une autre question pour vous occuper ;-)
Comment détecter par macro si une cellule
contient un motif ?

A+ et Salutations distinguées
Serge





Avatar
isabelle
re,

la liste est présente dans l'explorateur d'objets sous la classe xlPatters,
il y a les noms à droite et en les sélectionnant tu as leur no. en bas.

isabelle

garnote a écrit :
ReBonjour,

Voulant détecter un motif en particulier,
j'ai trouvé une solution :

Sub Cellule_Avec_Barres_Verticales()
If ActiveCell.Interior.Pattern = xlLightVertical _
Then MsgBox "Oui" Else MsgBox "Non"
End Sub

Quant à détecter un motf quelconque ???

Bonne fin de semaine, pardon pour les outre-mare,
Bon week-end ;-)

Serge


"garnote" a écrit dans le message de news:
%

Merci à tous pour vos suggestions.
Trois fois plus rapide.

Et une autre question pour vous occuper ;-)
Comment détecter par macro si une cellule
contient un motif ?

A+ et Salutations distinguées
Serge











Avatar
isabelle
oups remplacer patters par pattern

isabelle

isabelle a écrit :
re,

la liste est présente dans l'explorateur d'objets sous la classe
xlPatters,
il y a les noms à droite et en les sélectionnant tu as leur no. en bas.

isabelle

garnote a écrit :
ReBonjour,

Voulant détecter un motif en particulier,
j'ai trouvé une solution :

Sub Cellule_Avec_Barres_Verticales()
If ActiveCell.Interior.Pattern = xlLightVertical _
Then MsgBox "Oui" Else MsgBox "Non"
End Sub

Quant à détecter un motf quelconque ???

Bonne fin de semaine, pardon pour les outre-mare,
Bon week-end ;-)

Serge


"garnote" a écrit dans le message de news:
%

Merci à tous pour vos suggestions.
Trois fois plus rapide.

Et une autre question pour vous occuper ;-)
Comment détecter par macro si une cellule
contient un motif ?

A+ et Salutations distinguées
Serge