Macro suppresion de lignes selon conditions via userform

Bonjour à tous,

Pour le travail, je dois réaliser une macro qui doit me permettre en rentrant des conditions dans le userform, supprimer les lignes qui ne remplissent pas certaines conditions. J'ai commencé à réaliser le code vba seulement le temps de traitement est assez long.

Est-'il possible de l'optimiser? code ci-dessous...

Deuxièmement, étant novice en macro, je n'ai aucune idée de la façon de créer une boite de dialogue (useform) me permettant de rentrer les conditions en input.

La dernière partie de ma macro consiste à ne garder seulement la colonne B une fois la suppression des lignes faites.

Merci d'avance de votre aide,

Sub test()

Dim zone As Range

Dim der_ligne As Long

Set zone = Range("i2").CurrentRegion

der_ligne = zone.Rows(zone.Rows.Count).Row

For i = der_ligne To 1 Step -1

If Not Cells(i, 9).Value >= 110 Or Not Cells(i, 3).Value <= 1000 Then

Rows(i).Delete

End If

Next i

End Sub

28audience.xlsm (143.90 Ko)

Bonjour,

Tu peux déjà commencer ta macro par

Application.ScreenUpdating = False

ça devrait tout de suite un peu booster ton affaire.

Après si c'est pas suffisant, ça se discute. Je regarde.

A+

Merci beaucoup pour le message, en effet cela a boosté mon affaire.

J'ai mis le code juste avant le end sub.

Puis-je le mettre a n'importe quel endroit de ma macro?

Sinon je reste toujours bloqué sur le formulaire.

Merci beaucoup en tout cas pour le réponse

Hein ? Quoi ? Quel Formulaire ?

Commencer la macro par... ça veux dire au début ! pas juste avant la fin !

Ya pas de blocage. L'écran est simplement gelé pendant le temps d'xécution de la macro ensuite tu reprends normalement la main sur ta feuille.

Cette ligne se met en principe aussitot après les Dim.

Voici le plus rapide (quelques ") que tu puisses faire :

Sub test()
Dim zone As Range, Tablo
Dim der_ligne As Long
Application.ScreenUpdating = False
Set zone = Range("i2").CurrentRegion
der_ligne = zone.Rows(zone.Rows.Count).Row
Tablo = Range("A9:I" & der_ligne)
For i = UBound(Tablo) To LBound(Tablo) Step -1
  If Not Tablo(i, 9) >= 110 Or Not Tablo(i, 3) <= 1000 Then
      Rows(i + 8).Delete
  End If
Next i
End Sub

A+

merci beaucoup pour votre réponse,

Concernant le formulaire, en fait, j'ai un pré-requis dans cette macro qui est de créer une boite de dialogue afin de rentrer les contraintes en input dans ce cas présent: If Not Cells(i, 9).Value >= 110 Or Not Cells(i, 3).Value <= 1000 Then

Si vous pouvez m'aider ca serait, super, merci encore

C'est un aspect de la question qui m'avait échapé.

Si tu ne maîtrises pas les USF ça ne me semble pas envisageable dans le cadre du forum.

cf (en haut de cette page) COURS VBA

A+

Après étude de tutoriaux sur les userforms, j ai en effet réussi a créer une boite de dialogue en fonction d'inputs que je souhaitais rentrer. Cependant, lorsque je lance ma macro, toutes les lignes se suppriment alors que dans mon fichier, certaines lignes correspondent aux critères que je recherche. J'ai l'impression que je dois déclarer mes variables de textbox1 et texbox2 dans ma commande de suppression, ce que j'ai pourtant fait mais mal.

Quelqu'un pourrait m'aider?

Merci d'avance,

Matthieu

27test-macro.zip (45.93 Ko)

Bonsoir,

Voir le fichier en retour

Bonne soirée.

47test-macro-g.zip (45.54 Ko)
Rechercher des sujets similaires à "macro suppresion lignes conditions via userform"