[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   -
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 ;)
A voir également:

12 réponses

m@rina Messages postés 23905 Date d'inscription   Statut Contributeur Dernière intervention   11 464
 
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
1
JOLARITALE Messages postés 144 Date d'inscription   Statut Membre Dernière intervention   4
 
merci de répondre si vite
pour le moment je suis pas chez moi mais des que je rentre j'essai

merci beaucoup
0
JOLARITALE Messages postés 144 Date d'inscription   Statut Membre Dernière intervention   4 > JOLARITALE Messages postés 144 Date d'inscription   Statut Membre Dernière intervention  
 
ca me dit erreur d'exécution '1004'

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
0
m@rina Messages postés 23905 Date d'inscription   Statut Contributeur Dernière intervention   11 464 > JOLARITALE Messages postés 144 Date d'inscription   Statut Membre Dernière intervention  
 
Bonsoir,

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
0
JOLARITALE Messages postés 144 Date d'inscription   Statut Membre Dernière intervention   4 > m@rina Messages postés 23905 Date d'inscription   Statut Contributeur Dernière intervention  
 
ma feuille pourrait etre protégée??? ho la coquine et elle me l'avait pas dit...
je sais pas trop... comment je peut verifier ça?

je suis sous 2003
0
JOLARITALE Messages postés 144 Date d'inscription   Statut Membre Dernière intervention   4 > JOLARITALE Messages postés 144 Date d'inscription   Statut Membre Dernière intervention  
 
est ce que c'est possible de rajouter une condition?

il faudrait donc que la colonne C contienne #N/A et que la colonne E soit non vide
0
m@rina Messages postés 23905 Date d'inscription   Statut Contributeur Dernière intervention   11 464
 
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
1
JOLARITALE Messages postés 144 Date d'inscription   Statut Membre Dernière intervention   4
 
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
0
m@rina Messages postés 23905 Date d'inscription   Statut Contributeur Dernière intervention   11 464
 
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
0
JOLARITALE Messages postés 144 Date d'inscription   Statut Membre Dernière intervention   4 > m@rina Messages postés 23905 Date d'inscription   Statut Contributeur Dernière intervention  
 
trop bien ca marche
tu es super forte!!!

par contre euh.. enfait E doit etre non vide

si E est vide faut la laisser et si E contient quelque chose il faut la supprimer...
0
JOLARITALE Messages postés 144 Date d'inscription   Statut Membre Dernière intervention   4
 
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!!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
JOLARITALE Messages postés 144 Date d'inscription   Statut Membre Dernière intervention   4
 
ca bugg

j'ai rééssayer ce matin

la macro me dit qu'il y a un problème avec le 2eme End If...
0
m@rina Messages postés 23905 Date d'inscription   Statut Contributeur Dernière intervention   11 464
 
Bonjour,

Franchement, je vois vraiment pas ce qui peut gêner... J'ai retesté => Pas de problème !

As tu essayé de modifier la macro ?

m@rina
0
JOLARITALE Messages postés 144 Date d'inscription   Statut Membre Dernière intervention   4
 
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
0
m@rina Messages postés 23905 Date d'inscription   Statut Contributeur Dernière intervention   11 464
 
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
0
JOLARITALE Messages postés 144 Date d'inscription   Statut Membre Dernière intervention   4
 
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...
0
m@rina Messages postés 23905 Date d'inscription   Statut Contributeur Dernière intervention   11 464
 
Tu peux exporter la macro (en .bas) et la mettre sur cjoint.com ?

Pour exporter : tu cliques dans la macro, puis Menu, Exporter un fichier

C'est vraiment incompréhensible

m@rina
0
JOLARITALE Messages postés 144 Date d'inscription   Statut Membre Dernière intervention   4
 
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...
0
JOLARITALE Messages postés 144 Date d'inscription   Statut Membre Dernière intervention   4
 
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é.
0
m@rina Messages postés 23905 Date d'inscription   Statut Contributeur Dernière intervention   11 464
 
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
0
JOLARITALE Messages postés 144 Date d'inscription   Statut Membre Dernière intervention   4
 
Bonjour ;)

Merci :)

Maintenant ça marche beaucoup mieux en effet ;)
0