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

Suppression ligne, macro inefficace

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

B

britchouleloup

Guest
Bonjour,
J'exporte depuis un logiciel comptable des données sur Excel. Je dois les retraiter, notamment supprimer des lignes vides et des contenant certain caractère.

J'ai créé mes petites macro, mais je ne trouve pas la solution. Une pour supprimer les lignes dont la cellule en "E" ne contient pas "MIG", l'autre est censée supprimer toutes les vides. Mais elle ne marche pas completement, je dois répéter l'action plusieurs fois pour toutes les avoir.

Je joins un petit fichier qui illustrera bien mon propos.


Quelqu'un pourrait-il m'aider, et me commenter mon (mes) erreur(s). Merci beaucoup par avance
 

Pièces jointes

Re : Suppression ligne, macro inefficace

Bonsoir,

les 2 en 1

A partir d'un code de JB

Si tu n'as rien dans la cellule E5
Si tu as quelque chose, supprime .Value... et .ClearContents


Code:
Sub supp()
    With [E5]
        .Value = "MIG"
        .AutoFilter Field:=5, Criteria1:="<>MIG"
        Range("_FilterDataBase").Offset(1, 0).Resize(Range("_FilterDataBase"). _
            Rows.Count - 1).SpecialCells(xlCellTypeVisible).Delete Shift:=xlUp
        .AutoFilter
        .ClearContents
    End With
End Sub
 
Re : Suppression ligne, macro inefficace

Bonsoir le forum,

bonsoir Bhbh. Ta macro est tombée sur une boucle sans fin avec mon PC.

bonsoir Britchoulelou, je te propose ça
Code:
Public Sub toto()
With ActiveSheet
Dim i As Integer
toto:
For i = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
    If (.Range("E" & i).Value <> "MIG") Then
        Rows(i).Delete
        GoTo toto
    End If
Next
End With
End Sub

Bonne soirée
 
Re : Suppression ligne, macro inefficace

Re-,

En boucle?

essaie le fichier joint

Pour ton code, une suppression de ligne se fait de bas en haut, et ne connaissant pas le nombre de lignes, il vaut mieux mettre i en Long :

Code:
Public Sub toto()
With ActiveSheet
Dim i As Long
For i = .Cells(.Rows.Count, 1).End(xlUp).Row To 6 Step -1
    If (.Range("E" & i).Value <> "MIG") Then
        Rows(i).Delete
    End If
Next
End With
End Sub
 

Pièces jointes

Re : Suppression ligne, macro inefficace

Pour ton code, une suppression de ligne se fait de bas en haut, et ne connaissant pas le nombre de lignes, il vaut mieux mettre i en Long

C'est vraiment pas bête, c'est vrai qu'avec de haut en bas, j'étais em**** quand je supprimais une ligne (du coup, j'analyse pas la deuxième...).

mais je ne connaissais pas le "Step" (très utile pour le coup)

Une fois de plus, je remercie ce magnifique forum, où on apprend des choses à chaque clic...


Bonne nuit à tous
 
Re : Suppression ligne, macro inefficace

merci beaucoup de votre aide. Et comme dit romain merci aussi à tous les forumeurs qui apportent une aide précieuse (pas besoin de poster beaucoup de message pour avoir des réponses, suffit de chercher un peu, pour le coup j'avais vraiment pas trouvé de réponse.)

Merci
 
- 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
6
Affichages
662
Réponses
2
Affichages
644
L
Réponses
9
Affichages
1 K
D
Réponses
9
Affichages
2 K
J
Réponses
9
Affichages
3 K
Justine56
J
B
Réponses
17
Affichages
3 K
benoitoleron
B
T
Réponses
1
Affichages
2 K
M
Réponses
3
Affichages
2 K
M
N
Réponses
9
Affichages
6 K
pierre0000
P
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…