Macro+recopier les formules

Résolu
Vive_la_vie! -  
 Vive la vie! -
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.

7 réponses

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
  2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
  3. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
    1. Vive la vie!
       
      Super, merci beaucoup.
      0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
  6. Vive_la_vie!
     
    Est-ce possible de remplacer la colonne A par la B et que les informations de la colonne A se retranscrie également ?
    0
  7. Vive_la_vie!
     
    Oui ça fonctionne et pour que la colonne A recopie également les formules? :-) c'est ma dernière question :-)
    0