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 une colonne sous une certaine condition


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 12
    Par défaut supprimer une colonne sous une certaine condition
    Boujours à tous

    J'ai un tableau avec dedans des chiffres allant de 0 à 4

    Je voudrais à l'aide de VBA, si il y a un 0 dans une case, que ca me supprime la colonne qui contient ce 0.

    En esperant avoir été essez clair

    cordialement

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Bonjour,

    Tu peux tenter quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For i = 1 To 500 'disons les 500 premières lignes
        For j = 1 To 20 'disons les 20 premières colonnes
            If Cells(i, j).Value = "0" Then
                Cells(i, j).EntireColumn.Delete
            End If
        Next
    Next
    J'ai testé, ça marche et c'est plutôt basique.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 12
    Par défaut
    merci

  4. #4
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour à tous,

    autre solution à adapter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub zero()
    Dim plage As Range, dl As Integer, chzero As Range
    dl = Range("a" & Rows.Count).End(xlUp).Row
    Set plage = Range("a2:g" & dl)
    Set chzero = plage.Find(0)
    If Not chzero Is Nothing Then
    Cells(1, chzero.Column).EntireColumn.Delete
    End If
    End Sub
    bonne journée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    C'est sûr que le Find est plus rapide au niveau du traitement (sur beaucoup de lignes + colonnes) et la syntaxe à peine plus compliquée

  6. #6
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Merci Dead,
    mais ma solution s'arretera sur le premier zero venu, comme je ne connais pas la finalité de hotsauce, meme avec ma proposition il faudra peut-etre avoir recours à une boucle

    bonne journée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  7. #7
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Bonjour
    Si je peux me permettre une remarque...la proposition de casefayere ne prend pas en compte le cas ou deux colonnes contigues contiennent un zéro, il faudra alors décrémenter la boucle de 1. (ou la commencer par le bas avec un 'step-1')
    Je me permets car j'ai eu le soucis sur un énorme fichier et avant que je me rende compte que je n'avais pas bien 'nettoyé' => énorme perte de temps.
    A+

    Edit: un exemple de code avec step-1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DerLigne = Range("a65536").End(xlUp).Row
    DerCol = Range("iv1").End(xlToLeft).Column
     
    For i = DerLigne To 1 Step -1
        For j = DerCol To 1 Step -1
            If Cells(i, j).Value = "0" Then
                Cells(i, j).EntireColumn.Delete
            End If
        Next
    Next

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 12
    Par défaut
    En fait moi j'ai besoin que le fichier analyse jusqu'a la ligne 12 et jusqu'a la colonne 30.

    Et il ne doit pas s'arreter au 1er 0 rencontré.

    cordialement

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

Discussions similaires

  1. [XL-2007] Comment supprimer des lignes d'une plage dans une colonne sous condition
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 05/06/2015, 11h34
  2. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  3. Réponses: 10
    Dernier message: 07/07/2012, 17h11
  4. Réponses: 7
    Dernier message: 25/03/2011, 10h52
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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