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

Excel Discussion :

Suppression des lignes et colonnes si le sous-total est égale à 0


Sujet :

Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Consultant OpEX
    Inscrit en
    Décembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Consultant OpEX
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2017
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Suppression des lignes et colonnes si le sous-total est égale à 0
    Bonjour,

    J'ai besoin de votre aide pour réaliser une macro. Malheureusement je suis quasiment "nul" dans ce domaine

    J'ai un tableau variables en ligne et en colonnes selon le nombre des commandes clients

    Ce que je cherche :

    - Aller sur la colonne "Sous.Total.par. ligne" et supprimer toutes les lignes dont le "S.Total.par.ligne" est égale à 0

    - Aller sur la ligne "Sous.Total.par.colonne" et supprimer toutes les colonnes dont le ""Sous.Total.par.colonne" est égale à 0.

    En pièce jointe un extrait du fichier original

    Merci infiniment

    Exemple pour macro.xlsx

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,
    Essayez ceci
    https://www.cjoint.com/c/GLxhLPrTX6w
    Cdlt

  3. #3
    Candidat au Club
    Homme Profil pro
    Consultant OpEX
    Inscrit en
    Décembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Consultant OpEX
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2017
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par ARTURO83 Voir le message
    Bonjour,
    Essayez ceci
    https://www.cjoint.com/c/GLxhLPrTX6w
    Cdlt
    Bonjour Arturo,

    Malheureusement je n'arrive pas à ouvrir le fichier.
    Le message d'erreur concerne un problème d’extension

  4. #4
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Pour contourner ce problème, n'ouvrez pas le fichier directement . Faite clic droit sur le lien et sélectionnez "Enregistrer le lien sous" sous la destination de votre choix, Puis ouvrez le, ça devrait alller.

  5. #5
    Candidat au Club
    Homme Profil pro
    Consultant OpEX
    Inscrit en
    Décembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Consultant OpEX
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2017
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par ARTURO83 Voir le message
    Pour contourner ce problème, n'ouvrez pas le fichier directement . Faite clic droit sur le lien et sélectionnez "Enregistrer le lien sous" sous la destination de votre choix, Puis ouvrez le, ça devrait alller.
    C'est fait et ça marche sur le tableau d'exemple.

    Toutefois sur un grand tableau réel (107 lignes et 89 colonnes), le problème apparait : "La colonne ""S.Total"" est introuvable ou mal orthographiée"

    Est ce que tu peux me changer les termes "S.Total" on spécifiant plus "S.Total.Commande" pour la colonne à gauche et "S.Total.Bobine" pour la ligne en bas

    Désolé de vous déranger Arturo. Je suis très reconnaissant de ce que tu fait pour moi

  6. #6
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655

  7. #7
    Candidat au Club
    Homme Profil pro
    Consultant OpEX
    Inscrit en
    Décembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Consultant OpEX
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2017
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par ARTURO83 Voir le message
    Bonjour Artur,

    Désolé encore une fois pour le dérangement.

    je viens verts toi pour m'aider à corriger le problème de lenteur de la macro en phase exploitation

    En utilisant le macro que tu m'as proposé, dont je te remercie infiniment, sur cinq feuilles dans le fichier excel (OF_MP_GM_1...5), ce dernier passe beaucoup de temps pour l'exécution contrairement à deux autres macro que je réalisé.

    Est-ce-que tu as des améliorations à me proposer Arturo. Mille est un merci d'avance

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    Sub SupprimerSousTotalNul()
     
    Application.ScreenUpdating = False
     
    Application.Calculation = xlCalculationManual
     
    Set Feuille = ActiveSheet  "Là pour revenir à la feuille d'accueil après l'exécution"
     
    Sheets("OF_MP_GM_1").Select
     
     
           'Recherche emplacement de Sous total
        Set C = Rows("8").Find("S.Total.Commande", LookIn:=xlValues)
        If C Is Nothing Then
            MsgBox "La colonne ""S.Total.Commande"" est introuvable ou mal orthographiée"
            Exit Sub
        End If
     
        Set L = Columns("A").Find("S.Total.Bobine", LookIn:=xlValues)
        If L Is Nothing Then
            MsgBox "La ligne ""S.Total.Bobine"" est introuvable ou mal orthographiée"
            Exit Sub
        End If
     
        'recherche et suppression des 0 par lignes
        For i = L.Row - 1 To 8 Step -1
            If Cells(i, C.Column) = 0 Then Cells(i, C.Column).EntireRow.Delete
        Next i
     
        'recherche et suppression des 0 par colonnes
        For i = C.Column - 1 To 3 Step -1
            If Cells(L.Row, i) = 0 Then Range(Cells(8, i), Cells(L.Row, i)).Delete
        Next i
     
    Sheets("OF_MP_GM_2").Select
     
           'Recherche emplacement de Sous total
        Set C = Rows("8").Find("S.Total.Commande", LookIn:=xlValues)
        If C Is Nothing Then
            MsgBox "La colonne ""S.Total.Commande"" est introuvable ou mal orthographiée"
            Exit Sub
        End If
     
        Set L = Columns("A").Find("S.Total.Bobine", LookIn:=xlValues)
        If L Is Nothing Then
            MsgBox "La ligne ""S.Total.Bobine"" est introuvable ou mal orthographiée"
            Exit Sub
        End If
     
        'recherche et suppression des 0 par lignes
        For i = L.Row - 1 To 8 Step -1
            If Cells(i, C.Column) = 0 Then Cells(i, C.Column).EntireRow.Delete
        Next i
     
        'recherche et suppression des 0 par colonnes
        For i = C.Column - 1 To 3 Step -1
            If Cells(L.Row, i) = 0 Then Range(Cells(8, i), Cells(L.Row, i)).Delete
        Next i
     
    Sheets("OF_MP_GM_3").Select
     
           'Recherche emplacement de Sous total
        Set C = Rows("8").Find("S.Total.Commande", LookIn:=xlValues)
        If C Is Nothing Then
            MsgBox "La colonne ""S.Total.Commande"" est introuvable ou mal orthographiée"
            Exit Sub
        End If
     
        Set L = Columns("A").Find("S.Total.Bobine", LookIn:=xlValues)
        If L Is Nothing Then
            MsgBox "La ligne ""S.Total.Bobine"" est introuvable ou mal orthographiée"
            Exit Sub
        End If
     
        'recherche et suppression des 0 par lignes
        For i = L.Row - 1 To 8 Step -1
            If Cells(i, C.Column) = 0 Then Cells(i, C.Column).EntireRow.Delete
        Next i
     
        'recherche et suppression des 0 par colonnes
        For i = C.Column - 1 To 3 Step -1
            If Cells(L.Row, i) = 0 Then Range(Cells(8, i), Cells(L.Row, i)).Delete
        Next i
     
    Sheets("OF_MP_GM_4").Select
     
           'Recherche emplacement de Sous total
        Set C = Rows("8").Find("S.Total.Commande", LookIn:=xlValues)
        If C Is Nothing Then
            MsgBox "La colonne ""S.Total.Commande"" est introuvable ou mal orthographiée"
            Exit Sub
        End If
     
        Set L = Columns("A").Find("S.Total.Bobine", LookIn:=xlValues)
        If L Is Nothing Then
            MsgBox "La ligne ""S.Total.Bobine"" est introuvable ou mal orthographiée"
            Exit Sub
        End If
     
        'recherche et suppression des 0 par lignes
        For i = L.Row - 1 To 8 Step -1
            If Cells(i, C.Column) = 0 Then Cells(i, C.Column).EntireRow.Delete
        Next i
     
        'recherche et suppression des 0 par colonnes
        For i = C.Column - 1 To 3 Step -1
            If Cells(L.Row, i) = 0 Then Range(Cells(8, i), Cells(L.Row, i)).Delete
        Next i
     
    Sheets("OF_MP_GM_5").Select
     
           'Recherche emplacement de Sous total
        Set C = Rows("8").Find("S.Total.Commande", LookIn:=xlValues)
        If C Is Nothing Then
            MsgBox "La colonne ""S.Total.Commande"" est introuvable ou mal orthographiée"
            Exit Sub
        End If
     
        Set L = Columns("A").Find("S.Total.Bobine", LookIn:=xlValues)
        If L Is Nothing Then
            MsgBox "La ligne ""S.Total.Bobine"" est introuvable ou mal orthographiée"
            Exit Sub
        End If
     
        'recherche et suppression des 0 par lignes
        For i = L.Row - 1 To 8 Step -1
            If Cells(i, C.Column) = 0 Then Cells(i, C.Column).EntireRow.Delete
        Next i
     
        'recherche et suppression des 0 par colonnes
        For i = C.Column - 1 To 3 Step -1
            If Cells(L.Row, i) = 0 Then Range(Cells(8, i), Cells(L.Row, i)).Delete
        Next i
     
     
    Feuille.Select
     
    MsgBox "Suppression des commandes nulles effectuée", 64
    Exit Sub
     
     
    Application.Calculation = xlCalculationAutomatic
     
    End Sub

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 767
    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 : 12 767
    Points : 28 626
    Points
    28 626
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    A la lecture de la demande, il semble qu'il s'agisse tout simplement d'une suppression de lignes et de colonnes suivant un ou plusieurs critères.
    En ce qui concerne la suppression des lignes suivant critères, je ne peux que te suggérer d'utiliser le filtre avancé d'excel (en VBA méthode AdvancedFilter de l'objet Range)

    Avant de commencer, lire ce tutoriel Les filtres avancés ou élaborés dans Excel

    Manuellement voici les étapes à suivre après avoir placé les critères dans la zone des critères
    1. Lancer le filtre avancé d'excel
    2. Sélectionner la zone des données filtrées
    3. Supprimer les lignes visibles
    4. Effacer le filtre


    En vba un exemple dans ce billet Supprimer des lignes suivant critères avec la méthode AdvancedFilter

    Il te restera ensuite à gérer la suppression des colonnes.
    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

  9. #9
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    N'ayant ouvert aucune des pièces jointes à la présente discussion, ce que je ne fais et ne ferai jamais, je ne puis qu'essayer de comprendre/deviner en analysant les commentaires et les bouts de code ici exposés.

    Cela suffit cependant à provoquer en moi certaines réactions et me conduire à alerter sur la nécessité de faire très attention avec une démarche de l'espèce.

    Je vois par exemple dans un bout de code montré ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = L.Row - 1 To 8 Step -1
    que des "choses" semblent présentes au-dessus de la ligne 8
    Il semble (code un peu plus bas) que des choses soient également présentes à gauche de la colonne 3

    Tout donne donc à penser que des colonnes (combien et lesquelles) des lignes 1 à 7 contiennent des données autres (titres ?, autres valeurs ? ...) à préserver
    Idem en ce qui concerne les lignes des colonnes 1 et 2

    Si tel est bien le cas, je ne puis qu'alerter sur les dégâts éventuels induits de suppression de lignes entières et surtout de colonnes entières

    Mais une autre fois : je ne puis que tenter de "supposer" et alerter , puisque tout ou presque est "présenté" ici via des pièces jointes que je ne veux surtout pas ouvrir.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

Discussions similaires

  1. Suppression des lignes sous conditions
    Par e08b753z dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/06/2012, 18h28
  2. Suppression des lignes sous condition multiple
    Par baptbapt dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/06/2007, 16h23
  3. [Word] Suppression des lignes d'un tableau
    Par sat478 dans le forum VBA Word
    Réponses: 2
    Dernier message: 06/09/2006, 14h22
  4. suppression des ligne ds une table
    Par roger.pouamoun dans le forum Oracle
    Réponses: 6
    Dernier message: 28/07/2006, 12h00
  5. [T-SQL] Convertir des lignes en colonne
    Par cortex93 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 07/12/2005, 16h17

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