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 :

[VBA-E] - Supprimer une ligne sur un critere.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Par défaut [VBA-E] - Supprimer une ligne sur un critere.
    Bonjour a tous,

    je travaille sur une macro qui doit supprimer une ligne sur un certain critere.
    Sur le code suivant le critere est 2C07.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For Each MyCell In Range("AB1:AB6000")
            If MyCell = "2C07" Then
                Range("A" & MyCell.Row, "AB" & MyCell.Row).Select
                Selection.Delete Shift:=xlUp
            End If
        Next MyCell
    Le probleme vient du fait que si j'ai deux lignes de suite avec 2C07.
    En effet, le fait de deleter la premiere ligne 2C07 fait remonter la seconde d'un cran et le test ne s'appliquera pas sur elle et donc elle ne sera pas supprime alors qu'il le faudrait.
    Le probleme est que je ne peux pas laisser des lignes blanches donc je ne pense pas pouvoir eviter Shift:=xlUp.

    Merci d'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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For Each MyCell In Range("AB1:AB6000")
            If MyCell <> "2C07" Then Next MyCell
                Else Range("A" & MyCell.Row, "AB" & MyCell.Row).Select
                Selection.Delete Shift:=xlUp
            End If
    Peux-tu tester ca ?

  3. #3
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Par défaut
    Ca passe pas il manque un Next MyCell quelquepart.
    Ca compile pas.

  4. #4
    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
    Voilà comment j'aurais fait perso :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim l as Integer  'la ligne sur laquelle on travaille
    l = 1
     
    While l < Range("AB1").CurrentRegion.Rows.Count
    Do
    If Range("AB" & l).Value = "2C07" Then
         Rows(l & ":" & l).Select
         Selection.Delete Shift:=xlUp
    Else l = l + 1
    Loop
    Si la cellule contient 2C07, alors on supprime la ligne, tout remonte d'un cran, on bouge pas le numéro de la ligne.
    Sinon, on passe à la ligne suivante.

    J'espère que ca pourra t'aider... désolé de passer d'un For à un While

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour Flo_flo et Ekinoxx,

    J'ai aussi cette solution :
    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
     
    'N° 1ère ligne (modifier éventuellement)
    pl = 1
     
    'N° dernière ligne (modifier éventuellement)
    dl = 6000
     
     
    'N° colonne (modifier éventuellement)
    c = 1
    For i = pl To dl
    txt = Cells(i, c)
            If txt = "2C07" Then
            Rows(i).Select
            Selection.Delete Shift:=xlUp
             i = i - 1
             End If
    Next i
    Amicalement.

  6. #6
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Par défaut
    J'ai pris ton code Jacques Jean mais j'ai un message d'erreur qui dit:
    Object variable or With block variable not set.
    La ligne en jaune est celle avec le txt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    c = 28
        For i = 1 To 6000
        txt = Cells(i, c)
           If txt = "2C07" Then
                    Rows(i).Select
                    Selection.Delete Shift:=xlUp
                    i = i - 1
            End If
            Next i

Discussions similaires

  1. [VBA] Comment supprimer une ligne entiere dans excel
    Par babouoles dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 06/07/2017, 08h34
  2. Supprimer une ligne sur deux feuilles du même classeur
    Par apdf1 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 12/03/2011, 12h28
  3. Supprimer une ligne sur une Sheet JEXCEL
    Par vincikito dans le forum Entrée/Sortie
    Réponses: 0
    Dernier message: 05/08/2010, 09h09
  4. Probleme en VBA Excel : supprimer une ligne doublante
    Par yanly dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/07/2007, 13h54
  5. Réponses: 2
    Dernier message: 19/05/2006, 18h42

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