Macro excel

Fermé
richard.rda - 1 août 2005 à 16:35
 KdTcA - 3 août 2005 à 15:55
bonjour,
SVP j'ai un tableau EXCEL avec en colonne C des valeurs (négatives, nulles ou positives).
Je voudrais par une macro :
pouvoir supprimer automatiquement les lignes où la valeur en cellule C est : positive ou nulle.

Merci à celui ou celle qui m'apportera la solution
A voir également:

29 réponses

Je ne perds pas mon temps vu que j'apprends en même temps!
:)
1
'lut
DerniereCellule = Application.Workbooks("ton_fichier.xls").Worksheets("Nom_de_ta_feuille").Range("C65536").End(xlUp).Row
For i = 1 To DerniereCellule
If Range("C" & i & "").value >= 0 then
Range("C" & i & "").delete
end if
next i


non?
0
bien recu réponse si prompte et merci,
mais, je ne suis pas expert et ne sais pas :
- où saisir cette macro ?
- où doit débuter la saisie ?
- comment la lancer ?

sachant que je veux l'inclure dans une autre macro obtenue avec excel "macro, nouvelle macro

encore merci pour votre patience et votre aide
0
Tu crées un bouton et tu double clic dessus et tu inséres ce code dedans...
0

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

Posez votre question
vous êtes trop calé pour moi,
je ne comprends pas ce que vous me demandez:

je souhaite inclure "votre petit programme"

dans une macro ique j'ai établie dans mon fichier Excel en utilisant dans EXCEL :OUTILS-MACROS-NOUVELLE MACRO..."

et la votre devrait me permettre de :

dans une feuille de n lignes
avec sur chaque ligne, en cellule C, des valeurs : négatives, ou nulles, ou positives.
de supprimer les lignes entières où la valeur dans C est >=0

encore une fois merci pour votre aide et soyez indulgent, je n'ai pas votre connaissance en la matière.
0
'lut

Quand veux tu lancer cette macro??. Par le biais de quelle action?
0
en allant dans OUTILS, MACRO et nom de ma macro


je n'ai pas besoin de créer un bouton

merci
0
code = kida argh je vais bien tomber sur mon pseudo un jour!!!

un bouton c'est plus beau quand même! :S

bon ben mais le code que j'ai dit à l'intérieur de çà:

sub macro1()

end sun()


et tout ce code tu le mets dans la page vba d'excel pour cela :
1/ clic droit dans barre des taches > Visual Basic
2/ clic sur l'icone visual basic editor de la barre d'outils Visual Basic
0
j'ai copié votre 1er envoi ainsi, et ca bugge
mon fichier : macrosupprimerligne
ma feuille : essai


Sub une( )
'
' une Macro
' Macro enregistrée le 02/08/2005 par AUDIBERT.R


DerniereCellule = Application.Workbooks("macrosupprimerligne.xls").Worksheets("essai").Range("C65536").End(xlUp).Row

For i = 1 To 20
If Range("C" & i & "").Value >= 0 Then
Range("c" & i & "").Delete

End If
Next i

End Sub



que faut-il corriger ?
merci encore par avance
0
Il te met quoi comme bug?
0
"erreur d'exécution 40036

erreur definie par l'application ou l'objet"


et c'est tout
0
Sub une( ) 
' 
' une Macro 
' Macro enregistrée le 02/08/2005 par AUDIBERT.R 


DerniereCellule = Application.Workbooks("macrosupprimerligne.xls").Worksheets("essai").Range("C65536").End(xlUp).Row 

For i = 1 To DerniereCellule 
If Application.Workbooks("macrosupprimerligne.xls").Worksheets("essai").Range("C" & i & "").Value >= 0 Then 
Application.Workbooks("macrosupprimerligne.xls").Worksheets("essai").Range("c" & i & "").Select
Application.Workbooks("macrosupprimerligne.xls").Worksheets("essai").Range("c" & i & "").Delete 

End If 
Next i 

End Sub 


Et avec çà?
0
avec un copie coller de ce dernier envoi:
- le message d'erreur à disparu
- seules les cellules C disparaissent (et non les lignes correspondantes)
- il reste beaucoup de cellules C de valeur = 0 ou >=0

j'ai testé dan un petit tableau d'essai à 3 colonnes et 10 lignes
et ça ne marche pas
0
ahhhhhhh!!!!!!

C'était les lignes complètes que tu voulais supprimer... lol

Bah remplace
Application.Workbooks("macrosupprimerligne.xls").Worksheets("essai").Range("c" & i & "").Select
Application.Workbooks("macrosupprimerligne.xls").Worksheets("essai").Range("c" & i & "").Delete 
par
Application.Workbooks("macrosupprimerligne.xls").Worksheets("essai").Range("c" & i & ":L" & i & "").Select
Application.Workbooks("macrosupprimerligne.xls").Worksheets("essai").Range("c" & i & ":L" & i & "").Delete 
si la dernière colonne de ta ligne est L sinon tu remplaces le L par la lettre de dernière colonne correspondante...
0
on progresse:

en remplacant C par A dans la ligne se terminant par delete (sinon on continue à ne supprimer que la celluel C

MAIS
en exécutant la macro : il reste des lignes =0 et >0 pourquoi?

pour arriver à mon résultat il me faut répéter plusieurs fois la macro, une fois devrait pourtant suffire ?
0
random Messages postés 1612 Date d'inscription vendredi 26 novembre 2004 Statut Membre Dernière intervention 30 mars 2006 155
2 août 2005 à 17:32
parceque vous vous déplacez dans la boucle et que vous supprimez
des cellules et qu'excel ne sait plus ou il en est
pour eviter cela on va proceder comme suit
j'ajoute deux colonnes
dans la premiere je mets =ligne()
dans la seconde je mets =machintruc>=0
je copie les deux colonnes
je fais collage spécial valeur au même emplacement
je fais un tri sur la colonne vrai faux
je selectionne la zone qui m'interesse (frontière vrai faux)
fin ou début de tableau
je fais une suppression de cette zone
je demande le tri sur la colonne ou j'ai mis numéro de ligne
je supprime cette colonne
j'entonne un pean au mode allegretto


0
merci random!
j'y avais pensé aussi à ce problème mais plus moyen de me rappelr comment l'éviter...
0
merci Random,

mais désolé c'est trop compliqué pour moi,
j'ai 1 pb à presque chaque ligne :

a)
1ère colonne :
=ligne( ) faut'il saisir caractère à caractère ? et que mettre entre les parenthèses V

b)
2ème colonne
idem et par qoui dois je remplacer "machintruc" ?

dois-je recopier ces 2 colonnes vers le bas et sur combien de lignes ?

c)
faire un tri sur colonne vrai faux
je ne sais pas faire

d)
et idem pour la suite
0
'lut

C'est peut être plus simple par macro de :

1/ copier chaque ligne dont la cellule C a une valeur inférieure à 0
2/ supprimer le premier tableau
3/ couper / coller au bon endroit le nouveau tableau

non?
0
plus simple comme ça ?

mais je ne sais pas faire cette macro

merci
0