1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

XL 2016 Code VBA insertion-suppression de ligne sans affecter une macro

Discussion dans 'Forum Excel' démarrée par Yoyo01000, 7 Janvier 2019.

  1. Yoyo01000

    Yoyo01000 XLDnaute Nouveau

    Inscrit depuis le :
    8 Octobre 2018
    Messages :
    32
    "J'aime" reçus :
    0
    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" :

    [​IMG]
    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 [​IMG]
     
  2. Chargement...

    Discussions similaires - Code VBA insertion Forum Date
    Insertion code Microsoft Excel Objects vba Forum Excel 24 Mars 2015
    Aide Code VBA Formulaire : insertion 1ère ligne vide, CheckBox.. Forum Excel 24 Février 2014
    Code vba - insertion box invisible si ligne vide Forum Excel 27 Novembre 2013
    Finalisation VBA code erreur insertion image Forum Excel 24 Juillet 2013
    Suppression de lignes et insertion de lignes code VBA Forum Excel 16 Avril 2012

  3. Dranreb

    Dranreb XLDnaute Barbatruc

    Inscrit depuis le :
    31 Janvier 2011
    Messages :
    14752
    "J'aime" reçus :
    906
    Sexe :
    Masculin
    Habite à:
    Belfort
    Utilise:
    Excel 2016 (PC)
    Bonjour.
    Pour bénéficier en VBA des avantages offerts par la mise sous forme de tableau Excel d'un plage, utilisez l'objet ListObject qui le représente.
    En principe les totaux se mettent sur une lignes spéciale en fin dont la plage est représentée par la propriété TotalsRowRange du ListObject.
    Mais normalement la macro ne devrait plus servir à rien s'il y était mis une bonne fois pour toutes des formules utilisant les références aux élément du tableau, car elle suivent automatiquement les ajouts et suppressions de lignes dans le corps du tableau.
     
  4. Yoyo01000

    Yoyo01000 XLDnaute Nouveau

    Inscrit depuis le :
    8 Octobre 2018
    Messages :
    32
    "J'aime" reçus :
    0
    Peux-tu éclairer ma lanterne stp ? Car pour moi c'est un peu du charabia :)
    Un exemple de code ou quelque chose du genre, si tu peux ?
    Je téléverse mon fichier, si ça peut aider.
     

    Pièces jointes:

  5. Dranreb

    Dranreb XLDnaute Barbatruc

    Inscrit depuis le :
    31 Janvier 2011
    Messages :
    14752
    "J'aime" reçus :
    906
    Sexe :
    Masculin
    Habite à:
    Belfort
    Utilise:
    Excel 2016 (PC)
    Votre tableau ne comporte pas de vraie ligne de total. Cochez la case pour la créer, et supprimez la fausse. Ensuite mettez y les formules adéquates: En A34, à propager sur 12 colonnes :
    Code (Text):
    =SOMME([Janvier])
    En M34 :
    Code (Text):
    =SOMME(Tableau2[[#Totaux];[Janvier]:[Décembre]])
    En A2, à propager sur 32 lignes et 12 colonnes :
    Code (Text):
    =NB.SI.ENS('saisie ANDON'!$C:$C;Tableau2[#En-têtes];'saisie ANDON'!$F:$F;[@[RESPO/Postes]])
    Attention, j'ai plusieurs fois rectifié la formule qui précède par des éditions successives, notamment pour mettre des références absolues aux colonnes C et F de la feuille "saisie ANDON"
    En M3 :
    Code (Text):
    =SOMME(Tableau2[@[Janvier]:[Décembre]])
    Normalement vous ne devriez plus avoir besoin de macro pour les actualiser.
     
    Dernière édition: 7 Janvier 2019
  6. Dranreb

    Dranreb XLDnaute Barbatruc

    Inscrit depuis le :
    31 Janvier 2011
    Messages :
    14752
    "J'aime" reçus :
    906
    Sexe :
    Masculin
    Habite à:
    Belfort
    Utilise:
    Excel 2016 (PC)
    Toutefois pour mettre en place les formules que j'ai indiquées vous pouvez utiliser une procédure du module de l'objet Worksheet représentant la feuille commençant comme ça :
    Code (Visual Basic):
    Sub Actualisation()
    Me.[Tableau2[Janvier]].Resize(, 12).FormulaR1C1 = "=COUNTIFS('saisie ANDON'!C3,Tableau2[#Headers],'saisie ANDON'!C6,[@[RESPO/Postes]])"
    Me.[Tableau2[Total/Année]].FormulaR1C1 = "=SUM(Tableau2[@[Janvier]:[Décembre]])"
    Me.[Tableau2[[#Totals],[Janvier]]].FormulaR1C1 = "=SUM([Janvier])"
    Me.[Tableau2[[#Totals],[Janvier]]].AutoFill Destination:=[Tableau2[[#Totals],[Janvier]:[Décembre]]], Type:=xlFillDefault
    Me.[Tableau2[[#Totals],[Total/Année]]].FormulaR1C1 = "=SUM(Tableau2[[#Totals],[Janvier]:[Décembre]])"
    Après avoir créé la ligne de totaux officielle, quand même.
     
  7. Yoyo01000

    Yoyo01000 XLDnaute Nouveau

    Inscrit depuis le :
    8 Octobre 2018
    Messages :
    32
    "J'aime" reçus :
    0
    Merci de t'être penché sur le sujet et de m'avoir apporté des réponses !

    Bonne journée à toi [​IMG]
     

Partager cette page