Macro insertion ligne dans tableau ne bouge pas une MFC
Bonjour,
Je m'en remet (encore) à vous.
À la base, j'ai demandé l'aide une mise en forme conditionnel d'une plage horaire afin de détecter les incohérences.
@Arturo83 a proposé une solution qui fonctionne très bien
Puis à force de manipuler mon tableur, je me rend compte (un peu tard) que les MFC sont "un peu" parties en sucette
Le problème est que lorsque je cherche à insérer une ligne dans un tableau, la MFC se décalle/se "duplique" bref, ça fait un joyeux bordel. J'ai du supprimer manuellement beaucoup (vraiment) de ces MFC tellement ça pullulait dans ma feuille.
@Arturo83 m'a alors expliqué que c'était le fait d'insérer une ligne ailleurs qu'au début du tableau. Ce qui est vrai.
Étrangement, la MFC suit sa logique lorsque j’insère une ligne manuellement, en bas du tableau. Mais lorsque j'appuie sur F4 pour répéter l'action, ça re-déconne. IDEM lorsque j'enregistre une macro pour insérer une ligne.
Du coup je ne comprend pas, pourquoi manuellement ça marche bien, pourquoi automatiquement non?
Le problème vient-il de la macro insérer ligne ?
Merci par avance
Cdt
Bonjour
Pour éviter cela insérer à la fin. Ton code insère systématiquement en 12ème position ce qui parait pour le moins bizarre
Ceci suffit
Sub insérer_ligne()
'
' insérer_ligne Macro
ActiveSheet.ListObjects(1).ListRows.Add
End Subou mieux en nommant correctement tes tableaux
Sub insérer_ligne()
'
' insérer_ligne Macro
'
Range("NomDuTableau").ListObject.ListRows.Add
End SubBonjour,
Essayez ceci:
Sub insérer_ligne()
Dim Plage_MFC As Excel.Range, FC1 As Excel.FormatCondition
Lig = ActiveCell.Row - 4
Selection.ListObject.ListRows.Add (Lig)
On Error Resume Next
DerLig = Sheets("Feuil1").Range("B" & Rows.Count).End(xlUp).Row
'*************************************************************************************
Range("J5").Select
Set Plage_MFC = Range("J5:K" & DerLig)
Plage_MFC.FormatConditions.Delete
Set FC1 = Plage_MFC.FormatConditions.Add(Type:=xlExpression, Formula1:="=ET($B5=$B4;OU( ET(ARRONDI($J5;5)<ARRONDI($K4;5);ARRONDI($J5;5)>ARRONDI($J4;5)); ET(ARRONDI($K5;5)>ARRONDI($J4;5);ARRONDI($K5;5)<ARRONDI($K3;5)); ET(ARRONDI($J5;5)<ARRONDI($J4;5);ARRONDI($K5;5)>=ARRONDI($J4;5))))")
FC1.Interior.Color = RGB(255, 192, 0)
End SubCdlt
@78chris : Effectivement cela peut te paraitre bizarre, mais c'est tout simplement la macro que j'ai enregistré, je pensais à tord qu'elle ferait le job
Mais grâce à ton aide, j'ai enfin pu faire fonctionner la MFC !
@Arturo83 : J'ai également testé ta solution et elle semble fonctionner.
Pour plus de simplicité j'ai utilisé la solution de Chris, et c'est exactement ce que je voulais : une macro "insérer ligne" fiable ... oui je sais ça peut faire sourire les experts
Merci à vous et passez un bon weekend.
Cdt