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 selon une condition [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Août 2007
    Messages : 18
    Points : 13
    Points
    13
    Par défaut supprimer une colonne selon une condition
    Bonjour à tous,

    J'ai fait une macro qui calcule un total par colonne (de B à Q), avec un nombre de lignes qui varie. De ce fait mes totaux ne sont jamais dans la même cellule (ils sont dans la première ligne vide).

    Ce que je voudrais, c'est supprimer la colonne complète si le total de cette même colonne est égal à 0....et là je sèche!

    Est-ce que quelqu'un aurait une idée? Merci par avance,

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 651
    Points : 34 364
    Points
    34 364
    Par défaut
    salut,
    la fonction Somme en VBA peut s'obtenir avec
    le paramètre à passer étant une plage de cellules.

    Le test qui en découle est tout trouvé

  3. #3
    Membre confirmé Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Points : 638
    Points
    638
    Par défaut
    Bonjour,

    Comment as-tu fais pour trouver la première cellule vide pour mettre les totaux?
    Utilises la même méthode pour obtenir le dernière cellule remplie.
    Si tu as des questions pour le faires, ajoutes ton code qui fais les totaux.

    Si tu veux, il serait aussi possible de supprimer directement la colonne sans inscrire le totaux.
    Si ton totaux est plus petit ou égal à 0 alors tu supprimes la colonne sinon tu l'inscris comme tu le fais présentement.

    Reviens nous!

  4. #4
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Août 2007
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Tout d'abord, je vous remercie pour vos réponses.

    Mon souci, c'est que je débute et je fais plus du bricolage que du vba, du coup mon code n'est sans doute pas très orthodoxe. En plus, toutes mes colonnes ne seront par forcément remplies à chaque fois.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Private Sub CommandButton2_Click()
    Dim r As String
     
    'N° de la première ligne vide colonne A
    r = Feuil5.Range("A65536").End(xlUp).Row + 1
     
    'Total en bas de colonne
    Feuil5.Range("A" & r) = "Total"
    Feuil5.Range("B" & r).Formula = "=Sum(B2:B" & r - 1 & ")"
    Feuil5.Range("C" & r).Formula = "=Sum(C2:C" & r - 1 & ")"
    Feuil5.Range("D" & r).Formula = "=Sum(D2:D" & r - 1 & ")"
    Feuil5.Range("E" & r).Formula = "=Sum(E2:E" & r - 1 & ")"
    Feuil5.Range("F" & r).Formula = "=Sum(F2:F" & r - 1 & ")"
    Feuil5.Range("G" & r).Formula = "=Sum(G2:G" & r - 1 & ")"
    Feuil5.Range("H" & r).Formula = "=Sum(H2:H" & r - 1 & ")"
    Feuil5.Range("I" & r).Formula = "=Sum(I2:I" & r - 1 & ")"
    Feuil5.Range("J" & r).Formula = "=Sum(J2:J" & r - 1 & ")"
    Feuil5.Range("K" & r).Formula = "=Sum(K2:K" & r - 1 & ")"
    Feuil5.Range("L" & r).Formula = "=Sum(L2:L" & r - 1 & ")"
    Feuil5.Range("M" & r).Formula = "=Sum(M2:M" & r - 1 & ")"
    Feuil5.Range("N" & r).Formula = "=Sum(N2:N" & r - 1 & ")"
    Feuil5.Range("O" & r).Formula = "=Sum(O2:O" & r - 1 & ")"
    Feuil5.Range("P" & r).Formula = "=Sum(P2:P" & r - 1 & ")"
    Feuil5.Range("Q" & r).Formula = "=Sum(Q2:Q" & r - 1 & ")"
     
    'suppression des colonnes avec un total égal à 0
     
    End Sub

  5. #5
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    bonjour tous. pour faire simple dans ton cas. je suppose les somme sur la meme ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Option Explicit
    Sub es()
    Dim i As Long, j As Long
       Application.ScreenUpdating = False
        For i = Cells.Find("*", , , , , xlPrevious).Row To 1 Step -1
        For j = 17 To 1 Step -1
         If Cells(i, j) = 0 Then Cells(i, j).EntireColumn.Delete
         If j = 1 Then Exit Sub
       Next j: Next i
    End Sub
    par contre ton code demande a être simplifier ?? pas trop le temps de regarder

  6. #6
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Août 2007
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Ca fonctionne, merci beaucoup.

    En ce qui concerne mon code, dans la mesure où il fait ce que je lui demande de faire, c'est l'essentiel

+ 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. [XL-2003] couleur d'une cellule d'une colonne selon conditions
    Par bartsho dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/12/2011, 12h44
  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