Insérer / supprimer / masquer des lignes automatiquement - Excel / VBA

Bonjour,

Pour commencer, merci d'avance pour toute l'aide que vous pourrez m'apporter. Je suis plus que débutante en VBA, et malgré le fait que ca m'intéressem je n'y comprends strictement rien ...

J'ai un fichier que j'aimerais rendre facile d'utilisation et ergonomique dans la mesure du possible. Il s'agit de renseigner des informations pour assurer un suivi

Dans le fichier joint, je souhaite:

- insérer une seule ligne automatiquement si le statut (colonne E) est "En cours" (calculé avec une formule IF en colonne I = "Non" et "En cours")

- la ligne insérée doit reprendre les formules existantes en s'incrémentant (a4 devient a5)


- supprimer une ligne si vide sous un statut "clôturé", en évitant la perte des formules existantes qui sont dépendantes des lignes du dessus ... : avec un bouton de commande c'est bien, en automatique aussi c'est bien

- éviter la perte des formules en cas de suppression de lignes

- à l'aide d'un bouton de commande, masquer / démasquer les lignes en statut "clôturé"

- insérer une nouvelle bordure au dessous de la ligne entière d'un statut "clôturé"

Les colonnes grisées contiennent les formules et la colonne en jaune contient le menu déroulant qui déclenche un peu tout le reste

Merci encore pour votre aide, je ne m'en sors pas du tout ...

(codes existants dans le fichiers sont ceux que j'ai recopiés dans des forums, ce n'est pas glorieux ...)

Bonne soirée
Bises

Bonjour,

1. Dans votre feuille Sheet6, remplacez tout le code par celui-ci dessous

Dim stpevt As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)

If stpevt = True Or Target.Count > 1 Then Exit Sub
If Not Intersect(Target, ListObjects("Table1").ListColumns(9).DataBodyRange) Is Nothing Then
    If Target.Value = "Non" Then
        stpevt = True
        Rows(Target.Row).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    End If
End If
stpevt = False
End Sub

2. - supprimer une ligne si vide sous un statut "clôturé", en évitant la perte des formules existantes qui sont dépendantes des lignes du dessus ... : avec un bouton de commande c'est bien, en automatique aussi c'est bien

Je n'ai pas saisi ce que vous voulez faire.
Par contre une chose importante vu que que vous avez mis votre tableau au format tableau structuré il ne doit pas comporter de lignes vides.
Un tableau structuré doit toujours être limité au nombre de lignes renseignées. Lorsque vous ajoutez une nouvelle ligne, faites le toujours en dessous de la dernière ligne complétée, le tableau reprendra automatiquement le format et les formules que vous y avez placés
Du coup je pense que votre demande ne sert plus.

3. Dans E2, je pense qu'il y a un souci avec le résulat de votre formule. Toutefois remplacez-la par celle ci-dessous --> =SI($I2="";"";SI(NB.SI([[Reprise ]];"Oui");"Clôturé";"En cours"))
Ensuite tirez la formule vers le bas jusqu'à la dernière ligne complétée. (N'oubliez pas que pas de lignes vides dans un tableau structuré !)
NB : je pense que votre formule devrait plutot être celle-ci --> =SI($I2="";"";SI([@[Reprise ]]="Oui";"Clôturé";"En cours"))

4.- à l'aide d'un bouton de commande, masquer / démasquer les lignes en statut "clôturé"

Mettez ces deux codes (masque et Afficher) dans un module et associez-les à deux boutons

Sub masquer()
With Sheets("sheet6")
    .ListObjects("Table1").Range.AutoFilter Field:=5, Criteria1:="<>Clôturé"
End With
End Sub

Sub afficher()
With Sheets("sheet6")
    .ListObjects("Table1").Range.AutoFilter Field:=5
End With
End Sub

si ok -->

Cordialement

Bonsoir Dan,

Waow, merci beaucoup, je vais lire tout ca avec attention et suivre les instructions :-)

Merci beaucoup , encore une fois !

Stéphanie

Pardon, je suis archi nulle, mais avec le code d'insertion, qui marche bien d'ailleurs, la ligne s'insère au-dessus et non au-dessous

Je n'arrive pas à comprendre pourquoi, ni comment on corrige ca

désolée...

Merci beaucoup

Bonjour

Pardon, je suis archi nulle, mais avec le code d'insertion, qui marche bien d'ailleurs, la ligne s'insère au-dessus et non au-dessous

Pas de souci. Dans le code Private sub worksheet_change qui se trouve dans la feuille sheet6 il vous suffit de modifier cette ligne

Rows(Target.Row + 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

Cordialement

Merci Dan !

Rechercher des sujets similaires à "inserer supprimer masquer lignes automatiquement vba"