Cacher une ligne après insertion

[Résolu]
Signaler
Messages postés
14
Date d'inscription
mardi 20 juillet 2021
Statut
Membre
Dernière intervention
29 juillet 2021
-
Messages postés
14
Date d'inscription
mardi 20 juillet 2021
Statut
Membre
Dernière intervention
29 juillet 2021
-
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

Messages postés
1088
Date d'inscription
lundi 22 septembre 2008
Statut
Membre
Dernière intervention
29 juillet 2021
232
Bonjour,
Si j'ai compris
https://mon-partage.fr/f/HJGBFsIv/
Messages postés
14
Date d'inscription
mardi 20 juillet 2021
Statut
Membre
Dernière intervention
29 juillet 2021

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
Messages postés
7462
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
29 juillet 2021
644
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à
Messages postés
14
Date d'inscription
mardi 20 juillet 2021
Statut
Membre
Dernière intervention
29 juillet 2021

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.
Messages postés
7462
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
29 juillet 2021
644
une autre approche :

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

@+ Le Pivert

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
Messages postés
7462
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
29 juillet 2021
644
Messages postés
14
Date d'inscription
mardi 20 juillet 2021
Statut
Membre
Dernière intervention
29 juillet 2021

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
Messages postés
7462
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
29 juillet 2021
644
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
Messages postés
14
Date d'inscription
mardi 20 juillet 2021
Statut
Membre
Dernière intervention
29 juillet 2021
>
Messages postés
7462
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
29 juillet 2021

Merci, la fonctionne correctement.
Cordialement