Macro Excel 2017 pour supprimer des lignes
Fermé
FURAX69
Messages postés
16
Date d'inscription
samedi 18 octobre 2003
Statut
Membre
Dernière intervention
3 octobre 2021
-
2 sept. 2020 à 11:49
yg_be Messages postés 23476 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 février 2025 - 4 sept. 2020 à 15:39
yg_be Messages postés 23476 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 février 2025 - 4 sept. 2020 à 15:39
A voir également:
- Macro Excel 2017 pour supprimer des lignes
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Supprimer liste déroulante excel - Guide
- Aller à la ligne excel - Guide
- Supprimer une page word - Guide
- Supprimer compte instagram - Guide
5 réponses
yg_be
Messages postés
23476
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 février 2025
Ambassadeur
1 568
Modifié le 2 sept. 2020 à 13:20
Modifié le 2 sept. 2020 à 13:20
bonjour, un exemple:
en ligne 3, j'ai supposé que le nom de la feuille contenant le tableau était "furax".
j'ai supposé que ton tableau était tout seul dans cette feuille.
Sub delf() Dim fl As Worksheet, rng As Range, premlig As Long, dernlig As Long, lig As Long Set fl = ActiveWorkbook.Sheets("furax") Set rng = fl.UsedRange premlig = rng.Row dernlig = premlig + rng.Rows.Count - 1 For lig = dernlig To premlig Step -1 If fl.Cells(lig, "f") <> "FRG189" Then fl.Rows(lig).EntireRow.Delete End If Next lig End Sub
en ligne 3, j'ai supposé que le nom de la feuille contenant le tableau était "furax".
j'ai supposé que ton tableau était tout seul dans cette feuille.
FURAX69
Messages postés
16
Date d'inscription
samedi 18 octobre 2003
Statut
Membre
Dernière intervention
3 octobre 2021
4
2 sept. 2020 à 13:42
2 sept. 2020 à 13:42
Merci infiniment yg_be ;)
Cela semble fonctionner mais cela supprimer aussi ma ligne de titres... Comment faire pour que le process démarre ligne 2 ?
Cela semble fonctionner mais cela supprimer aussi ma ligne de titres... Comment faire pour que le process démarre ligne 2 ?
yg_be
Messages postés
23476
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 février 2025
1 568
Modifié le 2 sept. 2020 à 14:04
Modifié le 2 sept. 2020 à 14:04
en ligne 7:
For lig = dernlig To premlig + 1 Step -1
FURAX69
Messages postés
16
Date d'inscription
samedi 18 octobre 2003
Statut
Membre
Dernière intervention
3 octobre 2021
4
>
yg_be
Messages postés
23476
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 février 2025
4 sept. 2020 à 11:00
4 sept. 2020 à 11:00
Merci encore de ton aide.. Tout marche impecc :)
J'ai une autre requête dans l'amélioration de cette macro.
Je souhaiterais pouvoir entrer la clé de recherche dans une cellule "le fameux FRG189" de mon classeur Macro pour pouvoir utiliser cette fonction avec d'autres data.
Je suppose que je dois modifier cette partie
Mais je ne sais pas comment... Faut il impérativement entrer la clé de filtrage FRxxxx dans un eform ou bien on peut la saisir dans une cellule du classeur contenant la macro et simplement adresser cette cellule dans le code ?
J'ai une autre requête dans l'amélioration de cette macro.
Je souhaiterais pouvoir entrer la clé de recherche dans une cellule "le fameux FRG189" de mon classeur Macro pour pouvoir utiliser cette fonction avec d'autres data.
Je suppose que je dois modifier cette partie
If fl.Cells(lig, "f") <> "FRG189" Then
fl.Rows(lig).EntireRow.Delete
End If
Mais je ne sais pas comment... Faut il impérativement entrer la clé de filtrage FRxxxx dans un eform ou bien on peut la saisir dans une cellule du classeur contenant la macro et simplement adresser cette cellule dans le code ?
yg_be
Messages postés
23476
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 février 2025
1 568
>
FURAX69
Messages postés
16
Date d'inscription
samedi 18 octobre 2003
Statut
Membre
Dernière intervention
3 octobre 2021
4 sept. 2020 à 11:32
4 sept. 2020 à 11:32
le plus simple, je pense, c'est de la saisir dans une cellule.
vois-ci-dessous, les lignes 4 à 5 montrent différentes possibilités (il faut, bien sûr, n'en garder qu'une).
vois-ci-dessous, les lignes 4 à 5 montrent différentes possibilités (il faut, bien sûr, n'en garder qu'une).
Private Sub delf() Dim fl As Worksheet, rng As Range, premlig As Long, dernlig As Long, lig As Long, cle As String Set fl = ActiveWorkbook.Sheets("furax") cle = "FRG189" cle = fl.[Z1] 'cellule Z1 de la feuille du tableau cle = ActiveWorkbook.Sheets("colere").[Z23] 'cellule Z23 de la feuille "colere" Set rng = Intersect(fl.UsedRange, fl.Columns("f")) premlig = rng.Row dernlig = premlig + rng.Rows.Count - 1 For lig = dernlig To premlig Step -1 If fl.Cells(lig, "f") <> cle Then fl.Rows(lig).EntireRow.Delete End If Next lig End Sub
FURAX69
Messages postés
16
Date d'inscription
samedi 18 octobre 2003
Statut
Membre
Dernière intervention
3 octobre 2021
4
Modifié le 4 sept. 2020 à 13:40
Modifié le 4 sept. 2020 à 13:40
Hello
J'ai donc choisi d'adresser une cellule D5 du classeur dans lequel j'ai ma macro :
en utilisant la ligne 5 :
et j'ai modifié la ligne 11 :
Mais ça ne fonctionne pas... La cle (saisie FRG189 soit idem qu'en dur) n'est pas trouvée. Et le fichier final est vide
Comme si la définition de la variable "cle" était fausse ?
Ais-je loupé un truc ?
J'ai donc choisi d'adresser une cellule D5 du classeur dans lequel j'ai ma macro :
en utilisant la ligne 5 :
cle = fl.[D5] 'cellule D5 de la feuille dans laquelle j'ai ma macro (différente du tableau à traiter)
et j'ai modifié la ligne 11 :
If fl.Cells(lig, "f") <> cle Then
Mais ça ne fonctionne pas... La cle (saisie FRG189 soit idem qu'en dur) n'est pas trouvée. Et le fichier final est vide
Comme si la définition de la variable "cle" était fausse ?
Ais-je loupé un truc ?
yg_be
Messages postés
23476
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 février 2025
1 568
4 sept. 2020 à 14:11
4 sept. 2020 à 14:11
oui, tu n'as pas lu que la ligne 5 était pour le cas où la clé était dans la même feuille que le tableau.
tu es donc dans le cas de la ligne 6, la clé étant dans une autre feuille.
ta macro est dans un autre fichier que le tableau?
tu es donc dans le cas de la ligne 6, la clé étant dans une autre feuille.
ta macro est dans un autre fichier que le tableau?
FURAX69
Messages postés
16
Date d'inscription
samedi 18 octobre 2003
Statut
Membre
Dernière intervention
3 octobre 2021
4
Modifié le 4 sept. 2020 à 14:51
Modifié le 4 sept. 2020 à 14:51
- Ma macro est dans un fichier MacroBKLG.xlsm
- La clé est la valeur de la cellule D5 de ce même fichier MacroBKLG.xlsm et spécifiquement dans l'onglet unique Sheet1
- Le fichier à traiter est "LY Backlog.xlsx" et est chargé séparément. (Peut-être pourrais-je ensuite le charger aussi via la macro ?)
Si je défini la variable cle ainsi, ça plante :
Le raccourci de ma macro est Ctrl+G et je le lance une fois dans mon fichier "LY Backlog.xlsx"...
Je ne suis donc plus dans "ActiveWorkbook.Sheets" ?
Je viens de vérifier et cette ligne
C'est pour ça que j'ai pris la ligne exemple 5
<code>cle = fl.[D5] /code>
Mais si je mets bien "FRG189" dans la cellule D5 de mon fichier MacroBKLG.xlsm
le traitement s'achève sans trouver FRG189 dans le tableau
- La clé est la valeur de la cellule D5 de ce même fichier MacroBKLG.xlsm et spécifiquement dans l'onglet unique Sheet1
- Le fichier à traiter est "LY Backlog.xlsx" et est chargé séparément. (Peut-être pourrais-je ensuite le charger aussi via la macro ?)
Si je défini la variable cle ainsi, ça plante :
cle = ActiveWorkbook.Sheets("Sheet1").[D5]
Le raccourci de ma macro est Ctrl+G et je le lance une fois dans mon fichier "LY Backlog.xlsx"...
Je ne suis donc plus dans "ActiveWorkbook.Sheets" ?
Je viens de vérifier et cette ligne
cle = ActiveWorkbook.Sheets("Sheet1").[D5]prend bien la cellule D5 de mon fichier à traiter (LY Backlog.xlsx)... Et non pas la bonne cellule D5 qui se trouve bien dans mon fichier MacroBKLG.xlsm
C'est pour ça que j'ai pris la ligne exemple 5
<code>cle = fl.[D5] /code>
Mais si je mets bien "FRG189" dans la cellule D5 de mon fichier MacroBKLG.xlsm
le traitement s'achève sans trouver FRG189 dans le tableau
yg_be
Messages postés
23476
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 février 2025
1 568
4 sept. 2020 à 14:41
4 sept. 2020 à 14:41
les deux classeurs se trouvent-ils dans le même dossier?
je vais adapter la macro pour ouvrir le second classeur. il faudra donc qu'il soit fermé.
je vais adapter la macro pour ouvrir le second classeur. il faudra donc qu'il soit fermé.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
FURAX69
Messages postés
16
Date d'inscription
samedi 18 octobre 2003
Statut
Membre
Dernière intervention
3 octobre 2021
4
4 sept. 2020 à 15:02
4 sept. 2020 à 15:02
Oui, ils sont dans le même dossier.
J'ai réussi à faire fonctionner la cle en l'adressant ainsi
cle = Workbooks("MacroBKLG.xlsm").Sheets("Sheet1").[D5]
Maintenant, si ma macro pouvait charger le fichier LY Backlog.xlsx automatiquement à son lancement et après bien sûr, entré la clé en D5, ce serait royal :)
Merci de ton temps en tout cas...
J'ai réussi à faire fonctionner la cle en l'adressant ainsi
cle = Workbooks("MacroBKLG.xlsm").Sheets("Sheet1").[D5]
Maintenant, si ma macro pouvait charger le fichier LY Backlog.xlsx automatiquement à son lancement et après bien sûr, entré la clé en D5, ce serait royal :)
Merci de ton temps en tout cas...
yg_be
Messages postés
23476
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 février 2025
1 568
4 sept. 2020 à 15:39
4 sept. 2020 à 15:39
un exemple, supposant que les deux fichiers sont dans le même dossier:
j'ai mis en commentaire les lignes 15 et 16, qui sauvent et ferment le ficher contenant le tableau.
Private Sub delf() Dim fl As Worksheet, rng As Range, premlig As Long, dernlig As Long, lig As Long Dim cle As String, wb As Workbook Set wb = Workbooks.Open(ThisWorkbook.Path + "\LY Backlog.xlsx") Set fl = wb.Sheets("furax") cle = ThisWorkbook.Sheets("Sheet1").[D5] Set rng = fl.UsedRange premlig = rng.Row dernlig = premlig + rng.Rows.Count - 1 For lig = dernlig To premlig + 1 Step -1 If fl.Cells(lig, "f") <> cle Then fl.Rows(lig).EntireRow.Delete End If Next lig 'wb.Save 'wb.Close End Sub
j'ai mis en commentaire les lignes 15 et 16, qui sauvent et ferment le ficher contenant le tableau.