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

Excel Discussion :

Dupliquer des lignes sous conditions


Sujet :

Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    gestionnaire administratif
    Inscrit en
    Janvier 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : gestionnaire administratif

    Informations forums :
    Inscription : Janvier 2015
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Dupliquer des lignes sous conditions
    Bonsoir

    A partir d'un tableau initial je souhaite obtenir un tableau final dans lequel les lignes seront affectées du code produit correspondant à la commande et dans le cas de commandes multiples chaque code article différent générera une ligne de commande comme suit :
    TABLEAU INITIAL
    Code Client------ N° Commande----Type de commande----CODE PRODUIT------Qte Produit 1----CODE PRODUIT--Qte Produit2
    12345---------------A1QSD--------------Gratuit-----------------------------------------43----------------------------------------------9
    56789---------------P5POI---------------Payant-----------------------------------------56--------------------------------------------786
    34876---------------P9T5ER- -----------Gratuit-------------------------------------------------------------------------------------------5
    23456---------------Z2WXC-------------Payant-------------------------------------------------------------------------------------------2
    34567---------------E3NBV--------------Gratuit------------------------------------------4
    45678---------------R4MLK-------------Payant-------------------------------------------3
    TABLEAU FINAL
    Code Client------ N° Commande----Type de commande----CODE PRODUIT------Qte Produit 1----CODE PRODUIT--Qte Produit2
    12345---------------A1QSD--------------Gratuit---------------------------------------------------------CODE PRODUIT 2-------9
    12345---------------A1QSD--------------Gratuit--------------CODE PRODUIT 1-----43
    56789---------------P5POI---------------Payant---------------------------------------------------------CODE PRODUIT 2------786
    56789---------------P5POI---------------Payant-------------CODE PRODUIT 1-----56
    34876---------------P9T5ER- -----------Gratuit----------------------------------------------------------CODE PRODUIT 2--------5
    23456---------------Z2WXC-------------Payant----------------------------------------------------------CODE PRODUIT 2--------2
    34567---------------E3NBV--------------Gratuit-------------CODE PRODUIT 1------4
    45678---------------R4MLK-------------Payant--------------CODE PRODUIT 1------3

    J'ai créer la macro suivante qui fonctionne partiellement et je patine pour dupliquer les lignes.
    Merci de me venir en aide et surtout de m'indiquer pourquoi je pêche !!!
    Par avance merci pour votre aide

    Sub essai2()
    Sheets("m").Select 'selectionner la feuille

    Dim DébutLigne As Integer
    Dim FinLigne As Integer

    DébutLigne = 2
    FinLigne = Cells(Rows.Count, 1).End(xlUp).Row

    While DébutLigne < FinLigne

    If Range("E" & FinLigne).Value > 0 And Range("G" & FinLigne).Value = 0 Then Range("D" & FinLigne).Value = "CODE PRODUIT 1"
    If Range("E" & FinLigne).Value = 0 And Range("G" & FinLigne).Value > 0 Then Range("F" & FinLigne).Value = "CODE PRODUIT 2"
    If Range("E" & FinLigne).Value > 0 And Range("G" & FinLigne).Value > 0 Then Range("D" & FinLigne).Value = "CODE PRODUIT 1"
    FinLigne = FinLigne - 1

    Wend

    Sheets("m").Select 'selectionner la feuille

    While DébutLigne < FinLigne

    If Range("E" & FinLigne).Value > 0 And Range("G" & FinLigne).Value > 0 Then Rows(A & FinLigne).Select
    Selection.Copy
    Rows(A & FinLigne).Select
    Selection.Insert Shift:=xlDown
    Range("D" & FinLigne).Select
    Application.CutCopyMode = False
    Selection.ClearContents
    Range("E" & FinLigne).Select
    Selection.ClearContents
    Range("G" & FinLigne).Select
    Selection.ClearContents
    Range("F" & FinLigne).Value = "CODE PRODUIT 2"
    FinLigne = FinLigne - 1

    Wend

    End Sub

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    Essaie comme cela
    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
    Sub essai2()
    Dim DébutLigne As Integer, FinLigne As Integer, Ligne As Integer
        Application.ScreenUpdating = False
        With Sheets("m")
            DébutLigne = 2
            FinLigne = .Cells(Rows.Count, 1).End(xlUp).Row
            For Ligne = FinLigne To DébutLigne Step -1
                If .Range("E" & Ligne).Value <> "" And .Range("G" & Ligne).Value = "" Then
                    .Range("D" & Ligne).Value = "CODE PRODUIT 1"
                ElseIf .Range("E" & Ligne).Value = "" And .Range("G" & Ligne).Value <> "" Then
                    .Range("F" & Ligne).Value = "CODE PRODUIT 2"
                ElseIf .Range("E" & Ligne).Value <> "" And .Range("G" & Ligne).Value <> "" Then
                    .Rows(Ligne).Copy
                    .Rows(Ligne + 1).Insert Shift:=xlDown
                    .Range("D" & Ligne + 1).Value = "CODE PRODUIT 1"
                    .Range("G" & Ligne + 1).ClearContents
                    .Range("F" & Ligne).Value = "CODE PRODUIT 2"
                    .Range("E" & Ligne).ClearContents
                    Application.CutCopyMode = False
                End If
            Next Ligne
        End With
        Application.ScreenUpdating = True
    End Sub
    Cordialement.

  3. #3
    Candidat au Club
    Femme Profil pro
    gestionnaire administratif
    Inscrit en
    Janvier 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : gestionnaire administratif

    Informations forums :
    Inscription : Janvier 2015
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Ca fonctionne
    Bonjour

    Je viens de tester ça fonctionne très bien.
    Merci pour votre aide.
    A bientôt.


  4. #4
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    je n'ai pas testé, faute de motivation à recréer ton tableau

    j'ai tout annoté, comme ça si ça fonctionne mal tu peux rectifier facilement

    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 essai2()
    Dim i As Long
     
    With Sheets("m")
        ' on part de la dernière ligne et on remonte
        For i = .Cells(.Rows.Count, 1).End(xlUp).Row To 2 Step -1
            ' on regarde combien de cellules "commandes" sont remplies
            Select Case Application.WorksheetFunction.CountA(.Cells(i, 5), .Cells(i, 7))
                ' aucune n'est remplie
                Case 0
                    ' on supprime la ligne ?
                    .Cells(i, 1).EntireRow.Delete
                ' une seule est remplie
                Case 1
                    ' on écrit le code produit en fonction de la cellule remplie
                    If .Cells(i, 5) <> "" Then
                        .Cells(i, 4) = "CODE PRODUIT 1"
                    Else
                        .Cells(i, 6) = "CODE PRODUIT 2"
                    End If
                ' les deux sont remplies
                Case 2
                    ' on copie la ligne entière
                    .Cells(i, 1).EntireRow.Copy
                    ' on l'insère en dessous
                    .Cells(i + 1, 1).Insert
                    ' on efface les commandes du produit 1 dans la première ligne
                    .Cells(i, 5).ClearContents
                    ' et on écrite "CODE PRODUIT 2"
                    .Cells(i, 6) = "CODE PRODUIT 2"
                    ' ensuite on fait l'inverse sur la ligne du dessous
                    .Cells(i + 1, 7).ClearContents
                    .Cells(i + 1, 4) = "CODE PRODUIT 1"
            End Select
        ' ligne suivante
        Next i
    End With

    EDIT : oups, j'arrive trop tard, ça m'apprendra à pas rafraichir le sujet avant de poster

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

Discussions similaires

  1. [XL-2007] Code VBA pour supprimer des lignes sous condition - problème
    Par PeaceMaker dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/06/2011, 09h09
  2. [XL-2003] déplacement des lignes sous conditions
    Par tazko dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/03/2011, 19h57
  3. Masquer des lignes sous condition
    Par linousxm dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/05/2010, 13h19
  4. copier des lignes sous conditions (dans 2 colonnes différentes)
    Par olive08 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 12/10/2007, 14h44
  5. Suppression des lignes sous condition multiple
    Par baptbapt dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/06/2007, 16h23

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