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 :

Supprimer une ligne si même valeur qu'une cellule définie


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2011
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 5
    Par défaut Supprimer une ligne si même valeur qu'une cellule définie
    Bonjour voici le problème,

    J'aimerai supprimer des lignes en fonction d'une valeure située sur la 5 eme colonne derniere ligne.
    J'ai crée une boucle mais cela ne supprime qu'une ligne (la derniere)
    Pouvez vous m'aidez?
    merci d'avance.

    mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    h = Cells(1, 5).End(xlDown).Row
     
    For i = Cells(1, 5).CurrentRegion.Rows.Count To 1 Step -1
    If Cells(i, 5).Value = Cells(h, 5).Value Then Cells(i, 5).EntireRow.Delete
    Next

  2. #2
    Membre éprouvé
    Homme Profil pro
    Consultant comptable
    Inscrit en
    Mai 2011
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant comptable

    Informations forums :
    Inscription : Mai 2011
    Messages : 137
    Par défaut
    Es tu sur que cela fonctionne comme cela, il ne te met pas une erreur ? parceque j'aurais mis next i à la fin.

    sinon pour la boucle j'utilise plus facilement

    sans passer par les step (qu'y sont plus à utiliser lorsque tu veux faire des sauts d'au moins 2 lignes)
    Mais je ne dis pas que ton code est faux je ne l'ai pas testé

  3. #3
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Citation Envoyé par amnorian Voir le message
    Es tu sur que cela fonctionne comme cela, il ne te met pas une erreur ? parceque j'aurais mis next i à la fin.
    Oui cela fonctionne, il n'est pas nécessaire d'ajouter "i" après le Next. Cela devient utile lorsqu'on a plusieurs boucles imbriquées afin de de rapidement savoir à quelle boucle le Next appartient.

    Citation Envoyé par amnorian Voir le message
    sans passer par les step (qu'y sont plus à utiliser lorsque tu veux faire des sauts d'au moins 2 lignes)
    Non, il faut impérativement passer par un "Step -1" pour réaliser une boucle de bas vers le haut lorsqu'on veut supprimer des lignes entières sinon pour chaque ligne supprimée la ligne suivante ne sera pas vérifiée.

  4. #4
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Cela ne fonctionne pas pour la raison suivante : tu relèves la dernière ligne de la colonne E qui est par exemple la ligne 22. Ensuite tu compares les cellules de la colonne E à cette cellule E22. Le hic est que dès que tu supprimes une ligne, le contenue de la cellule E22 remonte d'une ligne...

    Essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim i As Integer, h As Integer, xVal As String
     
    h = Cells(Rows.Count, 5).End(xlUp).Row
    xVal = Cells(h, 5).Text
     
    For i = h To 1 Step -1
        If Cells(i, 5).Text = xVal Then Rows(i).Delete
    Next

  5. #5
    Membre éprouvé
    Homme Profil pro
    Consultant comptable
    Inscrit en
    Mai 2011
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant comptable

    Informations forums :
    Inscription : Mai 2011
    Messages : 137
    Par défaut
    Citation Envoyé par fring Voir le message
    Non, il faut impérativement passer par un "Step -1" pour réaliser une boucle de bas vers le haut lorsqu'on veut supprimer des lignes entières sinon pour chaque ligne supprimée la ligne suivante ne sera pas vérifiée.
    D'accord je n'étais jamais passé par un step -1 (qui est beaucoup plus intelligent) mais par des boucles qui ne s'incrémentait que lorsque la conditions de suppression de ligne n'avait pas été réalisé.

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu
    bonjour

    personnellement j'aurais utilisé une autre méthode(find et find next)


    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. Réponses: 0
    Dernier message: 19/11/2014, 19h39
  2. Réponses: 2
    Dernier message: 25/04/2009, 20h46
  3. [AC-2007] Alimenter une Liste par les valeurs d'une ligne
    Par curt dans le forum IHM
    Réponses: 11
    Dernier message: 19/04/2009, 12h00
  4. Réponses: 14
    Dernier message: 14/11/2008, 10h16
  5. Supprimer plusieurs fichiers du même nom en une ligne de commande
    Par Orbiplanax dans le forum Administration système
    Réponses: 4
    Dernier message: 12/09/2007, 18h25

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