[macro excel] suppression de ligne sous condi
Résolu
JOLARITALE
Messages postés
144
Date d'inscription
Statut
Membre
Dernière intervention
-
JOLARITALE Messages postés 144 Date d'inscription Statut Membre Dernière intervention -
JOLARITALE Messages postés 144 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai trois tableaux excel.
j'en avais 5 de 10 000 ligne chacun, je peut pas reduire le nombre de tableau d'avantage.
Ce que j'ai comme tableau :
Une liste de 28 colonnes, seules les colonnes A B E et V sont variables manuellement, toutes les autres sont modifié automoatiquement par rapport a ce qu'on ecri dans la colonne E
la colonne A correspond au numéro de la semaine
la colonne B correspond au nom de personnes
la colonne E correspond au matière utilisées (par la personne colonne B)
la colonne V correspond au temps d'utilisation de la matière (colonne E) par la personne (colonneB)
Les données des colonne A B E et V sont toute trois dans un autre tableau
pour reprendre les valeurs j'ai utilisé la fonction égale d'Excel
mais (eh oui il y a un mais), il y a des matière qui ne doivent pas entrer dans la liste de 28 colonnes...
pour celle ci, les colonne de F à U comporte les donnée "#N/A"
j'aimerais créer une macro me supprimant toutes les ligne qui un "#N/A" en colonne C
comment je fais?
c'est la première macro que je vais etre amener à faire...
je vous en prie soyez indulgent si je comprend pas tout tout de suite...
Merci ;)
j'ai trois tableaux excel.
j'en avais 5 de 10 000 ligne chacun, je peut pas reduire le nombre de tableau d'avantage.
Ce que j'ai comme tableau :
Une liste de 28 colonnes, seules les colonnes A B E et V sont variables manuellement, toutes les autres sont modifié automoatiquement par rapport a ce qu'on ecri dans la colonne E
la colonne A correspond au numéro de la semaine
la colonne B correspond au nom de personnes
la colonne E correspond au matière utilisées (par la personne colonne B)
la colonne V correspond au temps d'utilisation de la matière (colonne E) par la personne (colonneB)
Les données des colonne A B E et V sont toute trois dans un autre tableau
pour reprendre les valeurs j'ai utilisé la fonction égale d'Excel
mais (eh oui il y a un mais), il y a des matière qui ne doivent pas entrer dans la liste de 28 colonnes...
pour celle ci, les colonne de F à U comporte les donnée "#N/A"
j'aimerais créer une macro me supprimant toutes les ligne qui un "#N/A" en colonne C
comment je fais?
c'est la première macro que je vais etre amener à faire...
je vous en prie soyez indulgent si je comprend pas tout tout de suite...
Merci ;)
A voir également:
- [macro excel] suppression de ligne sous condi
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Forcer suppression fichier - Guide
- Aller à la ligne excel - Guide
- Partage de photos en ligne - Guide
- Liste déroulante excel - Guide
12 réponses
Bonjour
Voici une petite macro qui supprime la ligne entière si la cellule testé renvoie une erreur #N/A (remplace "ma feuille" par le nom de ta feuille ;))
Sub supprime()
For Each c In Worksheets("ma feuille").Range("C:C")
If IsError(c.Value) Then
If c.Value = CVErr(xlErrNA) Then
c.EntireRow.Delete
End If
End If
Next c
End Sub
Voici une petite macro qui supprime la ligne entière si la cellule testé renvoie une erreur #N/A (remplace "ma feuille" par le nom de ta feuille ;))
Sub supprime()
For Each c In Worksheets("ma feuille").Range("C:C")
If IsError(c.Value) Then
If c.Value = CVErr(xlErrNA) Then
c.EntireRow.Delete
End If
End If
Next c
End Sub
Je suppose que tu l'auras corrigé toi même... sinon, tu remplaces
And Range("E" & i).Value = "" Then
par :
And Range("E" & i).Value <> "" Then
m@rina
And Range("E" & i).Value = "" Then
par :
And Range("E" & i).Value <> "" Then
m@rina
je viens de rééssayé sur un autre classeur
ca marche presque
sur une colonne de 10 #N/A il m'en supprime 5 puis apres en refesant le raccourci il en supprime 3 puis ensuite les dernier un par un
je ne comprend pas
ca marche presque
sur une colonne de 10 #N/A il m'en supprime 5 puis apres en refesant le raccourci il en supprime 3 puis ensuite les dernier un par un
je ne comprend pas
Bonjour,
Ouppss !! Effectivement, comme d'habitude, j'avais oublié le problème des suppression de lignes dans une boucle... Quand la ligne est supprimée, Excel descend d'une ligne parce qu'elle est supprimée, et descend à nouveau parce que c'est la boucle, et toutes les lignes souhaitées ne sont donc pas supprimées !
Pour pallier ce problème il faut partir du bas :
Sub supprime3()
Dim i As Integer
For i = Range("C65000").End(xlUp).Row To 1 Step -1
If IsError(Range("C" & i).Value) And Range("E" & i).Value = "" Then
If Range("C" & i).Value = CVErr(xlErrNA) Then
Range("c" & i).EntireRow.Delete
End If
End If
Next
End Sub
ps : j'ai intégré la deuxième condition : E doit être vide
Ouppss !! Effectivement, comme d'habitude, j'avais oublié le problème des suppression de lignes dans une boucle... Quand la ligne est supprimée, Excel descend d'une ligne parce qu'elle est supprimée, et descend à nouveau parce que c'est la boucle, et toutes les lignes souhaitées ne sont donc pas supprimées !
Pour pallier ce problème il faut partir du bas :
Sub supprime3()
Dim i As Integer
For i = Range("C65000").End(xlUp).Row To 1 Step -1
If IsError(Range("C" & i).Value) And Range("E" & i).Value = "" Then
If Range("C" & i).Value = CVErr(xlErrNA) Then
Range("c" & i).EntireRow.Delete
End If
End If
Next
End Sub
ps : j'ai intégré la deuxième condition : E doit être vide
euh...
c'est la premiere macro que je suis amener à utiliser... donc la modifier... non j'aurais pas su ;)
Merci beaucoup!!!
tu es vraiment trop géniale!!!
c'est la premiere macro que je suis amener à utiliser... donc la modifier... non j'aurais pas su ;)
Merci beaucoup!!!
tu es vraiment trop géniale!!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
J'ai bien essayer de prendre des bout de macro par ci par la pour voir mais... non...
quand je le lance il me surligne le 2eme End If
voila ma macro
Sub supp()
Application.ScreenUpdating = False
Dim i As Integer
For i = Range("C2500").End(xlUp).Row To 1 Step -1
If IsError(Range("C" & i).Value) And Range("E" & i).Value <> "" Then
If Range("C" & i).Value = CVErr(xlErrNA) Then
Range("c" & i).EntireRow.Delete
End If
End If
Next
Application.ScreenUpdating = True
End Sub
J'ai bien essayer de prendre des bout de macro par ci par la pour voir mais... non...
quand je le lance il me surligne le 2eme End If
voila ma macro
Sub supp()
Application.ScreenUpdating = False
Dim i As Integer
For i = Range("C2500").End(xlUp).Row To 1 Step -1
If IsError(Range("C" & i).Value) And Range("E" & i).Value <> "" Then
If Range("C" & i).Value = CVErr(xlErrNA) Then
Range("c" & i).EntireRow.Delete
End If
End If
Next
Application.ScreenUpdating = True
End Sub
Re-essayé chez moi, pas de problème !!!
En plus une erreur juste sur un End If, ça paraît curieux...
Elle dit quoi l'erreur ?
T'es sûre de ne pas avoir mis un point d'arrêt sur le End If ? (gros point rouge devant la ligne)
m@rina
En plus une erreur juste sur un End If, ça paraît curieux...
Elle dit quoi l'erreur ?
T'es sûre de ne pas avoir mis un point d'arrêt sur le End If ? (gros point rouge devant la ligne)
m@rina
euh... non
j'aipas fait de chose qui ressemble a un gros point rouge ;)
en meme temps c'est pas grave... je vais revenir a la bonne vielle méthode... vais les trier en fonction de C puis de E et supprimer toutes les dernière lignes...
j'aipas fait de chose qui ressemble a un gros point rouge ;)
en meme temps c'est pas grave... je vais revenir a la bonne vielle méthode... vais les trier en fonction de C puis de E et supprimer toutes les dernière lignes...
je peut pas le faire ici...
mais je pourrais le faire ce soir
mais c'est pas grave je vais le faire a la main tant pis
ne t'embete pas...
mais je pourrais le faire ce soir
mais c'est pas grave je vais le faire a la main tant pis
ne t'embete pas...
Voila le fichier
http://www.cijoint.fr/cjlink.php?file=cj200807/cijh0qZDcO.xls.
Ici, les ligne 793, 795 à 798 et 801 devrais se supprimer
mais ça coince
par contre j'ai essayé de mettre le .bas sur cijon mais le ça dit que le format est non supporté.
http://www.cijoint.fr/cjlink.php?file=cj200807/cijh0qZDcO.xls.
Ici, les ligne 793, 795 à 798 et 801 devrais se supprimer
mais ça coince
par contre j'ai essayé de mettre le .bas sur cijon mais le ça dit que le format est non supporté.
Bonsoir,
Je suis désolée, mais ton fichier n'est vraiment pas fait dans les règles de l'art Excel !!!
Règle importante : JAMAIS de cellules fusionnées dans un base de données !!! Donc à supprimer toutes ces cellules fusionnées...
Deuxième règle : Jamais d'entêtes de colonnes sur 1 ou plusieurs lignes...
Ensuite : tu as une pseudo liaison avec une macro qui sort de je ne sais où et qui fait planter : à supprimer (Menu Edition, Liaison, Rompre les liaisons).
Et pour terminer : tu m'as dit que l'un des critères étaient que les cellules de la colonne E ne soit pas vides. Or, aucune cellule de la cellule E n'est vide... Il y a une formule dans chaque cellule ! Et une cellule avec une fomule, même si le résultat est "rien", n'est pas une cellule vide !
m@rina
Je suis désolée, mais ton fichier n'est vraiment pas fait dans les règles de l'art Excel !!!
Règle importante : JAMAIS de cellules fusionnées dans un base de données !!! Donc à supprimer toutes ces cellules fusionnées...
Deuxième règle : Jamais d'entêtes de colonnes sur 1 ou plusieurs lignes...
Ensuite : tu as une pseudo liaison avec une macro qui sort de je ne sais où et qui fait planter : à supprimer (Menu Edition, Liaison, Rompre les liaisons).
Et pour terminer : tu m'as dit que l'un des critères étaient que les cellules de la colonne E ne soit pas vides. Or, aucune cellule de la cellule E n'est vide... Il y a une formule dans chaque cellule ! Et une cellule avec une fomule, même si le résultat est "rien", n'est pas une cellule vide !
m@rina
pour le moment je suis pas chez moi mais des que je rentre j'essai
merci beaucoup
la méthode Delete de la classe Range a échoué.
et la ligne c.EntireRow.Delete apparait en jaune surligné...
que dois je faire?
Qu'est ce que ca veux dire?
Merci
Est ce que par hasard tes ta feuille serait protégée ? Je ne vois que ça...
Quelle est ta version d'Excel ?
m@rina
je sais pas trop... comment je peut verifier ça?
je suis sous 2003
il faudrait donc que la colonne C contienne #N/A et que la colonne E soit non vide