Macro qui ne fonctionne plus ?

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 !

mcj1997

XLDnaute Accro
Bonjour,

J'ai intégré une macro (ci-dessous) dans un programme me permettant de supprimer les lignes comportant un "O" dans la colonne E.

Dans module 1 j'ai cela :

Sub Macro1()
Dim Lig As Long
Application.ScreenUpdating = False

' Boucle sur les lignes
For Lig = 4 To 3000 ' mettre ta dernière colonne idem pour le tri
If (Range("E" & Lig).Value = "O") Then

' Effacer le contenu de la ligne
Rows(Lig & ":" & Lig).Delete
End If
Next Lig

Application.ScreenUpdating = True

End Sub


Dans
 
Re : Macro qui ne fonctionne plus ?

Bonjour,

J'ai intégré une macro (ci-dessous) dans un programme me permettant de supprimer les lignes comportant un "O" dans la colonne E.

Dans module 1 j'ai cela :

Sub Macro1()
Dim Lig As Long
Application.ScreenUpdating = False

' Boucle sur les lignes
For Lig = 4 To 3000 ' mettre ta dernière colonne idem pour le tri
If (Range("E" & Lig).Value = "O") Then

' Effacer le contenu de la ligne
Rows(Lig & ":" & Lig).Delete
End If
Next Lig

Application.ScreenUpdating = True

End Sub


Dans thisworkbook j'ai cela car j'ai créé un bouton perso :

Private Sub Workbook_Open()

Dim Bouton As CommandBarButton

Set CmdBar = Application.CommandBars _
.Add(Name:="MaBarrePerso", Position:=msoBarTop, _
Temporary:=True)

Set Bouton = CmdBar.Controls.Add(Type:=msoControlButton)
With Bouton
.FaceId = 6852
.OnAction = "Macro1" ' TaMacro représente ton Sub Macro_1() par exemple
.TooltipText = "JOINT"
.Caption = "EFFACEMENT"
.Style = msoButtonIconAndCaption
End With

CmdBar.Visible = True
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.CommandBars("MaBarrePerso").Delete
End Sub
cela a marché mais ne fonctionne plus ! merci d'avance,
 
Re : Macro qui ne fonctionne plus ?

Bonjour MJC1997, Tototiti,

En accord avec mon ami Tototiti, mais un peu moins rapide, essaye le code suivant:

Code:
Sub Macro1()
Dim Lig As Long, Derlig As Long
Application.ScreenUpdating = False
Derlig = Range("E3000").End(xlUp).Row
' Boucle sur les lignes
For Lig = Derlig To 4 Step -1 ' mettre ta dernière colonne idem pour le tri
    If (Range("E" & Lig).Value = "O") Then Rows(Lig).Delete
Next Lig
Application.ScreenUpdating = True
End Sub

Derlig sert à récupérer la dernière ligne utilisée, ce qui évite de faire une boucle sur x milliers de lignes quand on n'en a que 200.

Rows(lig).delete est aussi efficace.

@+

Gael
 
- 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

Discussions similaires

Réponses
5
Affichages
926
Réponses
2
Affichages
469
Réponses
15
Affichages
991
Retour