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 :

Recopie Formules ligne entiere en dessous [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 43
    Par défaut Recopie Formules ligne entiere en dessous
    Bonjour

    je suis plutôt un adepte des fonctions mais archi nul en VBA

    aussi pouvez-vous m'aider pour réaliser cette macro qui est certainement très simple pour vous

    voir le bout de fichier

    Merci pour vos retours
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Salut,
    Voici un petit code à mettre dans le module de ta feuille (click droit sur l'onglet\voir code)
    Attention, ce n'est qu'une simple copie de la dernière ligne sur la suivante à chaque changement de valeur en D3.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    Dim DerLig As Long 'Variable pour récupérér la dernière ligne utilisée => +1 = où copier
     
    If Target.Address <> "$D$3" Then Exit Sub 'Vérifie si la cellule modifiée est D3; si non on sort
     
    DerLig = Cells(Columns(3).Cells.Count, 3).End(xlUp).Row 'Récupère le numéro de la dernière ligne remplie => A copier'
    Rows(DerLig).Copy Destination:=Cells(DerLig + 1, 1) 'Copie la dernière ligne sur celle du dessous
     
    End Sub
    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 43
    Par défaut
    Merci Fvandermeulen

    mais ce n'est pas tout à fait cela, sans doute me suis-je mal exprimé,

    la ligne se recopie pas de problème

    mais l'adresse n'est pas $D$3 cette cellule n'a rien avoir avec la recopie
    les adresses changes au fur et à mesure de la recopie des lignes

    donc je rentre un nombre en D8 qui devient la première adresse "D8" qui recopie la ligne 8 mais sans la valeur D8

    puis je rentre un second nombre D9 qui devient la nouvelle adresse "D9" qui recopie la ligne 9 mais sans la valeur D9

    puis je rentre un troisième nombre en D10 qui devient la nouvelle adresse "D10" qui recopie la ligne 10 mais sans la valeur en D10
    etc etc....

    si la colonne D est mal placée pour la recopie je peux la mettre en A

    merci

  4. #4
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    J'espère avoir mieux cerné ton problème...essaies ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False 'Désactive les évènements
    Dim DerLig As Long 'Variable pour récupérér la dernière ligne utilisée => +1 = où copier
    DerLig = Cells(Columns(3).Cells.Count, 3).End(xlUp).Row 'Récupère le numéro de la dernière ligne remplie => A copier'
    If Target.Row <> DerLig + 1 Or Target.Column <> 4 Then Exit Sub 'Si la cellule modifiée est différente de la cible on sort
     
    Cells(DerLig, 3).Copy Destination:=Cells(DerLig + 1, 3) 'Copie la dernière ligne de la colonne C sur celle du dessous
    Range(Cells(DerLig, 5), Cells(DerLig, 18)).Copy Destination:=Cells(DerLig + 1, 5) 'Copie la dernière ligne de la plage E:R sur celle du dessous
    Application.EnableEvents = True 'Réactive les évènements
    End Sub
    A+

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 473
    Par défaut
    En gros tu voudrais écrire ta ligne deux fois?

    ou alors donner une valeur à la ligne 3 et recopier le résultat des valeurs à la suite?

    jijie

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 43
    Par défaut
    merci Fvandermeulen

    mais il ne se passe rien

    pourtant je pense que tu as compris

    Jrjie

    "tu voudrais recopier la ligne deux fois"
    oui si tu veux mais sans la valeur rentrée en D

    par exemple
    je souhaites juste en fonction d'une valeur rentrer à partir de D8 qu'il me recopie les formules de la ligne sur la ligne suivante sans la donnée rentrée en D8

    et qu'il repète cela si je rentre une nouvelle valeur en D9

    et ainsi de suite

    ceci afin de m'éviter de recopier avec la poignée des formules sur 10000 lignes et 1000 colonnes avant d'avoir rentrée la moindre valeur dans D

    ce n'est qu'une question de volume déja très conséquent du fichier


    Merci à vous

  7. #7
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Re,
    Le code est basé sur le fichier que tu as joint, si tu le fais sur un autre vérifie bien les colonnes et lignes utilisées.
    Voici les conditions dans mon code:
    La cellule modifiée doit être dans la colonne D et la ligne égale à la dernière ligne remplie +1 (sur base de la colonne C)

    Le fichier avec mon code est en pièce jointe si tu veux essayer avec celui là

    A+

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

Discussions similaires

  1. [XL-2002] Etendre (copie) formule ligne du dessous
    Par lumpys dans le forum Conception
    Réponses: 2
    Dernier message: 17/01/2013, 01h58
  2. [XL-2010] Formule pour recopier une ligne en fonction d'un critère
    Par odsen.s dans le forum Excel
    Réponses: 2
    Dernier message: 01/07/2010, 15h38
  3. [XL-2003] Copier les formules d'une ligne à la ligne d'en dessous
    Par deamonRav dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/04/2010, 14h40
  4. [VBA-E]Insertion ligne + recopie formules certaines cellules
    Par Kaiba dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/05/2007, 15h25
  5. [VBA-E]Insertion ligne avec Recopie Formule
    Par nono le golfeur dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/01/2007, 14h02

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