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 une cellule est vide [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 49
    Par défaut Supprimer une ligne si une cellule est vide
    Bonjour,

    je souhaite supprimer des lignes avec la condition suivante:

    Si une cellule de la colonne C est vide, alors supprimer la ligne entière où la cellule vide se trouve.

    Voici mon code : sachant que je n'ai pas d'erreur de bug mais j'ai pas de modification: pas de suppression


    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
    Sub deleteBlank()
    Dim orig As String, wb As Workbook
    Dim correct
     
    Set wb = Workbooks.Open("Z:\VBA\copy.xlsx")
    LastRow = wb.Sheets("Feuil1").Range("C" & Rows.count).End(xlUp).Row
    For i = 1 To LastRow
     
    If IsEmpty(wb.Sheets("Feuil1").Cells(i, 3)) = True Then
    wb.Sheets("Feuil1").Cells(i, 3).EntireRow.Delete
     
    End If
    Next i
    MsgBox ("task complete!!!")
    End Sub
    Pouvez vous me donner des propositions, des solutions oubien d'autres méthodes?

    merci beaucoup pour l'aide.

    Cheers!!

  2. #2
    Membre Expert Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Par défaut
    Salut,

    La méthode la plus simple pour faire cela est de partir de la fin du tableau.
    Sinon, quand tu supprimes des lignes, le reste du tableau remonte et ton compteur, lui il continue de descendre.

    Je te conseille de commencer par modifier cette ligne de ta boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = LastRow To 1 Step -1
    cela va faire varier ton compteur de la fin de ton tableau jusqu'en haut. C'est le step -1 qui gère la remontée.

    En espérant que cela fera avancer ton projet.

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 49
    Par défaut
    Non ceci ne donne aucun résultat
    pas d'erreur mais aucune modification!

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonjour
    essaye avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub EntireRow()
     
         For i = Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1
                 If Cells(i, 3) = "" Then
                 Cells(i, 1).EntireRow.Delete
                  End If
           Next i
        End Sub

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 49
    Par défaut résolu
    Citation Envoyé par BENNASR Voir le message
    Bonjour
    essaye avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub EntireRow()
     
         For i = Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1
                 If Cells(i, 3) = "" Then
                 Cells(i, 1).EntireRow.Delete
                  End If
           Next i
        End Sub
    Mille Merci!! problème résolu!

  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 re
    bonjour boucle a l'envers (de la lastrow a la 1) step -1

    car d'es la première suppression le i de ta boucle ne correspond plus au i de la ligne

    tu comprends ???
    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

  7. #7
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 49
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    bonjour boucle a l'envers (de la lastrow a la 1) step -1

    car d'es la première suppression le i de ta boucle ne correspond plus au i de la ligne

    tu comprends ???
    Oui j'ai bien compris maintenant! merci beaucoup

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/01/2015, 18h30
  2. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  3. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  4. Suppression d'une ligne dont la cellule est vide
    Par dolphinus27 dans le forum Excel
    Réponses: 5
    Dernier message: 12/09/2007, 11h18
  5. Réponses: 2
    Dernier message: 09/01/2007, 19h57

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