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!
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 !