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 inutiles


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 132
    Points : 50
    Points
    50
    Par défaut supprimer les lignes inutiles
    salut
    j'ai un code pur detruire les lignes qui sont vide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub DétruireLigne()
    barreEtatEnregistrée = Application.DisplayStatusBar
    Application.DisplayStatusBar = True
    Application.StatusBar = "Création du tarif catalogue.....Veuillez patienter, SVP....."
    derniereLigne = ActiveSheet.UsedRange.Rows.Count
    Application.ScreenUpdating = False
    For r = derniereLigne To 10 Step -1
    If Application.CountA(Rows(r)) = 1 Then Rows(r).Delete
    Next r
     
    End Sub
    se code me sert lors d'une copie de donnée qui parfois peut etre longue ou court, donc certaine case se retouve avec la valeur zero dans la colonne "c" et les autre colonne sont vide .

    peut-on demander que dans la colonne "c" de la page inventaire ,si la valeur est zero la suprimer ?????
    peut-on etre aussi specifique ?

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut lebeniste et le forum
    peut-on demander que dans la colonne "c" de la page inventaire ,si la valeur est zero la suprimer ?????
    Oui, avec une condition supplémentaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For r = derniereLigne To 10 Step -1
    If Application.CountA(Rows(r)) = 1 or range ("C" & r)=0 Then Rows(r).Delete
    Next r
    Par contre avec ton code, tu te prépares de douces nuits blanches :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ScreenUpdating = False
    permet d'accélérer les macros en désactivant le rafraîchissement écran. ça c'est super

    Par contre normalement avant de quitter la macro, on réactive le rafraîchissement et ça... ce n'est nulle part dans ton code
    Si le rafraîchissement ne servait à rien, je pense qu'il serait désactivé par défaut, non ?
    A+

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 132
    Points : 50
    Points
    50
    Par défaut
    Par contre avec ton code, tu te prépares de douces nuits blanches
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ScreenUpdating = False
    Par contre normalement avant de quitter la macro, on réactive le rafraîchissement et ça... ce n'est nulle part dans ton code
    Si le rafraîchissement ne servait à rien, je pense qu'il serait désactivé par défaut, non ?
    pour l'instant il y a presque rien dans la feuille , mais quand toute les données seront entrer , c'est la que tu pense que ca peux aller mal ?


    faudrait que je place le code a la fin de la macro alors ???? en disant "true"
    ou je change le false pour true dans le code present?

    je ne savais meme pas a quoi servais se code
    mais il etait la !!!!!

  4. #4
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut
    Comme le dis Gorfael, ScreenUpdating = False te permet d'arrêter le rafraichissement de ton écran, c'est utilisé pour que l'utilisateur n'est pas a supporter les changements de page et les modifications de contenue des cellules, a la fin de ta macro tu passes ScreenUpdating a True, sinon la mise a jour de l'affichage ne se fait plus quand tu veux modifier a la main tes cellules.

    Mais je pense que tu a donné qu'une partie du code, car en début de code tu sauvegarder le contenue de DisplayStatusBar mais tu ne le remet pas en place a la fin, c'est utiliser pour remettre la composition de ton écran tel que tu l'as trouvé avant de lancer ta macro, imagine que l'utilisateur n'utilise pas le statut bar, si tu lance ta macro tel que tu nous la donne le statu bar réapparaitre systématiquement au lancement de la macro et y restera.
    Tu devrais donc avoir a la fin de ta macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.DisplayStatusBar = barreEtatEnregistrée
    C'est exactement le même principe que pour ScreenUpdate, sauf que pour lui on suppose qu'avant la macro il était déjà a True et donc inutile de stocker sa valeur dans une variable temporaire.

    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 132
    Points : 50
    Points
    50
    Par défaut
    merci a tous pour les explications .
    ca m'aide a comprendre .
    je suis encore loin d'etre un pro et je me demande si un jour je pourrai vous aider a mon tour .

    merci

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut lebeniste et le forum
    je suis encore loin d'etre un pro
    N'oublions pas que si l'Arche de Noé a été construite par des amateurs, le Titanic, lui a bénéficié du travail de pros
    Je ne sais plus qui a dit ça, mais je trouve que c'est particulièrement adapté à Excel (surtout quand je vois des DisplayAlerte = false, pour ne plus avoir de message d'erreur).
    et je me demande si un jour je pourrai vous aider a mon tour .
    C'est pas une personne qui t'aide, c'est le forum. Et il est facile d'aider un forum : en répondant aux demandes quand on peut.

    N'ayant que ton bout de code, je ne faisais que signaler, tu pouvais l'avoir omis dans le poste.
    "Application.ScreenUpDating = True" avant la sortie est mieux.

    Personnellement, quand j'emploie une instruction dont le domaine de travail est Excel ("Application.instruction") je m'oblige à gérer les erreurs pour que, quoi qu'il se passe, on sorte toujours par les mêmes instructions de remise à l'état initial, même en cas d'erreur Excel. ce qui donne une structure dans ce style :
    Sub ......
    Application.instruction = false
    On error goto Err_...
    ...........Traitement ......
    Sortie:
    Application.instruction = true
    Err_....:
    msgbox d'avertissement
    Resume sortie
    end sub
    Comme ça, même si Excel détecte une erreur, au lieu de donner la boîte de dialogue avec le message d'erreur et d'arrêter la macro où il se strouve, sans remettre les instructions à True, il me passe la main et ma gestion d'erreur me donne le numéro et la description de l'erreur et quand je clique sur OK, passe par les instructions après Sortie et me remet Excel en état.
    A+

  7. #7
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut
    +1 pour la remarque de Gorfael en se qui concerne l'aide apporté au et par le forum.
    Pour ce qui est de la gestion d'erreur je ne le fait pas mais c'est une erreur, je vais essayé d'intégrer ça a mes prochaine macros
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/07/2007, 14h45
  2. [VB.NET]Comment supprimer les lignes d'un datagridView
    Par vijeo dans le forum Windows Forms
    Réponses: 1
    Dernier message: 01/09/2006, 17h54
  3. Supprimer les lignes vides d'un document Word
    Par Jerfa dans le forum VBA Word
    Réponses: 4
    Dernier message: 28/08/2006, 16h12
  4. Réponses: 2
    Dernier message: 04/05/2006, 13h10
  5. supprimer les lignes vides?
    Par VinnieMc dans le forum Langage
    Réponses: 5
    Dernier message: 27/02/2006, 14h01

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