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

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Points : 26
    Points
    26
    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 averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 262
    Points : 304
    Points
    304
    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 ?
    Si votre problème est solutionné, n'oubliez pas de cliquer sur , merci !
    Alliance ruinée cherche mécène : un clic pour vous, un don pour nous

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 262
    Points : 304
    Points
    304
    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
    Si votre problème est solutionné, n'oubliez pas de cliquer sur , merci !
    Alliance ruinée cherche mécène : un clic pour vous, un don pour nous

  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
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Points : 26
    Points
    26
    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

  7. #7
    Invité
    Invité(e)
    Par défaut
    Re Ekinoxx,

    C'est bien ici que vous avez le message ?

    Si oui dans votre module avez-vous "Option Explicit" et dans ce cas est-ce que la variable "txt" est bien déclarée ?

    Essayez aussi sinon de modifier la variable txt en txt1 quelque fois que chez vous txt serait un mot clé ?

    Car, comme toujours j'ai fait des essais avant de vous envoyer le code et cela fonctionnait sans problème.

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 262
    Points : 304
    Points
    304
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub enlever_les_2C07()
    Dim i As Integer
    Dim txt As String
        For i = 1 To 6000
        txt = Cells(i, 28)
           If txt = "2C07" Then
                    Rows(i).Select
                    Selection.Delete Shift:=xlUp
                    i = i - 1
            End If
            Next i
    End Sub
    Avez-vous bien remplacé le "c" par le numéro de la colonne ?

    Chez moi, le code de jacques jean fonctionne
    Si votre problème est solutionné, n'oubliez pas de cliquer sur , merci !
    Alliance ruinée cherche mécène : un clic pour vous, un don pour nous

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour Flo_flo,

    Merci pour la confirmation du bon fonctionnement, cela me rassure.

    Pour ce qui est du remplacement du c par la valeur 28 dans :

    Avez-vous bien remplacé le "c" par le numéro de la colonne ?
    ce n'est pas obligatoire puisque la variable "c" est bien initialisée à 28 dans le code affiché par Ekinoxx.

    Amicalement.

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 262
    Points : 304
    Points
    304
    Par défaut
    Exact, j'avais omis cette ligne

    Si votre problème est solutionné, n'oubliez pas de cliquer sur , merci !
    Alliance ruinée cherche mécène : un clic pour vous, un don pour nous

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