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

suppression de ligne suivant conditions

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

D

David

Guest
Bonjour le forum

J'ai pris dans un précédent post le code suivant:
Code:
Dim i As Integer
i = 4

With Feuil3
    For i = .Range('a65536').End(xlUp).Row To 2 Step -1
        If .Cells(i, 32) = 'E' Then Rows(i).Delete
    Next i
    For i = .Range('a65536').End(xlUp).Row To 2 Step -1
        If .Cells(i, 32) = '' Then Rows(i).Delete
    Next i
End With

Le problème est que mon tableau possede plusieurs milliers de ligne et que la macro met plusieur minutes a s'exécuter.

Quelqu'un a t'il une solution qui prendrait moins de temps?

David
 
Bonjour

essaies déjà comme ceci

application.screenupdating=false

With Feuil3

For i = .Range('a65536').End(xlUp).Row To 2 Step -1

If .Cells(i, 32) = 'E' or .Cells(i, 32) = '' Then Rows(i).Delete

Next i

End With

application.screenupdating=true
 
Bonjour David,

Tu peux mettre le test sur une seule ligne comme ce qui suit,

Code:
If .Cells(i, 32) = 'E' or .Cells(i, 32) = '' Then Rows(i).Delete

Bon test.

Amicalement;

Jean-Yves

Pardon pour la réponse, j'avais pas rafraichi.

Message édité par: jyll, à: 16/01/2006 12:22
 
Re bonjour.

J'ai du mal à adapter le code.

Pouvez vous m'expliquer comment fonctionne la boucle.

J'arrive pas à comprendre ce que fais le programme, je m'embrouille un peu 🙂 .

David
 
Re

En fait au lieu de faire deux boucles on en fait qu'un et on teste tes 2 cas en un seul coup

Mon ajout de application.screenupdating = false en début de macro evite la mise à jour de l'affichage et permet de gagner beaucoup de temps

Bon courage
 
OK mais j'ai du mal a l'adapter

Peut tu m'expliquer à l'aide du petit exemple ci joint.
Savoir ce que réalise l'ordinateur (parce que j'ai récupérer le code et je croyais que j'avais compris comment il fonctionnait mais a prioris pas trop vu que j'arrive pas a l'adapter).

Merci d'avance, je sais que je suis chiant mais j'apprend

[file name=TEST_20060116161336.zip size=7644]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/TEST_20060116161336.zip[/file]

David
 

Pièces jointes

Re

Voici modifié

Tu comptais tes lignes sur la colonne A qui est vide alors que ta colonne est vide et tu ne supprimais pas les éléments de la colonne E [file name=TEST_20060116161839.zip size=7550]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/TEST_20060116161839.zip[/file]
 

Pièces jointes

Re
J'aurai besoin encore une fois de tes lumières.

Code:
Sub Essai()
'création d'un feuille de calcul
Feuil1.Select
Feuil1.Copy After:=Feuil1
ActiveSheet.Name = 'Tableau de synthèse'

'Met la formule =SI(ESTVIDE(N8);'';RECHERCHEV(N8;BDD_EXCLURE;2;0))
'dans la cellule AF8
Range('AF8').FormulaR1C1 = '=IF(ISBLANK(R[0]C[-18]),'''',VLOOKUP(R[0]C[-18],BDD_EXCLURE,2,0))'

'Trouve la dernière ligne du tableau
ligne = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count
Rows(ligne & ':' & ligne - 9).Select
Selection.Delete Shift:=xlUp

'Nouveau calcul de la dernière ligne du tableau (après suppression de ligne)
ligne2 = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count
Range('AF8').Select
Selection.AutoFill Destination:=Range('AF8' & ':AF' & ligne2), Type:=xlFillDefault

Numero = ActiveSheet.CodeName

Dim i As Integer
i = 1
Application.ScreenUpdating = False
With Sheets('Tableau de synthèse')

For i = .Range('C65536').End(xlUp).Row To 8 Step -1

If .Range('AF' & i) = 'E' Or .Range('AF' & i) = '' Then Rows(i).Delete

Next i


End With

Application.ScreenUpdating = True

End Sub

Le débogeur me marque qu'il y a une erreur sur cette ligne

Code:
If .Range('AF' & i) = 'E' Or .Range('AF' & i) = '' Then Rows(i).Delete

Imcompatibilité de type
Je ne comprend pas, pourtant cela focntionne dans l'exemple que tu m'as transmis.

David
 
Re

Je pense qu'il est plus facile de voir une erreur avec un exemple plutot qu'avec un code.

Donc si vous voulez bien jettez un coup d'oeil sur le fichier joint.

Je pense que l'erreur vient du fait que lorsque l'ordinateur exécute la formule ci dessous:
=SI(ESTVIDE(B4);'';RECHERCHEV(B4;BDD_INFO;2;0))

et que la valeur recherché n'est pas comprise dans la base de donnée INFO, la valeur renvoyé est donc #N/A.

Et que c'est cette valeur qui pose problème.

Si vous avez une explication je suis preneur.
Peut etre remplacé tous les #N/A par une autre valeur mais ca je ne sais pas faire.


David

[file name=TEST_20060116161839_20060116174439.zip size=12092]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/TEST_20060116161839_20060116174439.zip[/file]
 

Pièces jointes

- 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
5
Affichages
910
Réponses
15
Affichages
784
Réponses
2
Affichages
257
Réponses
4
Affichages
281
Réponses
10
Affichages
661
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…