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 :

effacer une colonne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 94
    Par défaut effacer une colonne
    Bonjour j"ai besoin d'effacer une colonne si le contenu de le deuxième ligne est égale à 0. Le code vba que j'ai utilisé donne le résultat voulu mais le problème est que ce code est trop lourd et prend beaucoup de temps je comprends pas pourquoi
    voila le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    debut = Time
            For NoCol = 1 To DerCol
            If Sheets("map2").Cells(2, NoCol).Value = "0" Then
                Cells(1, NoCol).EntireColumn.Delete
            End If
     
            Next
        fin = Time
    ça prend presque deux minutes pour l'exécuter ce que je trouve bizarre !!
    merci d'avance

  2. #2
    Membre éprouvé
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Août 2014
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2014
    Messages : 162
    Par défaut
    Bonjour,
    à quoi te sert "debut = Time" et "fin= Time" ? Tu ne fais qu'ajouter une valeur à "Time".

    Essaye ces codes et dis nous si ça fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Ccellvide= Rows("2:2").Find("", , xlValues, xlWhole, , , False).Column
    Columns(Ccellvide).EntireColumn.Delete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    For NoCol = 1 To DerCol
    Ccellvide= Rows("2:2").Find("", , xlValues, xlWhole, , , False).Column
    Columns(Ccellvide).EntireColumn.Delete
    Next

  3. #3
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Essaies d'abord ceci, si c'est encore long on pourra améliorer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Application.ScreenUpdating = False
    Debut = Time
    With Worksheets("map2")
        For NoCol = DerCol To 1 Step -1
            If .Cells(2, NoCol).Value = 0 Then .Columns(NoCol).Delete
        Next NoCol
    End With
    Fin = Time
    PS. pour supprimer avec la boucle For, on commence du dernier vers le premier

  4. #4
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 94
    Par défaut
    Citation Envoyé par mercatog Voir le message
    Essaies d'abord ceci, si c'est encore long on pourra améliorer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Application.ScreenUpdating = False
    Debut = Time
    With Worksheets("map2")
        For NoCol = DerCol To 1 Step -1
            If .Cells(2, NoCol).Value = 0 Then .Columns(NoCol).Delete
        Next NoCol
    End With
    Fin = Time
    PS. pour supprimer avec la boucle For, on commence du dernier vers le premier
    Ceci m'a trop aider merci
    Est ce que y a vraiment d'autres améliorations qu'on peut ajouter?

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Bonjour,

    S'il y a des formules dans la feuille, il faut essayer de passer en calcul manuel au début de la macro et de repasser en automatique à la fin.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  6. #6
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Trois erreurs dans ces lignes de code
    1. pour supprimer des colonnes (de même pour les lignes) il faut partir de la dernière vers la première.
    2. si tu dois tester la valeur nulle 0, il ne faut pas de guillemets
    3. la cellule qui se trouve dans la ligne de suppression n'a pas de parent (la feuille) donc tu risques de supprimer une colonne d'une autre feuille si la feuille nommée map2 n'est celle qui est active

    Pour savoir la raison de ce temps long (2 minutes), il faudrait déjà connaître la valeur de la variable DerCol.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  8. #8
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 94
    Par défaut
    Merci de m'avoir répondu
    le nombre de col est 151
    le temps d'exécution passe à 26 secondes avec ce code

Discussions similaires

  1. [Toutes versions] rajouter deux 0 dans toutes les cellules d une colonne sans effacer leur contenues
    Par mikeactuaire dans le forum Access
    Réponses: 3
    Dernier message: 08/09/2011, 14h31
  2. [SQL] Effacer des membres avec une colonne ayant pour valeur un numéro
    Par mecmec dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 20/01/2008, 07h55
  3. {VBA Excel}effacer une colonne a partir d'ou on veut
    Par Thomas69 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/08/2007, 14h41
  4. [JTable]Effacer une colonne
    Par delma dans le forum Composants
    Réponses: 6
    Dernier message: 17/10/2006, 20h05
  5. Effacer toutes les données d'une colonne
    Par denisfavre dans le forum Access
    Réponses: 5
    Dernier message: 12/10/2005, 15h20

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