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 des lignes en fonction de la valeur d'une cellule


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2014
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Copier des lignes en fonction de la valeur d'une cellule
    Bonjour,

    Besoin d'aide pour un petit projet Excel.
    Alors j'aimerais copier (ou insérer) des lignes de ma feuille1 dans la feuille2 avec pour condition la valeur de ma cellule G. (Copier la même ligne autant de fois que la valeur de la cellule G) Ce pour chaque ligne de ma feuille1.
    Voilà le code que j'essaye d'utiliser, mon problème est de créer une boucle pour descendre d'une ligne dans la feuille 1 après chaque copier.
    J'espère être suffisamment clair pour que vous puissiez m'orienter.
    D'avance merci

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Sub For_X_to_Next_Colonne()
    Dim FL1 As Worksheet, Cell As Range, NoCol As Integer
    Dim NoLig As Long, DerLig As Long, Var As Variant
     Dim i As Integer
     Dim FL2 As Worksheet
     
     
        Set FL1 = Worksheets("Feuil1")
        Set FL2 = Worksheets("Feuil2")
     
     
        DerLig = Split(FL1.UsedRange.Address, "$")(4)
     
     
        NoCol = 7
     
        For NoLig = 2 To DerLig
            Var = FL1.Cells(NoLig, NoCol).Value
     
    Do Until Var = 1
     
        FL1.Activate
        Range(Selection, Selection.End(xlToRight)).Select
        Selection.Copy
        Sheets("feuil2").Select
        Rows("2:1").Select
        Selection.Insert Shift:=xlDown
    Var = Var - 1
    Loop
     
     
        Next
        Set FL1 = Nothing
     
    End Sub
    Fichiers attachés Fichiers attachés
    • Type de fichier : txt 1.txt (706 octets, 253 affichages)

  2. #2
    Membre émérite
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Points : 2 813
    Points
    2 813
    Par défaut
    Bonjour,
    Je ne vois pas trop où est ton problème..
    En faisant une boucle for sur les lignes de la feuil1, tu descends d'une ligne à chquae itération de la boucle.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2014
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    Merci d'avoir pris le temps de regarder.
    C'est la façons d’écrire cette boucle pour la feuille 1 et à quel endroit?
    Ps:je tâtonne sans résultat, mes compétences en VBA sont au niveau bricoleur

    Merci

  4. #4
    Membre émérite
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Points : 2 813
    Points
    2 813
    Par défaut
    Ta boucle m'a l'air bien placée. As-tu testé ton code? Si oui, que donne-t-il? As-tu un message d'erreur? Si oui, lequel et où pointe-t-il dans ton code? Si non, quels sont les résultats une fois que le code a tourné?

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2014
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Le soucis est que je copie uniquement la première ligne dans la feuille 2.
    je n'arrive pas à changer de ligne sur le classeur 1 une fois la boucle "var" finie.

  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 921
    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 921
    Points : 28 907
    Points
    28 907
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Voilà le code que j'essaye d'utiliser, mon problème est de créer une boucle pour descendre d'une ligne dans la feuille 1 après chaque copier.
    Pas vu de code publié dans ta demande. Est-ce si compliqué de faire un copier/coller de ton code présent dans l'éditeur VBA vers la page de ce site en n'oubliant pas de le baliser ?

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2014
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Voila le code




    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Sub For_X_to_Next_Colonne()
    Dim FL1 As Worksheet, Cell As Range, NoCol As Integer
    Dim NoLig As Long, DerLig As Long, Var As Variant
     Dim i As Integer
     Dim FL2 As Worksheet
     
     
        Set FL1 = Worksheets("Feuil1")
        Set FL2 = Worksheets("Feuil2")
     
     
        DerLig = Split(FL1.UsedRange.Address, "$")(4)
     
     
        NoCol = 7
     
     
     
        For NoLig = 2 To DerLig
            Var = FL1.Cells(NoLig, NoCol).Value
     
    Do Until Var = 1
     
        FL1.Activate
        Range(Selection, Selection.End(xlToRight)).Select
        Selection.Copy
        Sheets("feuil2").Select
        Rows("2:1").Select
        Selection.Insert Shift:=xlDown
    Var = Var - 1
    Loop
     
     
        Next
        Set FL1 = Nothing
     
    End Sub

  8. #8
    Expert éminent sénior
    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
    Points : 18 674
    Points
    18 674
    Par défaut
    Bonjour,

    dans le cas d'une copie selon condition(s) , plus simple et plus rapide qu'une boucle forcément lente
    car travaillant cellule par cellule voir du côté des filtres avancés ou élaborés dans Excel !

    ___________________________________________________________________________________________________________
    Je suis Paris, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2014
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    En effet c'est un peu lent. Intéressant comme solution,

    Merci

    Je n'ai pas trouvé mon bonheur avec les filtres avancés le problème est que j'ai des conditions différentes pour chaque ligne
    avec cette action à répéter un grand nombre de fois.

  10. #10
    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 921
    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 921
    Points : 28 907
    Points
    28 907
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je n'ai pas trouvé mon bonheur avec les filtres avancés le problème est que j'ai des conditions différentes pour chaque ligne
    Si tu sais exprimer les conditions dans une structure décisionnelle se trouvant dans une structure répétitive (boucle), il n'y a pas de raison de ne pouvoir les transcrire dans une formule d'excel avec les fonctions ET et/ou OU et ainsi de pouvoir utiliser les filtres avancés d'excel (Méthode AdvancedFilter)

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2014
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Simplement pour ré-explique ma recherche
    Il s'agit de multiplier chaque ligne de la feuille1 par la valeur de la colonne G dans la feuille2.

    Je ne vois pas comment le faire avec la méthode "AdvancedFilter"

    Merci

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

Discussions similaires

  1. Copier coller des lignes en fonction de la valeurs d'une cellule
    Par Tyu38 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/09/2014, 09h38
  2. [XL-2010] Supprimer des lignes en fonction de la valeur de la cellule de deux colonnes
    Par jérémyp8 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 18/07/2013, 09h25
  3. [XL-2010] Colorer des lignes en fonction de la valeur d'une colonne
    Par antoninr dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/01/2013, 13h33
  4. [XL-2010] supprimer des lignes en fonction de la valeur de la cellule d'une colonne
    Par psylo24 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/11/2012, 13h09
  5. Réponses: 5
    Dernier message: 21/12/2011, 08h31

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