Cacher une ligne après insertion

Résolu
Bonjour,

Ci-dessous, vous trouverez le tableau. J'ai affecté une macro au bouton "insérer" pour pouvoir insérer une ligne à la fin de chaque tableau (d'ailleurs, je ne suis pas certaine de la validité de cette dernière). Cependant, lorsque j'insère une ligne, je souhaiterais en même temps cacher celle en-dessous de la ligne verte (dans chaque tableau) afin de ne pas me retrouver avec des tableaux qui s'allongent sur plusieurs pages.

En vous remerciant par avance,

Cordialement

https://www.cjoint.com/c/KGuiAs2rNHX

6 réponses

  1. Bonjour,
    Il y a un petit souci dans la formule : sur le premier tableau, tout fonctionne correctement. Cependant, au fur et à mesure que l'on clique sur le bouton "insérer", le tableau 2 disparaît.
    Les lignes vertes doivent rester. Il faut uniquement que la ligne en-dessous de la ligne verte se masque lorsque l'on insère une autre ligne à la fin du tableau.
    En vous remerciant par avance,
    Cordialement
    0
    1. Contributeur
      Bonjour,

      Comme ceci:

      Option Explicit
      Dim ligne As Long
      Sub Macro1()
      Recherchernom
          Range("TOTAL3").Select
          Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
          Selection.FillDown
          Rows("4:4").EntireRow.Hidden = True 'masquer
          Range("TOTAL4").Select
          Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
          Selection.FillDown
          Rows(ligne + 3 & ":" & ligne + 3).EntireRow.Hidden = True 'masquer
      End Sub
      Sub afficher()
      Cells.Select
          Selection.EntireRow.Hidden = False 'afficher toutes les lignes
      End Sub
      Sub Recherchernom() 'rechercher Tableau 2
      Dim Plage As Range
      Dim Lignes(), i As Long
      Dim Texte As String
      Dim Flag As Boolean
      
      Set Plage = Sheets("Feuil1").Range("A1:J100") 'plage de recherche
      Texte = "Tableau 2"   'expression cherchée
      Flag = Find_Next(Plage, Texte, Lignes()) 'appel de la fonction
      'si fonction retourne Vrai = expression trouvée dans la plage
      If Flag Then
           'restitution des lignes correspondantes
          For i = LBound(Lignes) To UBound(Lignes)
             ligne = Lignes(i)
          Next i
      Else
          MsgBox "L'expression : " & Texte & " n'a pas été trouvée dans la plage : " & Plage.Address
      
      End If
      End Sub
      
      'Sources : Michel_m
      'http://www.commentcamarche.net/forum/affich-31432413-importation-de-donnees-sans-doublons#9
      Function Find_Next(Rng As Range, Texte As String, Tbl()) As Boolean
      Dim Nbre As Integer, Lig As Long, Cptr As Long
      
          Nbre = Application.CountIf(Rng, Texte)
          If Nbre > 0 Then
              ReDim Tbl(Nbre - 1)
              Lig = 1
              For Cptr = 0 To Nbre - 1
                  Lig = Rng.Find(Texte, Cells(Lig, Rng.Column), xlValues).Row
                  Tbl(Cptr) = Lig
              Next
          Else
              GoTo Absent
          End If
          Find_Next = True
          Exit Function
      Absent:
          Find_Next = False
      End Function
      


      voilà
      0
      1. Bonsoir,
        J'ai fait un copier coller de la formule pour l'affecter au bouton "insérer", malheureusement, ça ne fonctionne pas. Les tableaux s'allongent et la macro ne semble pas fonctionner avec le tableau 1.
        0
      2. Bonjour,
        Merci, ça fonctionne correctement. Cependant, serait-il possible d'appliquer cette formule non plus sur 2 tableaux mais 5 tableaux (voir fichier joint) ?
        En vous remerciant par avance,
        Cordialement

        https://www.cjoint.com/c/KGxiud5qyoX
        0
      3. Bonjour,
        Merci beaucoup pour la formule ! Cependant, est-il possible, lorsque j'ajoute une ligne, que cette dernière efface les données sans effacer les formules ?
        En vous remerciant par avance,
        Cordialement

        https://www.cjoint.com/c/KGym5yQDcxX
        0
        1. Contributeur
          Comme ceci:

          Range("TOTAL1").Select
              Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
              Selection.FillDown
               Range("B" & Range("TOTAL1").Row - 1 & ":J" & Range("TOTAL1").Row - 1).SpecialCells(xlCellTypeConstants, 23).ClearContents 'efface les données garde les formules


          faire de même pour les autres
          0
        2. @cs_Le PivertMerci, la fonctionne correctement.
          Cordialement
          0