ajout ligne auto + copie des formules

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

limagerit

XLDnaute Occasionnel
Bonjours à tous,

J'utilise une petit macro trouver sur ce même forum et qui est très utile.
Elle me permet d'ajouter en automatique une ligne dans un tableau.

malheureusement, l'ajout de ligne ne duplique pas mes formules.
est il possible d'adapter le code pour que l'ajout d'une ligne puisse garder :

les formules
les mises en formes
les mises en formes conditionnelles

voici le code

Private Sub Worksheet_Change(ByVal Target As Range)
' teste si la cellule juste au dessus est remplie
If Range("premiereCelluleApresTableau").Offset(-1) <> "" Then
' ajoute une ligne - la ligne s'insère au dessus
Application.EnableEvents = False ' pour ne pas se mordre la queue
Range("premiereCelluleApresTableau").EntireRow.Insert xlShiftDown
Application.EnableEvents = True
End If
End Sub


Merci de votre aide
 
Re : ajout ligne auto + copie des formules

Bonjour limagerit,

Sur la ligne créée vous copiez la ligne dont vous voulez récupérer les formats et les formules (ligne 2 par exemple), et vous effacez les cellules que vous voulez vierges.

Si vous ne savez pas faire, on peut vous aider, mais il faudrait plus de précision et le fichier.

A+
 
Re : ajout ligne auto + copie des formules

Bonjour job 75,

Merci pour votre réponse.
ci joint mon fichier en ex

lorsque que j'ajoute un texte ou une valeur dans la colonne A du tableau , alors l'ajout en automatique de ligne se fait.
Malheureusement mes calcules et mises en forme ne sont pas dupliqués

merci de votre aide
 

Pièces jointes

Re : ajout ligne auto + copie des formules

Re,

Ce n'est donc pas la ligne créée qui doit être mise en forme mais celle du dessus.

La macro modifiée :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   ' teste si la cellule juste au dessus est remplie
    If Range("ajout").Offset(-1) <> "" Then
        ' ajoute une ligne - la ligne s'insère au dessus
        Application.EnableEvents = False ' pour ne pas se mordre la queue
        Range("ajout").EntireRow.Insert
        [COLOR="Red"]Range("B2:H2").Copy Range("ajout").Offset(-2, 1)
        Range("ajout").Offset(-2, 1).Resize(, 6) = ""[/COLOR]
        Application.EnableEvents = True
    End If
 End Sub

A+
 
Re : ajout ligne auto + copie des formules

Merci pour la modification de code , effectivement, cela marche très bien .

Juste pour m'aider encore un peu a comprendre le fonctionnement

Pouvez vous me donner des infos sur les fonctions offset et resize ?

Merci et très bonne journée
 
Re : ajout ligne auto + copie des formules

Bonjour,

Pour le fun, voici un petit fichier qui fait exactement ce que tu demandes. Un besoin que j'avais eu :

- un doc mis à dispo de toute la boîte
- des utilisateurs non avertis
- lignes avec : listes de validation, mfc, formules, à blinder

et donc la macro faite par Hervé de rajout de lignes, qui tient compte de tout cela : copie et insère des lignes identiques à une ligne masquée qui contient tout cela sous le tableau.

Code:
Public Sub brigitte()
Dim nbligne As Long
Dim t As String
Dim derligne As Integer
ActiveSheet.Unprotect
Application.ScreenUpdating = False
nbligne = Application.InputBox("Nombre de lignes à insérer (maximum 10)", "Insertion ligne", 10, , , , , 1)
Select Case nbligne
    Case Is > 10: t = "Maximum 10, SVP"
    Case 0: Exit Sub
    Case Is < 1: t = "Supérieur à 0, SVP"
End Select
If t <> "" Then
    t = t & vbNewLine & vbNewLine & "Procédure arrêtée."
    MsgBox t, , "Attention..."
    Exit Sub
End If
derligne = Range("f1").End(xlDown).Row + 1
Rows(derligne & ":" & derligne + nbligne - 1).Insert
Range("modele").Copy Destination:=Range("a" & derligne & ":a" & derligne + nbligne - 1)
Range("g" & derligne & ":g" & derligne + nbligne - 1).ClearContents
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingRows:=True, AllowInsertingRows:=True, AllowDeletingRows _
        :=True
        
Application.ScreenUpdating = True
End Sub

Ca marche du feu de Dieu, deux ans 1/2 d'utilisation, aucun bug, tout y est : jusqu'aux formats...
 

Pièces jointes

Re : ajout ligne auto + copie des formules

Re, bonjour Brigitte 🙂

Pour Offset et Resize, voir l'aide VBA qui est très bien.

Voici une autre solution, on n'insère pas de ligne, il n'y a qu'une ligne de préparée et le nom "ajout" a été supprimé car inutile :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> Range("A65536").End(xlUp).Address Then Exit Sub
If Target = "" Then Exit Sub
Dim T
Application.ScreenUpdating = False
Application.EnableEvents = False ' pour ne pas se mordre la queue
T = Target.Value 'mémorise la valeur
Rows(2).Copy Target.EntireRow.Resize(2) 'copie la ligne 2 et colle sur 2 lignes
Union(Target.Resize(, 7), Target.Offset(1).EntireRow).ClearContents
Target = T
Application.EnableEvents = True
End Sub

A+
 

Pièces jointes

Re : ajout ligne auto + copie des formules

Brigitte :

Merci pour votre fichier il ne réponds à un besoin plus complexe pour un de mes autres fichier et vraiment vraiment Merci .


Seb75 :
Merci pour la modification , si je comprends le sens de la macro vous copier coller la ligne 2 en effaçant le contenu mais pas les formules.
Je suppose que si je crée une ligne 1 vierge avec que les formules cela marche aussi bien ?
(ceci juste dans le cas ou l'un de mes utilisateurs efface la formule des cellules)

Merci de votre aide a tous les deux, voila un week end riche de connaissance.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
1 K
B
  • Question Question
Microsoft 365 Copie des données
Réponses
0
Affichages
662
bd.afaf
B
S
  • Question Question
Réponses
1
Affichages
802
Compte Supprimé 979
C
Retour