Macro excel

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
Configuration: Windows XP

29 réponses

  • Votes
  • Date
  • Date décroissante
Résumé de la discussion

Plusieurs propositions de macro Excel visent à supprimer automatiquement les lignes dont la valeur en colonne C est positive ou nulle, afin de ne conserver que les valeurs strictement négatives. La solution dominante consiste à parcourir les lignes, copier celles dont C < 0 vers une zone temporaire puis supprimer l'intégralité de la plage A:C et replacer les données. Certaines réponses évoquent des détails pratiques, comme l'usage de la End(xlUp).Row pour déterminer la dernière ligne, ou l'enregistrement d'une macro plus simple via l'éditeur Visual Basic. En cas de doute, le code proposé peut être adapté en fonction du nom de fichier, de la feuille et de la plage source afin d'éviter les pertes de données.

Bobot (l’IA à votre service)
  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?
    1. 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
      1. Tu crées un bouton et tu double clic dessus et tu inséres ce code dedans...
        1. 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.
          1. 'lut

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

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

              merci
              1. 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
                1. 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
                  1. "erreur d'exécution 40036

                    erreur definie par l'application ou l'objet"

                    et c'est tout
                    1. 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 çà?
                      1. 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
                        1. 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...
                          1. 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 ?
                            1. 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

                              1. merci random!
                                j'y avais pensé aussi à ce problème mais plus moyen de me rappelr comment l'éviter...
                                1. 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
                                  1. '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?
                                    • 1
                                    • 2