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 :

Suppr lignes condition cellule vide [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 4
    Par défaut Suppr lignes condition cellule vide
    Bonjour!
    Débutant en VBA, j'ai un souci sur lequel je m'arrache les cheveux depuis quelques jours.
    J'ai une colonne B où un certain nbr de lignes sont remplies par importation (sans lignes vides). Et colonnes C et +, j'ai toutes mes lignes de remplies (jusqu'a 1000 environ) par des formules tirées afin de réaliser les calculs découlant de l'arrivée de contenu en B en automatique.
    Je souhaite supprimer par une macro/bouton les lignes de ces colonnes C et + qui ne servent à rien (où B de la même ligne est vide) afin d'alléger le fichier de toutes les formules inutiles.
    J'ai déjà fait ce code qui ne fait rien du tout et je ne comprends pas pourquoi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Suppr_lignes_tarifs() 
     
    Sheets("Tarifs année").Select 
     
    For i = Range("B65529").End(xlUp).Row To 3 Step -1 
    If IsEmpty(Cells(i, 2).Value) Then 
    Rows(i).ClearContents 
    End If 
    Next 
     
    End Sub
    Merci par avance pour votre aide

  2. #2
    Membre expérimenté
    Inscrit en
    Juillet 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 239
    Par défaut
    Je ne suis pa un utilisateur habitué de la fonction IsEmpty, mais quand on consulte l'aide , on voit bien que l'on ne peut pas l'utiliser pour tester si une cellule est vide... En plus si la cellule contient un caractère invisible ( espace , saut de ligne ...); Est ce qu'il faut la supprimer ?


    Dans ton code , il y a une autre chose qui me chagrine , ( même si la solution fonctionne grâce à la décrémentation). Si je peux te donner un conseil : Il ne faut pas faire une boucle for si dans le traitement tu supprime un élément de la boucle ( conseil général).
    Il est préférable de faire un do loop.

    3) le ClearContents supprime le contenu des cellules de la ligne , il ne supprime pas la ligne ; Est ce que c'est ce que tu veux ?

    Voici une forme que je te soumets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    nb_ligne = Range("B65536").End(xlUp).Row
    ligne_cur = 3
    do 
    if trim ( cells ( ligne_cur , 2).value ) = "" then 
    rows ( ligne_cur ).delete
    else
    ligne_cur = ligne_cur  + 1 
    end if
     
    loop while ligne_cur  <  nb_ligne

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 652
    Par défaut
    Bonjour,
    pour supprimer les lignes où B est vide
    essaies
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    derlig = Range("B65536").End(xlUp).Row
    Range(Cells(3, 2), Cells(derlig, 2)).SpecialCells(xlCellTypeBlanks).EntireRow.Delete

  4. #4
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 4
    Par défaut
    D'abord merci à tous les deux pour vos réponses

    Michel :
    Jai essayé ton code qui me renvoi une erreur 1004 me disant qu'il n'y a pas de cellules correspondantes, je ne comprends pas pourquoi.

    Codefacile : merci pour tes conseils. Je pense que supprimer la ligne ou non ne me changera pas grand chose je veux juste que les formules disparaissent avec tous les 0€ qui vont avec.
    Malheureusement, ton code n'a donné aucun résultat également.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    = Range("B65536").End(xlUp).Row
    --> cette ligne pourrait elle être le problème ?
    Quand je pointe ma souris sur derlig ou nb_ligne, il m'affiche 22. Est ce normal ?

    Merci encore

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Pour moi, ton code fonctionne, si, bien sûr, isEmpty renvoie TRUE...

    A toi de tester en mode pas à pas pour voir pourquoi il ne supprime pas (espace non visible en b, ...)

    Si tu veux supprimer plutôt que vider, tu dois utiliser
    @ codefacile: Je ne comprends pas ta remarque concernant le for i... dans la mesure ou ce n'est pas le i que l'on supprime ou que l'on modifie, mais bien la ligne dont le numéro est i, ce qui n'affecte pas du tout la boucle
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Membre éclairé Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 887
    Par défaut
    Salut

    Moi perso je ferrais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Suppr_lignes_tarifs() 
     
    Sheets("Tarifs année").Select 
     
    For i  Range("B65529").End(xlUp).Row To 3 Step -1
      If Range("B" & i) = "" Then
         Rows(i).Delete
      End If
    Next i
     
    End Sub

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Empty signifie qu'une cellule n'a jamais été renseignée
    "" signifie que la cellule est vide, non qu'elle l'a toujours été.
    Pour ma part j'utiliserais "" et non Empty si les cellules testées ont pu être renseignées avant d'être effacées. FCL31 t'a donné le code mais je ne pourrais pas m'empêcher de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
         Rows(i).Entirerow.Delete
    'ou
         Range("B" & i).entirerow.delete
    même si Rows(i).Delete semble fonctionner
    Bonne journée

    Remarque
    Citation Envoyé par Entirerow dans l'aide en ligne
    Cette propriété renvoie un objet Range qui représente la ligne entière (ou plusieurs lignes) contenant la plage spécifiée

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

Discussions similaires

  1. [XL-2010] macro pour afficher le contenu des lignes des cellules vides
    Par BUX07 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/08/2012, 16h48
  2. Suppression de toutes les lignes avec cellule vide en colonne A
    Par Cyclemmanuel dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/05/2012, 20h43
  3. [XL-2003] Supprimer ligne si cellule vide ou
    Par guigui69 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/05/2011, 10h32
  4. [E-03] - Macro saut de ligne si cellule vide
    Par nakou13 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 06/02/2009, 03h13
  5. derniere ligne et cellule vide ?
    Par jokenjo dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 06/03/2008, 18h31

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