Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Détruit ligne si col G vide ...lent

  • Initiateur de la discussion Initiateur de la discussion Temjeh
  • 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 !

T

Temjeh

Guest
Bonjour à tous

Encore une fois je solicite votre aide

J'ai ceci qui est tres long a s'exécuté:

Dim strtest As String
Columns('A:H').Select
Selection.Sort Key1:=Range('A1'), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range('G1').Select
Dim i As Long

For i = 222 To 1 Step -1
If Range('g' & i) = '' Then Rows(i).Delete
Next i

Y a t il une facon de lui donnée de la vitesse





Merci milles fois

Temjeh
 
Salut Temjeh
bonjour José
je pense que tu peux via l'enregistreur de macro utiliser edition atteindre la tu choisis cellules et cellules vides et ensuite tu fais un truc du genre Sélection.entireRow.delete
tu m'excuse mais je suis a la bourre et je vais au boulot je regarderai ce soir si personne n'a résolu ton problème
un exemple avec la colonne A plage A1:A15
Sub deleteV1()
'
' deleteV1 Macro
' Macro enregistrée le 03/02/2006 par Jean Marie
Range('A1:A15').Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.Delete Shift:=xlUp
End Sub

bonne journée
 
Merci de te mettre sur mon dossier

Non je gagne pas plus de vitesse avec Byte.

Mes lignes son variables le 222 est que je voulais ne pas lui mettre pour col G au complet. Je ne sais pas si je lui met dans le code aulieu de 222 last cell de col A un genre de:

For i = Range('A65536').End(xlUp).select To 1 Step -1
If Range('g' & i) = '' Then Rows(i).Delete
Next i

Car pour 30 lignes il prend 15 seconde a deleter les lignes

Merci

Temjeh
 
Oui merci beaucoup

Effectivement ca va plus vite

J,ai fermé mon classeur et réouvert(j'avais trop jouer avec)

Merci

Sans abusé j,ai aussi un message perdu plus bas de la sem dernière si tu as une idée

Lien supprimé

Temjeh
 
Bonjour,

je dirais même plus

Dim I as as Integer ' mais ça ne fera pas grande diff

Application.ScreenUpdating = False
For i = Range('A65536').End(xlUp).Row To 1 Step -1
If cells(I).value = '' Then Rows(i).Delete
Next i
Application.ScreenUpdating = True

cells(I).value (cela évite la concaténation ('g' & i) )

Bon courage
 
Bonjour

Attention, le delete d'une cellule ou d'une ligne provoque l'événement de Calculate. il faut neutralise cet événement.

Code:
Application.ScreenUpdating = False
Application.EnableEvents = False
For i = Range('A65536').End(xlUp).Row To 1 Step -1
If cells(I).value = '' Then Rows(i).Delete
Next i
Application.EnableEvents = True
Application.ScreenUpdating = True

@+Jean-Marie
 
Re : Détruit ligne si col G vide ...lent

Sur des feuilles de quelques milliers de lignes, avec ce genre de travail en supprimant beaucoup de lignes, j'ai cru observer que chaque suppression de ligne provoque la recopie de TOUT ce qui suit. Je gagne un temps ENORME si, au lieu de DETRUIRE certaines lignes, je crée une nouvelle feuille dans laquelle je COPIE les autres lignes (celles que je veux garder), puis je détruis la feuille d'origine et je renomme la nouvelle feuille [sheets("provisoire").name="nomDorigine"].
 
Re : Détruit ligne si col G vide ...lent

Bonsoir à tous,

Pour moi, si tu veux supprimer toutes les lignes dans lesquelles la valeur de G est nulle, le plus simple est de tout regrouper à la fin en faisant un tri sur la colonne G.

Ensuite tu calcules les lignes de début et de fin des cellules vides en G puis tu supprimes le range d'un seul coup.

Enfin tu retries sur la colonne A pour reclasser tes valeurs.

Ce qui donne:

Code:
Sub suplignes()
Dim Derlig As Long, Ligsup As Long
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Columns("A:H").Select
Selection.Sort Key1:=Range("G1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Derlig = Range("A65536").End(xlUp).Row
Ligsup = Range("G65536").End(xlUp).Row + 1
Range("G" & Ligsup & ":G" & Derlig).EntireRow.Delete
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
End Sub

@+

Gael
 
Re : Détruit ligne si col G vide ...lent

Bonsoir,

Euh, vous avez regardé, les dates des fils en question????

Notre ami "omahenry" remonte des fils de 2006....

Je pense que la personne qui en avait besoin a dû trouver son bonheur, depuis le temps......

Bonne soirée
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
1
Affichages
738
Réponses
4
Affichages
1 K
Réponses
0
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…