Création de macro supression de ligne
Résolu
r-liam
-
r-liam -
r-liam -
Bonjour.
J'ai effectué de nombreuses recherches sur le sujet, et j'ai trouvé quelques réponses, mais je n'ai jamais réussi à les comprendre (ni même à les appliquer). C'est vous dire mon niveau.
Voici donc mon problème:
Je travail sous excel 2007 et je souhaite créer une macro me permettant de supprimer les lignes n'ayant pas le bon nombre dans la colonne F.
Voici par exemple ce que j'ai:
A B C D E F
1 xx xx xx xx xx 333
2 xx xx xx xx xx 333
3 xx xx xx xx xx 686
4 xx xx xx xx xx 333
5 xx xx xx xx xx 662
Et voici ce que je voudrais avoir grâce à la macro:
A B C D E F
1 xx xx xx xx xx 333
2 xx xx xx xx xx 333
3 xx xx xx xx xx 333
En gros, supprimer les lignes n'ayant pas le code 333 et faire un tri sur la colonne F.
Comment faire cette macro? (Inutile, je pense, de vous préciser mon faible niveau. Je n'y connais que les bases en macro, en gros, l'utilisation de l'enregistreur.)
Merci de vos réponses
J'ai effectué de nombreuses recherches sur le sujet, et j'ai trouvé quelques réponses, mais je n'ai jamais réussi à les comprendre (ni même à les appliquer). C'est vous dire mon niveau.
Voici donc mon problème:
Je travail sous excel 2007 et je souhaite créer une macro me permettant de supprimer les lignes n'ayant pas le bon nombre dans la colonne F.
Voici par exemple ce que j'ai:
A B C D E F
1 xx xx xx xx xx 333
2 xx xx xx xx xx 333
3 xx xx xx xx xx 686
4 xx xx xx xx xx 333
5 xx xx xx xx xx 662
Et voici ce que je voudrais avoir grâce à la macro:
A B C D E F
1 xx xx xx xx xx 333
2 xx xx xx xx xx 333
3 xx xx xx xx xx 333
En gros, supprimer les lignes n'ayant pas le code 333 et faire un tri sur la colonne F.
Comment faire cette macro? (Inutile, je pense, de vous préciser mon faible niveau. Je n'y connais que les bases en macro, en gros, l'utilisation de l'enregistreur.)
Merci de vos réponses
A voir également:
- Création de macro supression de ligne
- Partage de photos en ligne - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Creation de compte google - Guide
- Creation de site web - Guide
- Création de compte gmail - Guide
2 réponses
Bonjour,
Effectivement, ce sujet a déjà été abordé.
Pour cela il nous faut tout d'abord une boucle qui va "regarder" dans chaque cellule de ta colonne F.
Boucle que l'on va faire commencer par la dernière ligne pour remonter jusqu"à la 2ème. Pourquoi dans ce sens? Parce que lors de la suppression complète d'une ligne, le num de la ligne ou l'on se trouve "remonte" d'un "cran" et donc en commençant par le début, il va nous en oublier.
Pour une boucle, il faut tout d'abord connaitre la dernière ligne :
Pour la boucle, on a besoin d'une deuxième variable qui va changer à chaque étape et représentera le numéro de la ligne sur laquelle on se situe :
Pour faire fonctionner ce code :
TESTEZ LE SUR UN FICHIER EXEMPLE à partir du moment ou on "delete", mieux vaux perdre 5 minutes qu'une base de données... Les "manipulations" réalisées par une macro sont définitives (à moins de ne pas enregistrer les modifications)...
Dans votre fichier, taper : ALT+F11
Dans la fenêtre Visual Basic ainsi ouverte : Insertion/Modules.
Copier coller ce code dans la fenêtre du module ainsi créé.
Fermer visual basic puis :
ALT+F8 choisir "effacelignes" et cliquer sur exécuter.
Effectivement, ce sujet a déjà été abordé.
Pour cela il nous faut tout d'abord une boucle qui va "regarder" dans chaque cellule de ta colonne F.
Boucle que l'on va faire commencer par la dernière ligne pour remonter jusqu"à la 2ème. Pourquoi dans ce sens? Parce que lors de la suppression complète d'une ligne, le num de la ligne ou l'on se trouve "remonte" d'un "cran" et donc en commençant par le début, il va nous en oublier.
Pour une boucle, il faut tout d'abord connaitre la dernière ligne :
Dim derniereligne As Integeron détermine une variable comme étant un nombre entier (un numéro de ligne est forcément entier)
derniereligne = Sheets("Feuil1").Range("A65536").End(xlUp).Rowon lui affecte ici le numéro de la dernière ligne de la feuille Feuil1 colonne A
Pour la boucle, on a besoin d'une deuxième variable qui va changer à chaque étape et représentera le numéro de la ligne sur laquelle on se situe :
Sub effacelignes() Dim i As Integer Dim derniereligne As Integer derniereligne = Sheets("Feuil1").Range("A65536").End(xlUp).Row For i = derniereligne To 2 Step -1 'de la dernière à la 2ème ligne (step -1 signifie que l'on enlève 1 à la valeur de i à chaque étape) If Sheets("Feuil1").Range("F" & i).Value <> 333 Then 'Si F... est différent de 333 Sheets("Feuil1").Range("F" & i).EntireRow.Delete 'alors on supprime la ligne End If 'fin du test "SI" Next i 'i suivant (ligne précédente) End Sub
Pour faire fonctionner ce code :
TESTEZ LE SUR UN FICHIER EXEMPLE à partir du moment ou on "delete", mieux vaux perdre 5 minutes qu'une base de données... Les "manipulations" réalisées par une macro sont définitives (à moins de ne pas enregistrer les modifications)...
Dans votre fichier, taper : ALT+F11
Dans la fenêtre Visual Basic ainsi ouverte : Insertion/Modules.
Copier coller ce code dans la fenêtre du module ainsi créé.
Fermer visual basic puis :
ALT+F8 choisir "effacelignes" et cliquer sur exécuter.