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 :

copier vers le bas une ligne de formule tant que


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 30
    Par défaut copier vers le bas une ligne de formule tant que
    Bonjour,
    Je précise que je suis débutant
    je souhaite réaliser une macro permettant de recopier vers le bas une ligne de formule tant qu'il ya des valeurs dans la colonne d'une autre feuille.
    par exemple : feuille1 "données" début des valeurs en A2 jusque indéfini
    feuille 2 "calculs" première ligne de calcul de A11 à L11
    il faut donc que ligne de calcul de A11 à L11 de la feuille "calculs" soit recopier vers le bas tant qu'il ya des valeurs dans la colonne A de la feuille "données"
    j'espère avoir été clair.
    voila ce que j' ai essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    sub Macro1()
    '
    ' Macro1 Macro
    '
    Dim DerLig As Long
        With Worksheets("Données brutes")
            DerLig = .Range("A2").End(xlDown).Row
        Range("A11:L11").Select
        Selection.AutoFill Destination:=Range(Cells(11, 1), Cells(65536, 12).End(xlUp)).Row, Type:=xlFillDefault
        End With
     
    '
     
    End Sub
    Merci pour votre aide.

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 855
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 855
    Par défaut
    Bonjour,

    Il faut que tu précises si tu souhaites que la copie soit effectuée sur une plage qui comprend le même nombre de lignes que celle définie avec la colonne A de la feuille "données".
    Exemple :
    La plage en colonne A de la feuille "données" est A2:A21, soit 20 lignes.
    La copie devra être réalisée sur la plage A11:L30, soit 20 lignes.

    On peut interpréter ta demande différemment :
    la copie doit être effectuée sur une plage qui est limitée par la dernière ligne renseignée de la colonne A de la feuille "données".
    Exemple :
    La plage en colonne A de la feuille "données" est A2:A21, soit 20 lignes.
    La copie devra être réalisée sur la plage A11:L21, soit 11 lignes.

    Cordialement.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 30
    Par défaut
    Bonjour gFZT82,

    effectivement il faut que la copie soit effectuée sur une plage qui comprend le même nombre de lignes que celle définie avec la colonne A de la feuille "données" (sauf que le nombre de lignes ne sera jamais le même).

    merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    dans ton code, j'ai quelques incompréhension:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With Worksheets("Données brutes")
    mai tu l'utilise que pour connaitre sa dernière ligne?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerLig = .Range("A2").End(xlDown).Row
    tu recherche la dernière ligne mais tu ne l'utilise pas?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A11:L11").Select
    tu sélectionne une plage mais pourquoi?
    en plus évite le select
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Range("A1").Select
    Selection.Copy
    Range("A2").Select
    ActiveCell.PasteSpecial xlPasteAll
    alors que tu peux faire ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1").Copy Range("A2")

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut à tester
    Bonjour.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Feuil2.[A11:L11].AutoFill Feuil2.Range("A11:L" & Feuil1.Cells(Rows.Count, 1).End(xlUp).Row)

    Si la feuille 2 est active, le code se simplifie ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        [A11:L11].AutoFill Range("A11:L" & Feuil1.Cells(Rows.Count, 1).End(xlUp).Row)
    Enfin s'il faut conserver le même nombre de lignes, il suffit d'ajouter 9 à .Row

    Si les noms objets Feuil1 / Feuil2 (CodeName) ne correspondent pas aux feuilles,
    soit les vérifier dans l'environnement VBA puis les corriger
    soit les remplacer par Worksheets("nom de la feuille")


    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  6. #6
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 855
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 855
    Par défaut
    Re,

    Ou exprimé différemment
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Copier()
    Dim NbLignes As Long
        With Worksheets("données")
            NbLignes = .Range("A2:A" & .Range("A2").End(xlDown).Row).Count
        End With
        With Worksheets("calculs")
            .Range("A11:L11").AutoFill Destination:=.Range("A11:L11").Resize(NbLignes), Type:=xlFillDefault
        End With
    End Sub
    Cordialement.

  7. #7
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    J'ai bien peur que la variable NbLignes calculée avec la propriété .Count représente le nombre de cellules de la plage source …

    En utilisant .End(xlDown), il ne faut pas de cellule vide parmi les saisies de la colonne sinon manqueront les lignes suivantes …

  8. #8
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 855
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 855
    Par défaut
    Bonjour Marc-L,
    J'ai bien peur que la variable NbLignes calculée avec la propriété .Count représente le nombre de cellules de la plage source …
    C'était l'objet de ma première question et lebowsky60 a répondu :
    il faut que la copie soit effectuée sur une plage qui comprend le même nombre de lignes que celle définie avec la colonne A de la feuille "données"

    En utilisant .End(xlDown), il ne faut pas de cellule vide parmi les saisies de la colonne sinon manqueront les lignes suivantes …
    lebowsky60 a dit :
    je souhaite réaliser une macro permettant de recopier vers le bas une ligne de formule tant qu'il y a des valeurs dans la colonne d'une autre feuille.
    Tout est question d'interprétation

    Cordialement.

  9. #9
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 30
    Par défaut
    Merci beaucoup pour votre aide, effectivement la solution de marc fonctionnait mais il manquait les dernières lignes. Avec votre solution gFZT82 ça fonctionne nickel
    Encore merci

  10. #10
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Non là ce n'est pas un problème d'interprétation, je suis un peu passé à côté !

    J'ai mal lu la proposition de gFZT82 … car effectivement un .Count sur une colonne est égal au nombre de lignes …
    Autant pour moi !

    Pourtant lebowsky60 en suivant mon indication d'ajouter 9 à .Row, cela doit le faire …

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 27/09/2013, 16h43
  2. Etirer une ligne de formules vers bas
    Par Mag555 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 23/08/2011, 16h13
  3. [XL-2007] copier coller et sauter une ligne à chaque fois
    Par alexandrek dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 15/02/2011, 17h35
  4. [XL-2003] copier des valeur d'une ligne selectionnées
    Par bosk1000 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 12/02/2010, 07h58
  5. [XL-2003] copier coller valeur en une ligne
    Par bosk1000 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/07/2009, 02h16

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