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 :

Si plusieurs cellules vides alors supprimer la ligne correspondante [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2015
    Messages : 3
    Points : 10
    Points
    10
    Par défaut Si plusieurs cellules vides alors supprimer la ligne correspondante
    Bonjour à tous,

    J'ai une feuille "Données" alimentée par une requête SQL, et une feuille Tableau.
    Dans ce tableau j'ai une centaine de lignes avec des noms différents de bâtiments écrit "en dur", j'ai un code VBA qui va voir dans la feuille "Données" si le bâtiment a un prix HT DDT et un prix HT final, sinon il supprime les lignes dans la feuille "Tableau" des bâtiments qui ne contiennent pas de prix HT final.

    jusqu’à présent j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    'code permetant de supprimer les lignes vides
        Set CelluleCourante1 = Range("a36")
     Do While Not IsEmpty(CelluleCourante1)
        If Cells(CelluleCourante1.Row, 4).Value = 0 Then
               Range("a" & CelluleCourante1.Row, "f" & CelluleCourante1.Row).Delete
                Set CelluleCourante1 = Range("a36")
        End If
     Set CelluleSuivante1 = CelluleCourante1.Offset(1, 0)
     Set CelluleCourante1 = CelluleSuivante1
     Loop
    mais je doit évoluer mon code pour qu'il ne vérifie pas que la colonne 4, mais aussi la colonne 2, par exemple si les cellules "a2" et "a4" sont vides alors supprimer la ligne.
    j'ai essayé cela mais sa ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    'code permetant de supprimer les lignes vides
        Set CelluleCourante1 = Range("a36")
     Do While Not IsEmpty(CelluleCourante1)
        If Cells(CelluleCourante1.Row, 2).Value = 0 & Cells(CelluleCourante1.Row, 4).Value = 0 Then
               Range("a" & CelluleCourante1.Row, "f" & CelluleCourante1.Row).Delete
                Set CelluleCourante1 = Range("a36")
        End If
     Set CelluleSuivante1 = CelluleCourante1.Offset(1, 0)
     Set CelluleCourante1 = CelluleSuivante1
     Loop
    j’espère que ce n'est pas trop confus,

    je m'arrache les cheveux sur ça , merci

  2. #2
    Membre averti

    Homme Profil pro
    Technical Account Manager
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technical Account Manager

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Points : 318
    Points
    318
    Billets dans le blog
    1
    Par défaut
    Salut,

    et si tu faisais simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    'code permetant de supprimer les lignes vides
     Set CelluleCourante1 = Range("a36")
     Do While Not IsEmpty(CelluleCourante1)
        If Cells(CelluleCourante1.Row, 2).Value = "" & Cells(CelluleCourante1.Row, 4).Value = "" Then
                CelluleCourante1.Row.Delete
                Set CelluleCourante1 = Range("a36")
        End If
     Set CelluleSuivante1 = CelluleCourante1.Offset(1, 0)
     Set CelluleCourante1 = CelluleSuivante1
     Loop
    dis-nous si cela fonctionne maintenant.

    Cordialement.
    xela57

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2015
    Messages : 3
    Points : 10
    Points
    10
    Par défaut
    merci pour ta réponse aussi rapide,

    j'avais déjà essayé et sa ne supprime aucune ligne, sans message d'erreur, sa fait simplement rien...

    en revanche j'ai essayé ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim i As Integer
     
    For i = 73 To 36 Step -1
        If IsEmpty(Worksheets("Tableau").Cells(i, 4)) = True Then Worksheets("Tableau").Rows(i).Delete
    Next i
    et bizarrement ça marche... alors que je test que la cellule de la colonne 4... je comprend pas trop

  4. #4
    Membre averti

    Homme Profil pro
    Technical Account Manager
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Technical Account Manager

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Points : 318
    Points
    318
    Billets dans le blog
    1
    Par défaut
    le plus important c'est que cela marche !

    C'est peut-être le fait de ne pas utiliser ta variable CelluleCourante qui change la donne.

    Si tout est bon, n'oublie pas de cliquer sur Résolu.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2015
    Messages : 3
    Points : 10
    Points
    10
    Par défaut
    encore merci

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

Discussions similaires

  1. [XL-2010] Macro condition si cellule vide alors faire ceci, sinon aller ligne suivante
    Par Remi_54500 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/05/2015, 17h38
  2. [XL-2010] toutes les lignes sont vides alors supprimer la feuille
    Par coolmomodu31 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/09/2013, 10h31
  3. Si la cellule est vide alors supprimer la ligne correspondante
    Par dolin007 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 20/11/2009, 14h09
  4. Réponses: 2
    Dernier message: 13/11/2007, 10h19
  5. [Tableaux] si cellule vide, alors cellule inexistante
    Par afrodje dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 31/07/2007, 13h21

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