Ajouter une ligne(avec formule) lorsque celle du desus est remplie

Bonjour à toutes et tous et bonne année à vous!

j'ai un fichier de 12 feuilles avec un tableau sur chaque. Plutôt que d'avoir x lignes qui ne serviront peut être à rien, est il possible de rajouter une ligne lorsque celle du dessus est complète?

Quand je dit complète, c'est avoir une "somme" dans une des colonnes de "F" à "J".

Et garder la formule en "B" et le choix de police en "E".

Un petit fichier pour voir plus concrètement ma demande!

merci à vous et bon week-end!!!

18fichier-forum.xlsm (44.41 Ko)

Bonjour

Ci joint ma solution

26fichier-forum.xlsm (49.39 Ko)

A+ François

Bonjour bayard,

J'ai vu la proposition de fanfan38 lors de l'écriture de ma réponse donc cela te donne du choix . L'ajout de ligne se fait automatiquement lors de la saisie d'un montant sur la dernière ligne du tableau. J'ai ajouté une feuille "Mois modèle" pour faciliter l'ajout des mois et une feuille "Paramètres" pour identifier les noms des feuilles concernées.

Le code est dans le module associé à l'objet "ThisWorkbook", les feuilles sont protégées mais sans indication de mot de passe (voir constante WS_PSWD en tête du module).

Cdlt

Cylfo

Bonjour à tous !

Pourquoi ne pas utiliser les fonctionnalités des tableaux structurés (Propagation automatique des formules et format,....) ?

En réorganisant légèrement la feuille mensuelle (pourquoi mensuelle et pas annuelle ?) afin de loger l'à-nouveau en haut de feuille, en bannissant les cellules fusionnées, on obtient une base cohérente sans utiliser la lourdeur d'autres outils.

Bonjour Cylfo, Fanfan38 et JFL,

désolé pour le retard mais week-end bien chargé!

J'ai donc testé les différentes propositions et je pense, j'en suis désolé, que je vais garder ma façon de travailler actuelle.

ça me fait pas mal de modifications pour pas grand chose en fin de compte.

je vous remercie pour votre travail et je m'excuse encore une fois.

je garde quand même vos propositions dans un coin au cas ou le besoin se ferait sentir pour autre chose!!!

merci et bonne journée à tous.

Bonjour à tous !

Je vous remercie de ce retour.

Mais.... c'est dommage de " remettre à demain ce que l'on peut faire aujourd'hui!!! "

Ok @Bayard.

@JFL , avec les TS il y a, à mon sens, un seul inconvénient et je ne comprends pas que Microsoft n'y ait pas apporté de solution, si l'on veut protéger les colonnes contenant des formules (ce que préconise MS) il n'y a guère de solution en dehors de VBA ...

Cdlt,

Cylfo

Bonsoir,

une proposition avec tableau structuré :

Et surtout le report des totaux en haut de feuille afin d'avoir toujours un oeil dessus. Cela représente une modification de la feuille, mais c'est tellement plus simple.
Et en plus pour la coloration des lignes c'est également automatique et toujours une sur deux, car avec une MFC si vous faites un filtre avec que des lignes paires alors vous perdez la couleur une ligne sur deux...

@ bientôt

LouReeD

Désolé LouReeD, je n'avais pas vu ton message

Voila une idée de ce que j'aurais voulu, ce n'est pas la quintessence mais ça fonctionne

Je ne connaissais pas pas mais j'ai découvert ChatGPT et voilà ce qu'il m'a proposé. Il y a surement des améliorations à y apporter mais voilà!!

Bonne fin de journée à tous.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim PlageControle As Range
    Dim Ligne As Long

    ' Définir la plage de cellules à surveiller (colonnes F à I)
    Set PlageControle = Me.Range("F:I")

    ' Vérifie si la modification est dans la plage cible
    If Not Intersect(Target, PlageControle) Is Nothing Then
        Application.EnableEvents = False ' Désactive les événements pour éviter une boucle infinie
        For Each cell In Target
            If cell.Value <> "" Then
                Ligne = cell.Row

                ' Insère une nouvelle ligne vide en dessous
                Rows(Ligne + 1).Insert Shift:=xlDown

                ' Copie formats et formules de la ligne précédente
                Rows(Ligne).Copy
                Rows(Ligne + 1).PasteSpecial Paste:=xlPasteFormats
                Rows(Ligne).Copy
                Rows(Ligne + 1).PasteSpecial Paste:=xlPasteFormulas

                ' Supprime les contenus tout en laissant les formules
                Rows(Ligne + 1).SpecialCells(xlCellTypeConstants).ClearContents

                Application.CutCopyMode = False

                MsgBox "Une ligne identique vide avec les formules a été ajoutée après la ligne " & Ligne
                Exit For
            End If
        Next cell
        Application.EnableEvents = True ' Réactive les événements
    End If
End Sub

re,

chatgpt, la qualité de la réponse dépend de la question ...

j'ai continué avec l'histoire des TS de LouReeD

Maintenant, il faut créer un copie de "mars 2025" et le renommer "Avril 2025", puis le TS de cette feuille renommer comme "tbl_Avril2025", etc

Bonjour BsAlv,

Effectivement c'est plus esthétique, plus pratique peut-être (j'ai testé) mais les TS ce n'est pas ma tasse de thé. Je ne serais pas apporter la moindre modification si besoin. Ensuite il faudrait que je refasse complètement mon fichier, ça je ne le conçois pas du tout et quand je vois la formule lorsque l'on clique sur "F3" je n'y comprends absolument rien. Je suis un ancien qui a appris le peu qu'il sait grâce à ce forum et d'autres du même style.

je te remercie pour ton travail et désolé de ne pas adhérer!

Bonne journée

re,

il faut surmonter votre peur d'avoir les pieds froids pour ces TS, ils sont vraiment idéal pour quelqu'un avec votre profil. Que faut-il encore changer ??

Plus facile que ceci n'est pas possible, je crois. Un tableau dans la feuille "Data" pour tous les mois et puis un tableau par mois.

Si c'est le problème de changer de l'ancienne version vers celle, je peux vous écrire une macro.

La seule chose à faire maintenant, c'est créer un duplicat de "Mars 2025" après cette feuille et la renommer en "Avril 2025"

Je t'ai envoyé un MP.

Rechercher des sujets similaires à "ajouter ligne formule lorsque celle desus remplie"