Amélioration macro "Insertion / décalage de cellules sous condition"

Bonjour à tous,

Je suis débutant en macro.

Le fichier ci-joint contient une macro (réalisée par un utilisateur de ce forum, que je remercie vivement) qui permet d'insérer / décaler vers le bas des cellules sous condition (si on saisit des données dans une cellule) au sein de l'onglet "Modele". Voici la macro :

Private Sub Worksheet_Change(ByVal Target As Range)

'

Dim iTRow%, iRowUp%

Dim Nom$, Num As Long, adresse As Range

'

Application.EnableEvents = False

'Insertion de cellules vers le bas de colonnes A à I si B24 non vide

iTRow = Target.Row

iRowUp = Target.End(xlUp).Row

If Not Intersect(Target, Range("B:B")) Is Nothing Then

If Target <> "" And Target.Offset(1, -1) = "TOTAL" Then

Range("A" & iTRow + 1 & ":I" & iTRow + 1).Insert shift:=xlDown

Range("E" & iTRow + 2).FormulaLocal = "=SOMME(E" & iRowUp & ":E" & iTRow & ")"

Range("F" & iTRow + 2).FormulaLocal = "=SOMME(F" & iRowUp & ":F" & iTRow & ")"

End If

End If

'

Application.EnableEvents = True

'

End Sub

J'aimerais améliorer cette macro, qui me pose 2 problèmes :

1- Cette macro ne permet pas la modification de 2 cellules en même temps (si une de ces 2 cellules appartient à la colonne B).

Exemple : si je saisis du contenu en B18 et C18, puis si je sélectionne ces 2 cellules et supprime leur contenu => bug ligne "If Target <> "" And Target.Offset(1, -1) = "TOTAL" Then" ; de la même manière, si je saisis du contenu en B18 et B19 puis si je sélectionne ces 2 cellules > copier-coller leur valeur en B20 et B21 => bug ligne "If Target <> "" And Target.Offset(1, -1) = "TOTAL" Then"

Si quelqu'un a une solution pour résoudre ce problème, je le remercie vivement par avance.

2- La formule en cellule E25 est une somme des cellules E18 à E24 (idem en colonne F). La macro commande un insertion/décalage de cellules vers le bas des colonnes A à I sous condition. Par exemple, si B24 est alimentée, alors des cellules s'insèrent de A25 à I25. Si maintenant B25 est alimentée, alors des cellules s'insèrent de A26 à I26, etc...

Dans l'idéal, j'aimerais que la formule de somme en E25 et F25 débute toujours depuis la ligne 18 jusqu'à la dernière ligne au-dessus de la ligne "TOTAL". En effet, lorsqu'il y a insertion de cellules, la macro actuelle modifie cette formule de somme en prenant comme point de départ le 1er chiffre trouvé à partir de la ligne 18 jusqu'à la dernière ligne au-dessus de "TOTAL".

Un exemple pour être plus clair : si je saisis du contenu dans les cellules B23 à F23 (laissant donc B18 à F22 vides), puis si je saisis du contenu dans les cellules B24 à F24, la formule en E25 changera de "Somme de E18 à E24" => à "Somme de E23 à E24", or je souhaiterais que la formule de la somme conserve comme point de départ la ligne 18.

Merci d'avance à tous pour votre aide.

Bonne soirée

Salut blackmalkmus,

voici une façon de faire mais cela commence à friser l'équilibrisme : il faudrait songer à une utilisation rationnelle, voire classique (quelle drôle d'idée! ) de ta feuille de calcul!

Il y a deux valeurs écrites en blanc en [A16:A17] : pas toucher!

A tester!

A+

Mille mercis curulis57 !

Cela répond parfaitement à ma demande. Tu es un équilibriste très doué

Naturellement, si tu as 5 minutes, je veux bien que tu m'expliques (= me traduises ta macro), ce qui me permettrait de progresser plus vite...

Mais dans tous les cas, de très sincères remerciements !

Rechercher des sujets similaires à "amelioration macro insertion decalage condition"