Macro pour effacer des lignes selon valeur cellule

Résolu/Fermé
Irie973 - 3 déc. 2016 à 19:26
Irie973 Messages postés 10 Date d'inscription lundi 5 décembre 2016 Statut Membre Dernière intervention 6 décembre 2016 - 6 déc. 2016 à 14:00
Bonjour,

Je souhaiterai effacer un groupe de lignes sur une feuille selon la valeur d'une cellule se trouvant sur une autre feuille.

Voici la routine. Est'ce que quelqu'un peut m'aider avec la macro que j'aimerais attaché a un bouton. Merci d'avance...

Si H7=0 sur feuille "PARAMETRE HONORAIRE" alors effacer ligne 1 à 77 sur feuille "REPARTITION TPS ET HONO"

Si H8=0 sur feuille "PARAMETRE HONORAIRE" alors effacer ligne 78 à 152 sur feuille "REPARTITION TPS ET HONO"

Si H9=0 sur feuille "PARAMETRE HONORAIRE" alors effacer ligne 153 à 228 sur feuille "REPARTITION TPS ET HONO"

Si H10=0 sur feuille "PARAMETRE HONORAIRE" alors effacer ligne 229 à 379 sur feuille "REPARTITION TPS ET HONO"

Si H11=0 sur feuille "PARAMETRE HONORAIRE" alors effacer ligne 380 à 456 sur feuille "REPARTITION TPS ET HONO"

Si H12=0 sur feuille "PARAMETRE HONORAIRE" alors effacer ligne 457 à 532 sur feuille "REPARTITION TPS ET HONO"

Si H13=0 sur feuille "PARAMETRE HONORAIRE" alors effacer ligne 533 à 609 sur feuille "REPARTITION TPS ET HONO"

Si H14=0 sur feuille "PARAMETRE HONORAIRE" alors effacer ligne 610 à 686 sur feuille "REPARTITION TPS ET HONO"

Si H15=0 sur feuille "PARAMETRE HONORAIRE" alors effacer ligne 687 à 763 sur feuille "REPARTITION TPS ET HONO"

Si H16=0 sur feuille "PARAMETRE HONORAIRE" alors effacer ligne 764 à 840 sur feuille "REPARTITION TPS ET HONO"

Merci beaucoup de votre aide.

A voir également:

6 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
3 déc. 2016 à 22:34
Bonjour,

@Irie973 : ce que tu veux faire est assez farfelu car si tu supprimes un paquet de lignes, celles qui sont derrière vont prendre la place et donc au second passage le dégât sera assez terrible mais si tu as bien réfléchi à ton projet, voici une procédure qui le fait.
Public Sub sup_lignes()
Dim idx As Long, lgs As Variant
lgs = Array(1, 75, 153, 229, 380, 457, 533, 610, 687, 764, 841)
For idx = 16 To 7 Step -1
    If Sheets("PARAMETRE HONORAIRE").Range("H" & idx).Value = 0 Then
        Sheets("REPARTITION TPS ET HONO").Rows(lgs(idx - 7)).Resize(lgs(idx - 6) - lgs(idx - 7)).Delete
    End If
Next idx
End Sub

@ccm81 : bon dimanche à toi.
1
Merci gbinforme. La suppresion des lignes pour remonter le contenu se trouvant en dessous est en effet ce que je cherche a faire. Le bouton (macro) ne pourra être utilisé qu'une fois seulement.

Avec ton code j'obtiens ce message d'erreur : Erreur d’exécution '9' : L'indice n'appartient pas a la sélection. Sais tu comment le résoudre?
Merci.
0
Irie973 Messages postés 10 Date d'inscription lundi 5 décembre 2016 Statut Membre Dernière intervention 6 décembre 2016
5 déc. 2016 à 15:13
Peux tu faire en sorte que le code parte de la fin stp? Cad de H16 à H7. Si il commence de l'autre coté je suppose que cela peut devenir problématique.
0
Irie973 Messages postés 10 Date d'inscription lundi 5 décembre 2016 Statut Membre Dernière intervention 6 décembre 2016
5 déc. 2016 à 16:55
J'ai trouvé l’erreur. Nous n'avions pas épeuler pareil une des feuilles. Merci gbinforme, ce code fait exactement ce que je souhaite.
0
Irie973 Messages postés 10 Date d'inscription lundi 5 décembre 2016 Statut Membre Dernière intervention 6 décembre 2016
Modifié par Irie973 le 5/12/2016 à 19:39
Ah. Dis moi bginforme. J’aimerai ajouter dans ton code :
1/ si la cellule H6 est = 0 dans "PARAMETRES HONORAIRES" alors supprimer les feuilles "ESTIM. DIAG" et "REPARTITION TPS ET HONO DIAG"
2/ si seule la cellule H6 est différente de 0 dans le domaine H6 à H16. Alors supprimer la feuille "REPARTITION TPS ET HONO MOE".
Possible?
Merci encore...
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
5 déc. 2016 à 22:20
Bonsoir,

Peux tu faire en sorte que le code parte de la fin stp? Cad de H16 à H7
C'est bien le cas
For idx = 16 To 7 Step -1
sinon les suppressions de lignes sont hasardeuses !

1/ si la cellule H6 est = 0
2/ si seule la cellule H6 est différente de 0 dans le domaine H6 à H16


Voici la macro avec ces nouvelles demandes :
Public Sub sup_lignes()
Dim idx As Long, lgs As Variant
Application.DisplayAlerts = False
With Sheets("PARAMETRE HONORAIRE")
    If .[H6].Value = 0 Then
        Sheets("ESTIM. DIAG").Delete
        Sheets("REPARTITION TPS ET HONO DIAG").Delete
    Else
        If Application.WorksheetFunction.Sum(.[H7:H16]) = 0 Then
            Sheets("REPARTITION TPS ET HONO").Delete
        Else
            lgs = Array(1, 75, 153, 229, 380, 457, 533, 610, 687, 764, 841)
            For idx = 16 To 7 Step -1
                If .Range("H" & idx).Value = 0 Then
                    Sheets("REPARTITION TPS ET HONO").Rows(lgs(idx - 7)).Resize(lgs(idx - 6) - lgs(idx - 7)).Delete
                End If
            Next idx
        End If
    End If
End With
Application.DisplayAlerts = True
End Sub
0
ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
3 déc. 2016 à 22:35
Si j'ai bien compris ta demande
http://www.cjoint.com/c/FLdvJvPWVbN

Cdlmnt
1
Irie973 Messages postés 10 Date d'inscription lundi 5 décembre 2016 Statut Membre Dernière intervention 6 décembre 2016
5 déc. 2016 à 15:06
Merci ccm81. Avec ton code j'obtiens ce message d'erreur : Erreur d’exécution '13' : incompatibilité de type. Sais tu comment le résoudre?
Merci beaucoup.
0
Irie973 Messages postés 10 Date d'inscription lundi 5 décembre 2016 Statut Membre Dernière intervention 6 décembre 2016
5 déc. 2016 à 15:13
Peux tu faire en sorte que le code s'execute de H16 à H7 stp. Si il commence de l'autre coté je suppose que cela peut devenir problématique.
0
ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
3 déc. 2016 à 20:42
Bonjour

Quand tu dis "effacer les lignes", tu entends
1. Effacer le contenu des lignes (sans les supprimer)
2. Supprimer les lignes

Cdlmnt
0
Je cherche bien a supprimer les lignes oui. Merci.
0
ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
5 déc. 2016 à 15:48
1. Avec ton code j'obtiens ce message d'erreur : Erreur d’exécution '13' : incompatibilité de type.
avec mon fichier ou avec le tien ?

2. Peux tu faire en sorte que le code s'execute de H16 à H7 stp
La macro commence la suppression des lignes par la fin

CDlmnt
0
Irie973 Messages postés 10 Date d'inscription lundi 5 décembre 2016 Statut Membre Dernière intervention 6 décembre 2016
5 déc. 2016 à 15:53
avec ton fichier. Je n'ai pas encore insérer ce code dans le mien.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
5 déc. 2016 à 15:58
Désolé
une erreur dans la déclaration des variables tliste au lieu de tliste()
Dim li As Long, cel As Range, liste As String, tliste, k As Long

Cdlmnt
0
ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
5 déc. 2016 à 16:06
Mais la propositon de gbinforme (salut bà toi) est nettement plus simple et fonctionne bien
0
Irie973 Messages postés 10 Date d'inscription lundi 5 décembre 2016 Statut Membre Dernière intervention 6 décembre 2016
5 déc. 2016 à 16:37
j'ai aussi un problème avec le code de gbinforme malheureusement. Je l'ai inséré dans un nouveau module. Et quand je l’exécute il me retourne erreur '9' : L'indice n'appartient pas a la sélection. Malheureusement je ne m'y connais pas assé pour déboguer le problème. Si tu as une suggestion...
0
Irie973 Messages postés 10 Date d'inscription lundi 5 décembre 2016 Statut Membre Dernière intervention 6 décembre 2016
5 déc. 2016 à 16:56
J'ai trouvé l’erreur. Nous n'avions pas épeuler pareil une des feuilles. Merci pour votre aide ccm81. Vous êtes des bosses ;)
0