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 !
Je suis une grande débutante pour ce qui est d'excel (je sais créer un tableau simple de comptes avec des fonctions basiques style SOMME...) et depuis ce matin je cherche à obtenir simplement une macro qui me permettrait de supprimer des lignes si la valeur de leur case E est comprise entre 0.01 et 0.05, j'ai donc cherché partout dans ce forum, ou certaines demandes ressemblent au résultat que j'aimerai obtenir mais ça ne fonctionne pas pour moi, et je ne sais pas pourquoi...malgré de nombreuses tentatives.
Peut être que quelqu'un ici pourra m'éclairer car je commence à perdre espoir.
J'ai essayé plusieurs approches différentes de macro mais aucune ne fonctionne, je commence à me sentir nulle...
Merci à toutes les âmes charitables qui voudront bien prendre le temps de me répondre.
Amandine la Novice.
Ci-joint un exemple du tableau que je désire créer
EDIT : Je suis désolé, c'est en fait l'exact contraire qu'il me faudrait, à savoir supprimer toutes les lignes qui n'ont pas une valeur comprise entre 0.01 et 0.04 dans la colonne E😕😕
Merci pour la bienvenue, la suppression serait à la demande, car j'aurai besoin de le remplir par copier/coller externe, puis de supprimer les lignes avec les conditions décrites.
Merci pour vos réponses à la vitesse de la lumière 🙂
Sub Macro1()
Dim pF As Range
Range("E1").AutoFilter Field:=1, Criteria1:=">=0.01", Operator:=xlAnd, Criteria2:="<=0.05"
Set pF = [_FilterDataBase]
pF.Offset(1, 0).Resize(pF.Rows.Count - 1).SpecialCells(12).Delete Shift:=xlUp
ActiveSheet.AutoFilterMode = False
End Sub
Merci beaucoup pour cette feuille qui fait en fait... le contraire de ce qu'il me faut 🙂
J'ai du mal m'exprimer parce qu'en fait je n'ai pas besoin de supprimer les lignes qui ont une valeur comprise entre 0.01 et 0.04 en case E, mais au contraire de supprimer toutes les autres (celles qui ont pour valeur tout sauf les chiffres compris entre 0.01 et 0.04), ou dans une autre vision des choses j'aurai besoin de ne conserver que les lignes ou la valeur de E est comprise dans cette fourchette <0.05 et >0.00.
J'ai tout de même essayé de modifier cette macro, qui a l'avantage de n'avoir que peu de texte de code, ce qui me rend la tache plus facile, je croyais avoir trouvé en remplaçant les chiffres de la fourchette par leur inverse mais ça ne fonctionne pas, je ne comprend pas très bien la notation des commandes VBS, ayant commencé aujourd'hui.
Merci en tout cas car ça me donne une bonne piste et je vais voir si j'arrive à bricoler plus avant.
[EDIT] EDIT : je viens de me relire et en effet, j'ai carrément dit l'opposé de ce qu'il me fallait dans mon premier post, désolé de vous avoir fait perdre votre temps par une erreur d'inattention 😕😕😕
Sub Macro1()
Dim pF As Range
Range("E1").AutoFilter Field:=1, Criteria1:=">=0.01", Operator:=xlAnd, Criteria2:="<=0.05"
Set pF = [_FilterDataBase]
pF.Offset(1, 0).Resize(pF.Rows.Count - 1).SpecialCells(12).Delete Shift:=xlUp
ActiveSheet.AutoFilterMode = False
End Sub
J'ai essayé cette macro mais cela m’efface en fait toutes les lignes à part la première trouvée avec <0.05, j'aurai en fait besoin d'une macro qui me garde toutes les lignes qui ont la valeur comprise entre 0.01 et 0.04 en colonne E, j'ai essayé de modifier la macro mais pour l'instant je ne comprends vraiment rien à la notation employée (je suis une trèèèèèèèssssss grande débutante en macros, mais j'essaye de progresser)
Merci en tout cas d'avoir passé du temps à essayer de m'aider, et très rapidement de plus.
Je me remettrais au travail demain matin, car il se fait tard.
Encore merci 🙂
frosto
Essaie avec cette modif, ca devrait le faire 😉
Code:
Sub Macro2()
Dim pF As Range
Range("E1").AutoFilter Field:=1, Criteria1:=">0.04"
Set pF = [_FilterDataBase]
pF.Offset(1, 0).Resize(pF.Rows.Count - 1).SpecialCells(12).Delete Shift:=xlUp
ActiveSheet.AutoFilterMode = False
End Sub
frosto
Essaie avec cette modif, ca devrait le faire 😉
Code:
Sub Macro2()
Dim pF As Range
Range("E1").AutoFilter Field:=1, Criteria1:=">0.04"
Set pF = [_FilterDataBase]
pF.Offset(1, 0).Resize(pF.Rows.Count - 1).SpecialCells(12).Delete Shift:=xlUp
ActiveSheet.AutoFilterMode = False
End Sub
Bonjour et merci de continuer à m'aider.
J'ai essayé le morceau de code que vous m'avez donné mais il a le même effet que cité précédemment, il ne garde qu'une seule des lignes, et je n'arrive pas à comprendre pourquoi, ce code étant trop complexe pour moi, j'ai pourtant essayé de le modifier toute la matinée.
J'ai également essayé avec la macro donné par Victor21, mais je n'ai malheureusement pas eu de résultat plus probant, pourtant ce code me parait assez simple, il doit me manquer des connaissances basiques pour le faire fonctionner...
Merci de vos efforts, c'est vraiment très gentil d'essayer de m'aider 🙂
c'est étrange parce que ça n'a pas du tout le même effet chez moi, je ne comprends pas, j'ai pourtant créé un tableau simple et ai ensuite copié le code donné dans une macro mais le résultat n'est pas du tout le même, le problème peut il venir du fait que je sois sous excel 2007 ?
Je vous joint une capture d'écran ainsi que mon fichier test, au cas ou.
Merci beaucoup pour le temps passé à m'aider.
Sub Macro_OK()
With ActiveSheet
.Range("H1").FormulaR1C1 = "ENTETE5"
.Range("H2") = ">0,04"
.Range("A1:F12").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=.Range("H1:H2"), Unique:=False
.Range("_FilterDataBase").Offset(1, 0).Resize(.Range("_FilterDataBase").Rows.Count -1).SpecialCells(xlCellTypeVisible).Delete Shift:=xlUp
.ShowAllData
End With
End Sub
Voici les données de départ avec lesquelles la macro ci-dessus fonctionne.
- 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.