Cacher une ligne après insertion

Résolu
sophie60400_1604 Messages postés 29 Statut Membre -  
sophie60400_1604 Messages postés 29 Statut Membre -
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. sophie60400_1604 Messages postés 29 Statut Membre
     
    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
  2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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
  3. sophie60400_1604 Messages postés 29 Statut Membre
     
    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
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. sophie60400_1604
     
    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
  6. sophie60400_1604 Messages postés 29 Statut Membre
     
    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. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      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
      1. sophie60400_1604 Messages postés 29 Statut Membre > cs_Le Pivert Messages postés 8437 Statut Contributeur
         
        Merci, la fonctionne correctement.
        Cordialement
        0