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 :

Suppression ligne vide


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 42
    Par défaut Suppression ligne vide
    Bonjour le forum et tout le monde,

    Je souhaite ameliorer le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Range("g64000").Select
    Range(Selection, Selection.End(xlUp)).Select
    y = ActiveCell.Row 'Pour avoir la dernière ligne
     
    For x = y To 1 Step -1
    If Not IsNumeric(Range("b" & x)) Then Rows(x).Delete
    If IsEmpty(Range("b" & x)) Then Rows(x).Delete
    Next
    Je sais que l'on peut en passant par des tables mais je n'ai pas compris leur manipulation, si une personne peut m'aider .

    Merci pour tout

  2. #2
    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
    Enregistre ton fichier avant de tester ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            Derlig = Cells(Columns(2).Cells.Count, 2).End(xlUp).Row
            Range(Cells(1, 2), Cells(Derlig, 2)).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    Ce code remplace ta boucle
    Tu dis

  3. #3
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 42
    Par défaut
    Je viens de tester, et cela me met une erreur..., de plus au vu du code cela me permet juste de supprimer les colonnes vides

    Mais en faite le code me sert à supprimer toutes les lignes n'ayant pas du numerique ainsi que les vides (car une cellule vide est considerer numerique ?)

  4. #4
    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
    Désolé, je répondais au sujet de la discussion : "Suppression ligne vide "
    Non, ce code supprime toutes les lignes dont la cellule de la colonne 2 est totalement vide.
    Tu as mis Range("b" & x) dans ton propre test, le code que je t'ai passé fournit d'abord le N° de la dernière ligne renseignée pour cette colonne.
    Mais ça supprime bien les lignes, non les cellules ni les colonnes
    J'ai relu ta question, et donc, il te reste à supprimer les lignes dont la cellule de la colonne B n'est pas numérique et ta boucle fait ça, mais pour la dernière ligne, mon code est préférable.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
         Derlig = Cells(Columns(2).Cells.Count, 2).End(xlUp).Row
         Range(Cells(1, 2), Cells(Derlig, 2)).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
         For nolig = DerLig To 1 Step -1
              If Not IsNumeric(Range("b" & nolig )) Then Rows(x).Entirerow.Delete
         Next
    Pour l'erreur, si tu utilises exactement mon code sans mélanger avec le tien, tu me dis sur quelle ligne et le type d'erreur.
    Quelle version d'Excel as-tu, ça peut jouer
    A+

    Edit
    Peut-être y a-t-il un moyen de remplacer ta boucle en passant par SpecialCells mais s'il existe, je ne vois pas quel paramètre utiliser.

  5. #5
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 42
    Par défaut
    Alors je viens de tester avec le bout de code :

    erreur 1004 - pas de cellule correspondant.

    et l'erreur se fait sur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Cells(1, 2), Cells(Derlig, 2)).SpecialCells(xlCellTypeBlanks).EntireRow.delete
    Pour le code pour le numeros de la ligne, c'est que j'ai deux lignes vide pour cette colonne en fin de tableau et je dois aussi les supprimer :o)

    Et j'ai Excel 2002.

  6. #6
    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
    Peut-être un problème de version... J'ai 2003
    Remplace xlCellTypeBlanks par le chiffre 4, ce qui donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         Range(Cells(1, 2), Cells(Derlig, 2)).SpecialCells(4).EntireRow.Delete
    Questions subsidiaires :
    - Tu n'aurais pas de cellules fusionnées,
    - Ta feuille n'est pas protégée ?
    A+

  7. #7
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 42
    Par défaut
    Même chose avec le 4

    Non pas de cellule fusionner et ni de protection, mon code d'origine lui fonctionnant..

    bizare ???

  8. #8
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour à tous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not IsNumeric(Range("b" & nolig )) Then Rows(x).Entirerow.Delete
    ????
    A+

  9. #9
    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
    Remontre-nous le code que tu utilises, celui qui génère l'erreur
    A tout'

  10. #10
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 42
    Par défaut
    l'erreur est sur cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Cells(1, 2), Cells(Derlig, 2)).SpecialCells(4).EntireRow.Delete
    avec la même erreur...

  11. #11
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Essaye avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Derlig = Range("B1").SpecialCells(xlCellTypeLastCell).Row
    et je vois pas à quoi sert
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Range(Cells(1, 2), Cells(Derlig, 2)).SpecialCells(xlCellTypeBlanks).EntireRow.delete

  12. #12
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 42
    Par défaut
    Ce n'est pas le comptage ligne qui est faux, j'ai regarder sa valeur, et même essayer en lui mettant une valeur fixe.

    changer aussi en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    derlig = range("b64000").end(xlup).row
    c'est la fontion en elle même !!
    mais je ne comprend pas pourquoi

  13. #13
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    supprimer le ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       Range(Cells(1, 2), Cells(Derlig, 2)).SpecialCells(xlCellTypeBlanks).EntireRow.delete
    et changer X par NoLig
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not IsNumeric(Range("b" & nolig )) Then Rows(x).Entirerow.Delete

  14. #14
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 42
    Par défaut
    Re,

    Le but de la manip etait de faire une macro plus rapide que celle-ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    y = range("b64000").end(xlup).row
     
    For x = y To 1 Step -1
    If Not IsNumeric(Range("b" & x)) Then Rows(x).Delete
    If IsEmpty(Range("b" & x)) Then Rows(x).Delete
    Next
    Car sur 50000 lignes il met un sacré bout de tps, et je souhaitais savoir si il y avait possibilité de faire un code plus rapide...

    soit en passant par des tables... ou autre astuce

    nb : j'aime bien apprendre de nouvelle manip

  15. #15
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Alors il y a une ici, une discution qui va t'intèressé.

  16. #16
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 42
    Par défaut
    Je viens d'aller voire, et le probleme est que je n'arrive pas à mettre en forme le code avec la version rapide...

  17. #17
    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
    Citation Envoyé par LeForestier Voir le message
    supprimer le ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       Range(Cells(1, 2), Cells(Derlig, 2)).SpecialCells(xlCellTypeBlanks).EntireRow.delete
    sert à supprimer toutes les lignes vides d'un coup. La boucle sur les numeric sera plus courte (!!!)
    Mais je te laisse la place, chuis occupé ailleurs

  18. #18
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Y faut lire tout...
    La fonction de bidou delete 2 lignes sur 3, c'est à toi d'adapter le critère pour que ce soit les lignes vides.
    A+

  19. #19
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    sert à supprimer toutes les lignes vides d'un coup. La boucle sur les numeric sera plus courte (!!!)
    Mais je te laisse la place, chuis occupé ailleurs
    j'avais pas fait attention au type.

  20. #20
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 42
    Par défaut
    Bonjour, désolé pr ma reponse tardive ! vacance oblige....

    Bonne Année

    J'ai regarder le code mais le truc est que je n'arrive pas à l'adapter, car le fais de supprimer deux ligne sur 3, un peu de mal a le comprendre sur le code !!!


Discussions similaires

  1. Réponses: 2
    Dernier message: 10/07/2008, 14h43
  2. Couper-Coller avec Suppression lignes vides
    Par tounsy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/05/2008, 15h40
  3. Probleme suppression ligne vide publipostage
    Par thierry440 dans le forum Word
    Réponses: 3
    Dernier message: 17/11/2007, 20h29
  4. Suppression ligne vide d'un range
    Par coco21 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 03/08/2007, 14h02
  5. [VBA-E] Probleme lenteur suppression ligne vide sur 100 lignes
    Par sebi78 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 14/05/2007, 20h24

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