VBA Ajout ligne en-dessous en gardant formules

Bonjour,

Je débute sur VBA.

Dans le fichier en pièce jointe, je souhaite par l'intermédiaire du bouton ajouter une ligne en dessous de la ligne sélectionnée tout en gardant la mise en forme ET les formules tout en gardant la protection de ma feuille. Tout se passe très bien sauf, quand je souhaite ajouter une ligne en-dessous de la dernière, où les formules ne se copient pas.

Merci pour votre aide

Laura

Bonjour,

change les formules de la colonne N comme suit :

=SI([@[Calcul criticité]]=1;"FAIBLE PRIORITÉ";SI([@[Calcul criticité]]=2;"FAIBLE PRIORITÉ";SI([@[Calcul criticité]]=4;"FAIBLE PRIORITÉ";SI([@[Calcul criticité]]=8;"PRIORITÉ MOYENNE";SI([@[Calcul criticité]]=16;"PRIORITÉ MOYENNE";SI([@[Calcul criticité]]=32;"HAUTE PRIORITÉ";SI([@[Calcul criticité]]=64;"HAUTE PRIORITÉ";SI([@[Calcul criticité]]=128;"TRÈS HAUTE PRIORITÉ";SI([@[Calcul criticité]]=256;"TRÈS HAUTE PRIORITÉ";SI([@[Calcul criticité]]=512;"TRÈS HAUTE PRIORITÉ";""))))))))))

formule qu'on aurait pu simplifier !

ce n'est pas tout

dans la macro :

Sub AjoutLigneDessousEval()

    ActiveSheet.Unprotect ("")

    ActiveSheet.ListObjects(1).ListRows.Add

    ActiveSheet.Protect ("")

End Sub

Bonjour,

Les formules pourraient en effet être revues ainsi que les MFCs.

L9 : =SIERREUR(RECHERCHEV(K9;{"Très efficace".1;"Efficace".2;"Peu efficace".4;"Inefficace".8};2;FAUX);"")
M9 : =SIERREUR(G9*I9*L9;"")
N9 : =SIERREUR(RECHERCHEV(M9;{0."FAIBLE PRIORITE";8."PRIORITE MOYENNE";32."HAUTE PRIORITE";128."TRES HAUTE PRIORITE"};2;VRAI);"")
snip 20181029175458

Cdlt.

Bonjour toutes et tous

coucou Jean-Eric et Steelson

Un plus :En prenant l'exemple de Steelson + cours vba 'les boîtes de dialogue' avec une demande de confirmation on peut supprimer la dernière ligne du tableau avec un bouton de commande (comme celui d'ajout)

Sub SupLigneDessousEval()
   If MsgBox("Etes-vous certain(e) de vouloir supprimer la dernière ligne du tableau ?", vbYesNo, "Demande de confirmation") = vbYes Then
            ActiveSheet.Unprotect ("")

     With ActiveSheet.UsedRange
          ActiveSheet.Rows(.Row + .Rows.Count - 1).Delete
          ActiveSheet.Protect ("")
     End With
        MsgBox "La dernière ligne du tableau a été supprimé avec Succès !"

       Else
           MsgBox "Abandonné par l'utilisateur !"
        Exit Sub
    End If
End Sub

crdlt,

André

Bonjour,

Les formules pourraient en effet être revues ainsi que les MFCs.

L9 : =SIERREUR(RECHERCHEV(K9;{"Très efficace".1;"Efficace".2;"Peu efficace".4;"Inefficace".8};2;FAUX);"")
M9 : =SIERREUR(G9*I9*L9;"")
N9 : =SIERREUR(RECHERCHEV(M9;{0."FAIBLE PRIORITE";8."PRIORITE MOYENNE";32."HAUTE PRIORITE";128."TRES HAUTE PRIORITE"};2;VRAI);"")

Cdlt.

absolument ... mais je remplacerais bien les M9 et compagnie par les références du tableau

Re,

Oui, mais quand on fait des romans dans les en-têtes de colonnes, les formules deviennent rapidement incompréhensibles !...

Cdlt.

Je reviens sur le besoin ... sauf erreur de ma part, si la première colonne ne comporte pas de liste déroulante, pas besoin de macro.

Re,

@ Andre13

Ta proposition revisitée !...

Bonne soirée.

Sub SupLigneDessousEval()
Dim n As Long
    If MsgBox("Etes-vous certain(e) de vouloir supprimer la derni?re ligne du tableau ?", vbYesNo, "Demande de confirmation") = vbYes Then
        With ActiveSheet
            .Unprotect
            With .ListObjects(1)
                n = .ListRows.Count
                .ListRows(n).Delete
            End With
            .Protect
        End With
        MsgBox "La derni?re ligne du tableau a ?t? supprim? avec Succ?s !"
    Else
        MsgBox "Abandonn? par l'utilisateur !"
    End If
End Sub

Bonsoir Jean-Eric, André,

screen

bizarre : les lettres accentuées du code VBA d'André sont devenues des « ? »

c'est une des améliorations d'Excel 2016 ?

dhany

Bonjour,

Merci à ceux qui m'ont aidé, notamment pour la simplification des formules.

Mon problème est résolu.

Bonne soirée à tous

Rechercher des sujets similaires à "vba ajout ligne dessous gardant formules"