Insertion de lignes ou de colonnes avec modif de formules par macro

KIM

XLDnaute Accro
Bonjour le forum, et les ami(e)s,
J'ai un modèle de tableau utilisé dans le cadre d'une demande et de suivi finacier de projets. Pour l'ensemble des projets le nombre de colonnes et de lignes ne sont pas les mêmes.
Quand je remplis ce cadre pour un projet donné,
1- Pour un nouveau partenaire, j'insère 5 lignes avec une ligne sous-total avant la dernière ligne du TOTAL, et je modifie les formules de la dernière ligne total manuellement.
2- Pour une année supplémentaire d'investissement, j'insère l 3 colonnes avant les 3 dernières colonnes des sous/totaux par type et je modife les formules manuellement
voir fichier joint
Est-il possible d'automatiser par macro ces 2 manipulations independantes l'une de l'autre.
Merci de votre aide
Bien amicalement
KIM
 

Pièces jointes

  • Fiche_KIM.zip
    8.4 KB · Affichages: 68

KIM

XLDnaute Accro
Bonjour les amis, bonjour le forum,
@pierrejean, Bebere,
Merci pour votre collaboration. Une différence entre les 2 codes :
Celui de Bebere copie le dernier bloc avec ses données et ses formules et celui de Pierrejean efface les données et garde les formules.
Le but est de recopier le dernier bloc avec ses formules qui se mettent à jour automatiquement mais sans les données saisies manuellement.
Je vais tester en grandeur réelle jeudi ou vendredi et j'espère que tout se passe bien.
Merci encore de votre aide.
Bien amicalement
KIM
 

Bebere

XLDnaute Barbatruc
Kim
un code pour effacer

Code:
Public Sub EffaceConstantes()
Dim x
        L = Feuil1.Cells.Find("Total", LookIn:=xlValues, lookat:=xlWhole).Row
        x = Feuil1.Range("B" & L - 14 - 1)
        Feuil1.Range("C" & L - 14 - 1 & ":AV" & L - 1).SpecialCells(xlCellTypeConstants, 3) = ""
Feuil1.Range("B" & L - 14 - 1) = x
End Sub

Code:
Sub CopyInsertHiddenLignes()
    nbL = 14
    With Feuil1
        'L = .Columns(2).Find("Total", LookIn:=xlValues, lookat:=xlWhole).Row
        L = .Cells.Find("Total", LookIn:=xlValues, lookat:=xlWhole).Row
'        .Rows(L - nbL - 1 & ":" & L - 1).Select
        .Rows(L - nbL - 1 & ":" & L - 1).Copy

        .Rows(L).Insert Shift:=xlDown
        L = .Cells.Find("Total", LookIn:=xlValues, lookat:=xlWhole).Row
        .Range("B" & L - nbL - 1) = Application.CountIf(.Range("B:B"), "abc") - 1
        Application.CutCopyMode = False
    End With
   EffaceConstantes
    L = L + 2
    CacheLignes
End Sub
 

KIM

XLDnaute Accro
Bonjour les amis, bonjour le forum,
@Bebere,
Je viens de tester ton nouveau code. La 1è exécution OK,
la suivante m'affiche l'erreur suivante
"Pas de cellule correspondante" à la ligne :
Feuil1.Range("C" & L - 14 - 1 & ":AV" & L - 1).SpecialCells(xlCellTypeConstants, 3) = ""
de la macro : EffaceConstantes

Merci encore,
KIM
 

KIM

XLDnaute Accro
Re,
Désolé Bebere pour le dérangement, le problème persiste. Même erreur à la même ligne.
1è exéc correcte, 2è erreur "Pas de cellules correspondantes"
Public Sub EffaceConstantes()
Dim x
L = Feuil1.Cells.Find("Total", LookIn:=xlValues, lookat:=xlWhole).Row
x = Feuil1.Range("B" & L - nbL - 1)
Feuil1.Range("C" & L - nbL - 1 & ":AV" & L - 1).SpecialCells(xlCellTypeConstants, 3) = ""
Feuil1.Range("B" & L - nbL - 1) = x
End Sub
Merci d'avance
KIM
 

Linda42

XLDnaute Occasionnel
Bonjour à tous,

Je me permets de poster ma discussion sur ce post car l'aide que vous avez apporter à Kim pour son premier tableau de cette conversation (rajout de ligne et rajout de colonne) correspond exactement à mon besoin. Malheureusement, je ne suis pas doué pour les vba et je n'arrive pas à adapté les codes à mon fichier.

Pouvez vous m'aide?

Merci à tous


cdt
 

Discussions similaires

Statistiques des forums

Discussions
315 124
Messages
2 116 460
Membres
112 748
dernier inscrit
Pboiusquet