Code VBA insertion-suppression de ligne sans affecter une macro

Bonjour,

tout d'abord, bonne année à vous tous !

Si je m'en réfère à vous, c'est pour savoir que faut-il faire pour qu'un code de macro ne soit pas affecté par la suppression ou l'insertion d'une ligne/tableau ?

Si j'insère une ligne à "tableau" :

tableau

Ma macro, bien sûr, ne le prend pas en compte :

Me.Range("A2").FormulaR1C1 = _

"=COUNTIFS('saisie ANDON'!C[2],""Janvier"",'saisie ANDON'!C[5],(RC[13]))"

Me.Range("A2").Resize(32).FillDown

Me.Range("A34").FormulaR1C1 = "=IF(RC[13]=""TOTAL"",SUM(R[-32]C:R[-1]C),"""")"

Me.Range("B2").FormulaR1C1 = _

"=COUNTIFS('saisie ANDON'!C[1],""Février"",'saisie ANDON'!C[4],(RC[12]))"

Me.Range("B2").Resize(32).FillDown

Me.Range("B34").FormulaR1C1 = "=IF(RC[12]=""TOTAL"",SUM(R[-32]C:R[-1]C),"""")"

Me.Range("C2").FormulaR1C1 = _

"=COUNTIFS('saisie ANDON'!C[0],""Mars"",'saisie ANDON'!C[3],(RC[11]))"

Me.Range("C2").Resize(32).FillDown

Me.Range("C34").FormulaR1C1 = "=IF(RC[11]=""TOTAL"",SUM(R[-32]C:R[-1]C),"""")"

Me.Range("D2").FormulaR1C1 = _

"=COUNTIFS('saisie ANDON'!C[-1],""Avril"",'saisie ANDON'!C[2],(RC[10]))"

Me.Range("D2").Resize(32).FillDown

Me.Range("D34").FormulaR1C1 = "=IF(RC[10]=""TOTAL"",SUM(R[-32]C:R[-1]C),"""")"

Me.Range("E2").FormulaR1C1 = _

"=COUNTIFS('saisie ANDON'!C[-2],""Mai"",'saisie ANDON'!C[1],(RC[9]))"

Me.Range("E2").Resize(32).FillDown

Me.Range("E34").FormulaR1C1 = "=IF(RC[9]=""TOTAL"",SUM(R[-32]C:R[-1]C),"""")"

Me.Range("F2").FormulaR1C1 = _

"=COUNTIFS('saisie ANDON'!C[-3],""Juin"",'saisie ANDON'!C[0],(RC[8]))"

Me.Range("F2").Resize(32).FillDown

Me.Range("F34").FormulaR1C1 = "=IF(RC[8]=""TOTAL"",SUM(R[-32]C:R[-1]C),"""")"

Me.Range("G2").FormulaR1C1 = _

"=COUNTIFS('saisie ANDON'!C[-4],""Juillet"",'saisie ANDON'!C[-1],(RC[7]))"

Me.Range("G2").Resize(32).FillDown

Me.Range("G34").FormulaR1C1 = "=IF(RC[7]=""TOTAL"",SUM(R[-32]C:R[-1]C),"""")"

Me.Range("H2").FormulaR1C1 = _

"=COUNTIFS('saisie ANDON'!C[-5],""Août"",'saisie ANDON'!C[-2],(RC[6]))"

Me.Range("H2").Resize(32).FillDown

Me.Range("H34").FormulaR1C1 = "=IF(RC[6]=""TOTAL"",SUM(R[-32]C:R[-1]C),"""")"

Me.Range("I2").FormulaR1C1 = _

"=COUNTIFS('saisie ANDON'!C[-6],""Septembre"",'saisie ANDON'!C[-3],(RC[5]))"

Me.Range("I2").Resize(32).FillDown

Me.Range("I34").FormulaR1C1 = "=IF(RC[5]=""TOTAL"",SUM(R[-32]C:R[-1]C),"""")"

Me.Range("J2").FormulaR1C1 = _

"=COUNTIFS('saisie ANDON'!C[-7],""Octobre"",'saisie ANDON'!C[-4],(RC[4]))"

Me.Range("J2").Resize(32).FillDown

Me.Range("J34").FormulaR1C1 = "=IF(RC[4]=""TOTAL"",SUM(R[-32]C:R[-1]C),"""")"

Me.Range("K2").FormulaR1C1 = _

"=COUNTIFS('saisie ANDON'!C[-8],""Novembre"",'saisie ANDON'!C[-5],(RC[3]))"

Me.Range("K2").Resize(32).FillDown

Me.Range("K34").FormulaR1C1 = "=IF(RC[3]=""TOTAL"",SUM(R[-32]C:R[-1]C),"""")"

Me.Range("L2").FormulaR1C1 = _

"=COUNTIFS('saisie ANDON'!C[-9],""Décembre"",'saisie ANDON'!C[-6],(RC[2]))"

Me.Range("L2").Resize(32).FillDown

Me.Range("L34").FormulaR1C1 = "=IF(RC[2]=""TOTAL"",SUM(R[-32]C:R[-1]C),"""")"

Que faut-il que je fasse pour cela ?

Par avance, merci pour vos réponses

Bonjour,

il faut juste que tes données soient structurées en ... tableau ! (au sens excel)

en plus, tes formules se répéteront automatiquement sans que tu aies besoin de les programmer.

ps : je ne comprends pas trop pourquoi on utilise VBA pour mettre en "place" des formules, sauf quelques cas très particuliers comme des liens avec des fichiers externes; sinon il est préférable de mettre les données en tableau, et/ou faire des TCD, ou stocker les formules dans une zone à part et les recopier

Merci pour ta réponse. C'était ma façon de procéder avant, à l'aide de tableaux, TCD, ...

Mais plusieurs utilisateurs non avertis des conséquences de mauvaises utilisations, travaillent sur ce fichier.

D'où mon intérêt de créer des macros (et autres) pour éviter de "réparer" ce classeur.

Aurais-tu un bout de fichier anonymisé ?

Voici le classeur, en PJ.

7tableau-macro.xlsm (530.89 Ko)

Re-

Avec un TCD, plus de formule, plus de macro (sauf une ligne si tu veux actualiser automatiquement la synthèse)

7tableau-macro.xlsm (537.41 Ko)

D'où mon intérêt de créer des macros (et autres) pour éviter de "réparer" ce classeur.

je reviens sur le sujet à propos de ta remarque

tu peux aussi essayer la formule :

.formulalocal = "=NB.SI.ENS('saisie ANDON'!$C:$C;A$1;'saisie ANDON'!$F:$F;$N2)"

mais comme ta synthèse est en tableau, l'insertion d'une ligne dans le tableau doit hériter de la formule de la colonne !

Merci de t'être penché sur le sujet et de m'avoir apporté des réponses !

Bonne journée à toi

Rechercher des sujets similaires à "code vba insertion suppression ligne affecter macro"