IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Copie de formules lors d'insertion de ligne [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 255
    Points : 475
    Points
    475
    Par défaut Copie de formules lors d'insertion de ligne
    Bonjour,

    je cherche des exemples de recopie de formules lors d'une insertion de ligne

    j'ai trouvé pas mal d'exemples (sans les tester) qui expliquent comment copier une formule dans une cellule (par exemple la formule de la cellule de la ligne au dessus) lors de l'insertion d'une ligne par macro VBA

    Mon pb est un peu différent, l'utilisateur fait lui même "Insertion" par la fonction EXCEL d'insertion de ligne
    Je voudrai donc récupérer l'évènement "insertion", j'imagine par un code dans la feuille

    L'enregistreur de macro me donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Selection.Insert Shift:=xlDown
        Range("O302").Select
        Selection.AutoFill Destination:=Range("O302:O303"), Type:=xlFillDefault
        Range("O302:O303").Select
    j'essaye avec de me débrouiller avec ça et "Worksheet_Change(ByVal Target As Range)" sans grand succès

    Est-ce une bonne piste ?
    merci

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 939
    Points : 28 936
    Points
    28 936
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    En utilisant les tableaux structurés, les formules se recopient automatiquement ainsi que d'ailleurs la mise en forme conditionnelle et les validations de données et ce avec ou sans VBA

    A lire pour en savoir plus Apprendre à utiliser les tableaux structurés Excel : création, manipulations et avantages(1)

  3. #3
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 255
    Points : 475
    Points
    475
    Par défaut
    Merci,

    je vais regarder ce que je peux faire avec la mise en forme conditionnelle, cela me semble en effet être du ressort d'Excel sans utiliser VBA

  4. #4
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 255
    Points : 475
    Points
    475
    Par défaut
    bonjour,

    malgré de multiples essais, je n'arrive pas à résoudre ce problème à l'aide de la mise en forme conditionnelle, je ne vois pas comment cela est possible...

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    bonjour Retraité
    Mon pb est un peu différent, l'utilisateur fait lui même "Insertion" par la fonction EXCEL d'insertion de ligne
    Je voudrai donc récupérer l'évènement "insertion", j'imagine par un code dans la feuille
    ben il faut utiliser l'evenement change dans le sheets et comparer les valeur avec le 1 to ancienne xlup de départ avec une variable tableau

    un exemple comme ca vite fait avec le sheets ("Feuil1")
    dans le thisworkbook
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public tablo
    Private Sub Workbook_Open()
    With Sheets("Feuil1")
    tablo = .Range(.Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
    End With
    End Sub
    dans le module de la feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Private Sub Worksheet_Change(ByVal Target As Range)
        controlinsert
    End Sub
    '
    Private Sub controlinsert()
        tabl = ThisWorkbook.tablo
        If Sheets("Feuil1").Cells(Rows.Count, 1).End(xlUp).Row <> UBound(tabl) Then
            For i = LBound(tabl) To UBound(tabl)
                If tabl(i, 1) <> "" And tabl(i, 1) <> Sheets("Feuil1").Cells(i, 1) Then
                    MsgBox "insertion detecté apres la ligne" & i: Exit For
                End If
            Next
        End If
        With Sheets("Feuil1")
            ThisWorkbook.tablo = .Range(.Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
        End With
    End Sub
    le message n'apparaitra pas si tu ajoute après la limite de depart mais si tu insert même a la main le message va se déclencher
    la variable tablo est mise a jour après test
    peut être généralisé a tout les feuille moyennant un stockage de variable tableaux représentant le usedrange de départ de chaque feuille

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 939
    Points : 28 936
    Points
    28 936
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    malgré de multiples essais, je n'arrive pas à résoudre ce problème à l'aide de la mise en forme conditionnelle, je ne vois pas comment cela est possible...
    Que je sache, le sujet de ta question initiale ne porte pas sur la mise en forme mais sur la recopie des formules lors d'une insertion de lignes.

    Construis un tableau structuré (voir le lien référencé dans ma première intervention) avec quatre colonnes avec comme titre ref, Qté, Prix et Valeur
    Entre une référence dans la première ligne des données, une quantité et un prix et ensuite tu fais la multiplication de la quantité et du prix dans la colonne 4 titrée Valeur et ensuite à la ligne suivante, tu entres une nouvelle référence et tu verras que la formule se recopie automatiquement
    Si ensuite tu insères une ligne (raccourci clavier Ctrl & +, tu verras que la formule se recopie.

    Tout cela sans une ligne de VBA

  7. #7
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 255
    Points : 475
    Points
    475
    Par défaut
    Bonjour,

    j'ai mis du temps pour tester vos différentes solutions, j'ai mis en place la solution du post #6 dans un petit fichier de test, c'est celle que je vais mettre en place.

    Se passer de VBA quand on peut est à mon sens une bonne solution

    merci à tous

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 939
    Points : 28 936
    Points
    28 936
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Se passer de VBA quand on peut est à mon sens une bonne solution
    Il me semble aussi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2016] Lien dynamique des formules lors du tri des lignes en mode "partager le classeur"
    Par Pecmastazz dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/03/2019, 20h44
  2. [Toutes versions] Recopie ancienne formule lors de l'insertion d'une ligne dans un tableau
    Par korben8 dans le forum Excel
    Réponses: 8
    Dernier message: 29/10/2015, 17h41
  3. Réponses: 6
    Dernier message: 13/08/2015, 13h36
  4. [XL-2003] insertion de ligne en vba avec copie de formules
    Par Adweuz dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 30/05/2011, 08h40
  5. [XL-2003] VBA - Problème d'insertion de ligne avec copie de formules
    Par oracle7556 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/06/2010, 15h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo