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 les lignes d'un tableau avec une macro [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 11
    Points : 4
    Points
    4
    Par défaut Supprimer les lignes d'un tableau avec une macro
    Bonjour à tous,

    Malgré tous mes efforts pour essayer de trouver une solution à mon problème, je n'y suis pas parvenu... Je m'excuse d'avance si la solution a déjà été évoquée quelque part, j'ai cherché des sujets déjà existants mais je n'ai pas trouvé.

    Je voudrais créer une macro qui supprime des lignes d'un tableau qui contiennent des formules du type : =SI(D10="";""; Base!C12) si leur résultat est "".

    J'avais essayé cette macro qui fonctionne seulement si les cellules sont vides (sans formule) :[/B]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub DétruireLigne()
    derniereLigne = ActiveSheet.UsedRange.Rows.Count
    Application.ScreenUpdating = False
    For r = derniereLigne To 1 Step -1
    If Application.CountA(Rows(r)) = 0 Then Rows(r).Delete
    Next r
    End Sub
    Cette macro ne fonctionnait pas vu que mes cellules ne sont pas vides même si elle renvoient au résultat "".
    J'ai donc essayé de faire F2 puis F9 sur chaque cellule pour remplacer les formules par leur valeur mais la macro ne fonctionne toujours pas.

    Que faudrait-il changer dans la macro pour que les cellules dont la formule renvoie à un "" soient supprimées ?

    Merci beaucoup,
    Patafoin

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    Hey, ta cellule étant considéré comme utilisée, je te conseille de faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If cells(r,x) = "" Then Rows(r).Delete

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup Ombak, ta modification fonctionne très bien.
    Cependant J'ai d'autres cellules sur la feuille qui font partie d'un volet de cellules figées qui se suppriment aussi..
    Faut-il que je protège ces cellules en question ? Ou alors que je spécifie une plage à supprimer dans VBA ?

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    Mhh, si je comprends bien, le soucis c'est que tu as ton tableau et je suppose en dessous d'autres données, tu veux supprimer ls lignes de ton tableau mais sans que tes autres données ne descendent ?

    Si c'est ça, je vois deux possibilités :

    1) je suis pas sûr que ça marche, mais tu laisses ton if tel quel et tu rajoute un élément dans le then: tu insères une ligne juste après ton tableau, ça devrait tout te remettre en ordre normalement

    2) si tu sais précisément où sont tes données après, tu peux créer un variant dans lequel tu récupères toutes les données après le tableau, tu le replaces ensuite où tu veux une fois que t'as fini de virer tes lignes. C'est censé marcher ça en tout cas, mais ça peut rajouter du temps d'exécution malheureusement et faut que tu saches où sont tes données (à peu près)

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Si tu veux, j'ai un tableau dans lequel il faut supprimer les lignes "vides" et il y a d'autres cellules au dessus du tableau, dans un volet figé qui se suppriment aussi.
    Il faudrait peut être définir une plage de cellules dans lesquelles travailler pour la suppression des lignes ? Je n'arrive pas à définir une zone de travail pour que les autres cellules de la feuille qui sont hors du tableau ne soient pas supprimées :/

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    Ok, j'ai un peu de mal à voir. Tes données peuvent se trouver à 3 endroit:

    - en dessous du tableau : dans ce cas, lorsque tu supprimes une ligne (de ton tableau), en rajouter une en dessous devrais régler le soucis.

    - au dessus du tableau : dans ce cas lorsque tu supprimes une ligne ça ne devrait pas gêner, tes données ne se décalent pas

    - à gauche ou à droite du tableau : là c'est plus gênant, supprimer ta ligne supprime ces données. Je pense que dans ce cas, la solution la plus simple est de créer un variant dans lequel tu stockes soit ton tableau, soit tes données.
    Admettons que tu y stockes le tableau, tu crées un variant de la largeur et longueur de ton tableau au début de ta procédure
    tu fais tes modifications sur ce variant
    tu recolles ce variant là où se trouvait ton tableau de base, rien n'aura bougé excepté ton tableau du coup

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup Ombak, la 3ème option était la bonne !

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

Discussions similaires

  1. [PHP 4] Sélectionner les lignes d'un formulaire avec une case à cocher
    Par shenmicke dans le forum Langage
    Réponses: 7
    Dernier message: 05/08/2009, 14h56
  2. Réponses: 1
    Dernier message: 08/05/2009, 23h12
  3. supprimer les lignes d un tableau?
    Par dodo28 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/04/2009, 21h54
  4. Supprimer les lignes d'un tableau
    Par The eye dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/07/2007, 15h38
  5. Réponses: 8
    Dernier message: 02/03/2007, 16h37

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