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 :

Insertion de lignes avec copie de formule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Études bâtiment
    Inscrit en
    Novembre 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Études bâtiment
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2018
    Messages : 1
    Par défaut Insertion de lignes avec copie de formule
    Bonjour à tous,

    Je suis nouveau sur le forum j'aimerai vous solliciter pour de l'aide sur l'écriture d'une macro, domaine dans lequel je suis novice.

    Le but de cette macro est de pouvoir insérer une ligne dans un tableau, en copiant la ligne du dessous en conservant la mise en forme et les formules mais en supprimant les valeurs.
    Après quelques recherches et quelques bidouillages j'ai maintenant un code qui marche bien mais qui pose un souci.
    Si il n'y a pas de valeurs dans la ligne que je copie, VBA me retourne un message d'erreur :"pas de cellules correspondantes", ce qui est plutôt logique. J'ai donc dû faire une deuxième macro pour effectuer simplement la copie sans la suppression des valeurs.

    Mon but serait donc d'incorporer une condition dans le code pour grouper les deux macros (il détecte automatiquement si il y a des valeurs ou pas et exécute le bon code en conséquence) et ainsi avoir un seul raccourci ce qui fluidifierait grandement la chose.

    Je vous mets les deux codes que j'utilisais jusqu'à présent :

    Pour supprimer les valeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub InserLigne_L_()
    ActiveCell.EntireRow.Insert
    Rows(ActiveCell.Row + 1).Copy Rows(ActiveCell.Row)
    Range(Columns(1), Columns(9)).Rows(ActiveCell.Row).SpecialCells(xlCellTypeConstants, 3).ClearContents 'colonnes dans lesquelles je veux conserver les formules mais pas les valeurs
    Range(Columns(10), Columns(99)).Rows(ActiveCell.Row).ClearContents 'colonnes dans lesquelles je veux tout supprimer
    End Sub
    Pour la simple copie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub InserLigneVide_l_()
    ActiveCell.EntireRow.Insert
    Rows(ActiveCell.Row + 1).Copy Rows(ActiveCell.Row)
    End Sub
    Merci beaucoup pour votre aide en espérant que ma demande soit claire.

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 562
    Par défaut
    Bonjour

    Il suffit de mettre la plage sous forme de tableau structuré et c'est alors le fonctionnement normal : pas besoin de coder...

    Tout ligne ajoutée ou insérée hérite des formats et formules des autres...

    Un peu de lecture http://www.excel-formations.fr/Trucs...Tableaux01.php

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Vinss78 Voir le message
    Pour la simple copie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub InserLigneVide_l_()
    ActiveCell.EntireRow.Insert
    Rows(ActiveCell.Row + 1).Copy Rows(ActiveCell.Row)
    End Sub
    Encore plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub InserLigneVide_l_()
    ActiveCell.EntireRow.Copy
    ActiveCell.EntireRow.Insert
    End Sub
    Pour que ton autre code ne plante pas, vérifier que la selection n'est pas vide.
    Par exemple :

    Pour supprimer les valeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub InserLigne_L_()
    Dim Plage As Range
     
    ActiveCell.EntireRow.Copy
    ActiveCell.EntireRow.Insert
    Set Plage = ActiveCell.EntireRow.SpecialCells(xlCellTypeConstants, 3)
    If Not Plage Is Nothing Then Plage.ClearContents
    End Sub

Discussions similaires

  1. [XL-2007] Insertion de lignes et copie de formule
    Par JPierreM dans le forum Excel
    Réponses: 3
    Dernier message: 26/05/2016, 15h31
  2. [XL-2007] Insertion ligne avec copie certaines cellules ligne précédente
    Par John Parker dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 23/08/2013, 16h42
  3. [XL-2003] Insertion d'une ligne avec recopie des formules ?
    Par OtObOx dans le forum Excel
    Réponses: 6
    Dernier message: 31/03/2012, 22h00
  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