Macro+recopier les formules

Résolu/Fermé
Vive_la_vie! - 15 déc. 2010 à 18:17
 Vive la vie! - 18 déc. 2010 à 17:52
Bonjour,


J'ai un tableau avec des formules malheureusement je ne peux pas le mettre sur ce site car il y a des données confidentielles nous sommes plusieurs personnes à l'utiliser je ne peux pas protéger les cellules puisque ces personnes là doivent lorsqu'elles insèrent une nouvelle ligne doivent la tirer afin qu'il y ait les formules sur la nouvelle ligne. Le problème c'est que certaines personnes ne savent pas s'y prendre et ca bugg. Les formules vont de la colonne C à J et commence à partir de la ligne 15 ensuite pour chaque ligne c'est les mêmes formules. Y-a-t-il une possibilité de créer une macro qui mette les formules automatiques lorsqu'on crée une nouvelle ligne ? Je pourrais ainsi protéger le document.

A voir également:

7 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
15 déc. 2010 à 19:06
bonjour

Le fait d'insérer une ligne ne génère pas d'événement.
On peut contourner cela en générant les formules lors de la saisie de la colonne A, si la cellule était vide auparavant avec ces 2 macro événementielles :

Public avant As Variant

Private Sub Worksheet_SelectionChange(ByVal sel As Range)
If sel.Column = 1 Then avant = sel.Value
End Sub

Private Sub Worksheet_Change(ByVal sel As Range)
If sel.Cells.Count = 1 And sel.Row > 15 Then
    If sel.Column = 1 And avant = "" Then
        Cells(sel.Row - 1, 3).Resize(2, 8).FillDown
    End If
End If
End Sub


Pour ce qui est de protéger la feuille, il faudra faire attention car la macro mettant en place les formules doit pouvoir écrire dans ces cellules.
Pour cela il faut peut-être rajouter la suppression de la protection avant et la remise après.

Donne nous le résultat de tes test éventuels.
1
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
16 déc. 2010 à 19:21
bonjour

Il suffit de remplacer 1 par 2 pour le numéro de colonne :

If sel.Column = 2 Then avant = sel.Value

    If sel.Column = 2 And avant = "" Then

1
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
17 déc. 2010 à 16:55
bonjour

pour que la colonne A recopie également les formules?

Tu la rajoutes :
    If sel.Column = 2 And avant = "" Then
        Cells(sel.Row - 1, 1).Resize(2, 1).FillDown ' colonne A
        Cells(sel.Row - 1, 3).Resize(2, 8).FillDown ' colonnes C:J
    End If
1
Vive la vie!
18 déc. 2010 à 17:52
Super, merci beaucoup.
0
Vive_la_vie!
15 déc. 2010 à 22:08
J'ai testé mais j'ai pas compris?

J'ai essayé d'insérer une ligne sur un petit test...


https://www.cjoint.com/?3mpwhcguERW
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
15 déc. 2010 à 22:15
bonjour

Dans la ligne que tu as inséré tu saisis une valeur dans la cellule de ta colonne A insérée et les formules se mettent en place.

Si ma méthode ne convient pas à l'utilisation, il est possible de le faire autrement.
0
Vive_la_vie!
16 déc. 2010 à 14:34
Est-ce possible de remplacer la colonne A par la B et que les informations de la colonne A se retranscrie également ?
0
Vive_la_vie!
17 déc. 2010 à 13:49
Oui ça fonctionne et pour que la colonne A recopie également les formules? :-) c'est ma dernière question :-)
0