Macro pour effacer des lignes selon valeur cellule

Résolu
Irie973 -  
Irie973 Messages postés 10 Statut Membre -
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.

6 réponses

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
    1. Irie973
       
      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
    2. Irie973 Messages postés 10 Statut Membre
       
      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
    3. Irie973 Messages postés 10 Statut Membre
       
      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
    4. Irie973 Messages postés 10 Statut Membre
       
      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
    5. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      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
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Si j'ai bien compris ta demande
    http://www.cjoint.com/c/FLdvJvPWVbN

    Cdlmnt
    1
    1. Irie973 Messages postés 10 Statut Membre
       
      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
    2. Irie973 Messages postés 10 Statut Membre
       
      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
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

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

    Cdlmnt
    0
    1. Irie973
       
      Je cherche bien a supprimer les lignes oui. Merci.
      0
  4. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    1. Irie973 Messages postés 10 Statut Membre
       
      avec ton fichier. Je n'ai pas encore insérer ce code dans le mien.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
  7. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Mais la propositon de gbinforme (salut bà toi) est nettement plus simple et fonctionne bien
    0
    1. Irie973 Messages postés 10 Statut Membre
       
      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
    2. Irie973 Messages postés 10 Statut Membre
       
      J'ai trouvé l’erreur. Nous n'avions pas épeuler pareil une des feuilles. Merci pour votre aide ccm81. Vous êtes des bosses ;)
      0