IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Suppression de ligne dans EXCEL


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 154
    Par défaut Suppression de ligne dans EXCEL
    Bonjour,

    Comment faire pour supprimer une ligne dans Excel a l'aide de VBA.

    Merci par avance .

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 262
    Par défaut
    Pour supprimer une ligne Excel avec VBA, il y a plusieurs possibilités :

    - appuyer sur F1

    ou

    - appuyer ici

    ou

    - tomber sur quelqu'un de gentil qui ne part pas manger maintenant

    De rien,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                    Rows(i).Select
                    Selection.Delete Shift:=xlUp

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 154
    Par défaut
    Merci, pour ta réponse. En fait je dois te dire que je ne suis pas vraiment un developpeur VBA, mais plutot JAVA.
    J'ai actuellement une feuille excell, ou je dois effacer certaines lignes. Je dois normalement commencer a partir de la deuxième ligne, et si cette ligne possède les critères pour être effacé, je dois vérifier la ligne précédente pour voir si elle a des caractéristiques commune avec la ligne en cours, et si oui, les deux lignes sont supprimés, sinon seulement la ligne en cours l'est.
    Et la j'avoue que mes connaissance en Java ne m'aide pas trop ici.

    Je ne sais pas si j'ai été assez clair, si oui, peux tu m'orienter un peu stp.

    Merci par avance.

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    C'est pas encore l'heure, alors une idée : Montre ton code qu'on puisse adater, c'est plus rapide que d'avoir à tout réécrire
    Déjà, jète un oeil pour connaître la dernière ligne de la plage à examiner.
    Une fois que tu connais la dernière ligne, on pourra en déduire la plage.
    Avec la plage, on peut faire une boucle. Pour l'idée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub EffacerLesDoublons() 'efface deux lignes à la fois
    Dim Plage As Range, Cell As Range
    Set Plage = Range("A2:A18")
     
        For Each Cell In Plage
             If Cell.Value = Cell.Offset(-1, 0) Then
                  Cell.Offset(-1, 0).EntireRow.Delete
                  Cell.EntireRow.Delete
             End If
        Next
    Set Plage = Nothing
    End Sub
    A+

    Edit
    Pour établir la plage avec DerniereLigne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DerniereLigne = 18
    'Set Plage = Range("A2:A18") 'que tu remplaces par
    Set Plage = Range("A2:A" & DerniereLigne)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 154
    Par défaut
    J'y vois un peu plus clair.

    Je n'ai pas encore entrer de code car je ne voulais pas n'importe quoi.

    En fait ma feuille est constitué de colonnes allant de A jusqu'a O.
    Voici en gros l'algorithme.

    On doit parcourir la feuille en entier en commençant par la ligne numéro 2.

    Pour chaque ligne x (x représentant le numéro de la ligne), voir si le contenu de la colonne B (Bx), voir si Bx<>"01" :

    Si c'est le cas alors voir si le contenu de Cx-1=Cx (équivalent a voir si le contenu de la colonne C de la ligne précédente est égale au contenu de la Colonne C de la ligne en cours, c'est également pour cela que l'on commence a partir de la ligne numéro 2) &&(ET logique) voir si Dx-1=Dx (même explication que précedemment)
    Si c'est deux condition sont vérifiées alors effacer la ligne x et la ligne x-1 soit la ligne en cours et la ligne précédente.
    Sinon effacer uniquement la ligne en cours celle ou la valeur de Bx="01".
    Continuer jusqu'a la fin de la feuille.

    J'espère avoir été un peu plus clair. En tout cas merci pour votre aide.

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Regarde si les conditions sont les bonnes (tu mets une fois <> "01" puis "celle ou la valeur de Bx="01"
    Et puis tu testes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Sub EffacerLesDoublons() 'efface deux lignes à la fois ou une seule...
    Dim Plage As Range, Cell As Range
    DerniereLigne = 18
    'Set Plage = Range("B2:B18")
    Set Plage = Range("B2:B" & DerniereLigne)
        For Each Cell In Plage
            If Cell.Value = "01" Then 'ou <> "01" ?
                If Cell.Offset(0, 1).Value = Cell.Offset(-1, 1).Value _
                   And Cell.Offset(0, 2).Value = Cell.Offset(-1, 2).Value Then
                     Cell.Offset(-1, 0).EntireRow.Delete
                     Cell.EntireRow.Delete
                   Else
                     Cell.EntireRow.Delete ' si Cell.value = "01"
                End If
             End If
        Next
    Set Plage = Nothing
    End Sub
    A+

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 154
    Par défaut
    Génial. C'est parfaitement ça.
    Comment faire pour intégrer ce programme sur ma feuille excel stp.
    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD18] Suppression des lignes dans un document Excel
    Par tunizar dans le forum WinDev
    Réponses: 5
    Dernier message: 07/10/2014, 14h11
  2. Suppression de ligne dans Excel depuis Access
    Par zoom61 dans le forum VBA Access
    Réponses: 2
    Dernier message: 19/06/2008, 15h28
  3. suppression de lignes dans un fichier Excel
    Par archer dans le forum C#
    Réponses: 3
    Dernier message: 15/04/2008, 12h47
  4. Réponses: 4
    Dernier message: 04/09/2007, 14h00
  5. [VB.NET] Suppression de ligne dans un DataTable
    Par seemax dans le forum Windows Forms
    Réponses: 7
    Dernier message: 06/05/2004, 14h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo