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 !
J'ai un problème lors de l'effacement de mes données.
Je suis obligé de réaliser plusieurs boucles pour suppimer toutes les lignes inutiles, mais certaines ne sont pas supprimé.
Code:
'Effacement données inutile sur feuille fournisseur
Sheets(i).Select
Dim derl As Long
derl = Cells(65536, 5).End(xlUp).Row
For f = 1 To derl
If Cells(f, 8).Value = "." Then
Rows(f).Select
Selection.Delete Shift:=xlUp
End If
Next f
Dim derl1 As Long
derl1 = Cells(65536, 5).End(xlUp).Row
For t = 1 To derl1
If Cells(t, 6).Value = "." Then
Rows(t).Select
Selection.Delete Shift:=xlUp
End If
Next t
Dim derl4 As Long
derl4 = Cells(65536, 5).End(xlUp).Row
For t = 1 To derl4
If Cells(t, 6).Value = "." Then
Rows(t).Select
Selection.Delete Shift:=xlUp
End If
Next t
Dim derl2 As Long
derl2 = Cells(65536, 5).End(xlUp).Row
For o = 1 To derl2
If Cells(o, 9).Value = "0" Then
Rows(o).Select
Selection.Delete Shift:=xlUp
End If
Next o
Dim derl3 As Long
derl3 = Cells(65536, 5).End(xlUp).Row
For w = 1 To derl3
If Cells(w, 10).Value = "0" Then
Rows(w).Select
Selection.Delete Shift:=xlUp
End If
Next w
Le système ne veux pas systématiquement supprimer les lignes, il me reste parfois des lignes à "0" ou des "."
quand tu supprimes la ligne 4, la 5 deviendra 4 et ne sera pas traitée puisque le next te fera traiter le ligne 5 qui etait precedemment la 6
Pour faire correctement la suppression il faut partir de la fin et aller ver le debut
For i = derline to 1 step -1 ' Step -1 permet de modifier le compteur et d'affecte -1 à le prochaine valeur
Par contre, y a pas un moyen d'avoir le retour a la ligne quand on écrit
Code:
Dim derl As Long
derl = Cells(65536, 5).End(xlUp).Row
For f = derl To 1 Step -1
If Cells(f, 8).Value = "." Or Cells(f, 6).Value = "." Or Cells(f, 8).Value = "" Or Cells(f, 13).Value = "" Or Cells(f, 6).Value = "NRC" Or Cells(f, 6).Value = "CA" Or Cells(f, 6).Value = "AFFECTATION" Or Cells(f, 6).Value = "TRANSPORT" Or Cells(f, 6).Value = "FTRS" Or Cells(f, 6).Value = "DCST" Or Cells(f, 6).Value = "AOG" Then
Rows(f).Select
Selection.Delete Shift:=xlUp
End If
Next f
Sub test()
Dim X As Long
'Effacement données inutile sur feuille fournisseur
With Sheets("fournisseur")
For X = .Range("E65536").End(xlUp).Row To 1 Step -1
If .Range("M" & X) = "" Or .Range("H" & X) = "." Or _
.Range("H" & X) = "" Or .Range("F" & X) = "." Or _
.Range("F" & X) = "NRC" Or .Range("F" & X) = "CA" Or _
.Range("F" & X) = "AFFECTATION" Or .Range("F" & X) = "TRANSPORT" Or _
.Range("F" & X) = "FTRS" Or .Range("F" & X) = "DCST" Or _
.Range("F" & X) = "AOG" Then .Rows(X).Delete
Next X
End With
End Sub
J'ai remplacé tes cells() par des range() ça évite de faire 2 fois la F et tu vois directement si toutes tes colonnes sont traitées.
Quand tu fais une macro : regroupe toutes tes déclarations au même endroit, en début de macro. ça ne change rien pour Excel, il réserve la place mémoire lors d'un premier passage
Mais pour toi, tu sais quelles variables tu utilises, et ça t'évitera des erreurs.
Je n'utilise Cells que lorsque j'ai un compteur pour les colonnes :
Range("BX" & Lig) est plus lisible (pour moi 😛 ) que Cells(Lig, 76)
J'essaie de simplifier mes tests, par exemple :
.Range("I" & X) = 0 Or .Range("J" & X) = 0
peut être remplacé par
(.Range("I" & X) * .Range("J" & X) )= 0
si l'un ou l'autre est égal à 0 la multiplication est égale à 0
Je supprime les select : ils ralentissent la macro
La colonne F à la place de mettre toutes les valeurs pouvant entraîner une suppression de la ligne, ne serait-il pas plus simple de travailler avec l'inverse : si F est différent de ... supprimer ?
Dépend évidemment des valeurs interdisant la suppression
- 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