Menu

Comment dédoubler les lignes en fonction de la valeur d'une cellule dans excel?

- - Dernière réponse : titeufdu89
Messages postés
270
Date d'inscription
samedi 28 juillet 2012
Dernière intervention
9 décembre 2018
- 9 déc. 2018 à 10:14
Bonjour,
Je chercher à dédoubler les lignes en fonction de la valeur d'une cellule dans excel.
Je ne m'y connais absolument pas en programmation. Y a-t-il une petite formule magique?

Si j'ai :
dans la colonne A : auto
dans la colonne E: 3

Je veux dans la même feuille dans la colonne A :
Ligne 1 : Auto
Ligne 2 : Auto
Ligne 3 : Auto

Mes valeurs vont de 1 à 27 dans la colonne E

La question a été posée en août 2013 sur le forum avec ceci comme réponse: http://cjoint.com/?CHpwQLY01vO

Je ne parviens pas à l'ouvrir...

Merci pour votre aide,

Delphine

Configuration: Windows / Firefox 63.0
Afficher la suite 

Votre réponse

5 réponses

Messages postés
270
Date d'inscription
samedi 28 juillet 2012
Dernière intervention
9 décembre 2018
0
Merci
Bonjour Delphine,

De quelle ligne parles tu dans tu dis :
Si j'ai :
dans la colonne A : auto
dans la colonne E: 3

Si j'ai bien compris tu souhaiterais ajouter autant de lignes (en dessus ou en dessous de ta ligne) que le nombre saisie en colonne E sur ta ligne de référence est-ce bien cela?

A bientot

Jc
Bonsoir Jc,

Un grand merci pour ta réactivité.

A part les ligne ou un 1 se trouve dans la colonne E, toutes les lignes vont devoir être dédoublées si c'est un 2 dans la colonne E ou multipliées par 3 si c'est un 3 dans la colonne E.

Ca commence à la ligne 2, la ligne 1 étant une ligne d'en têtes.

Pour répondre à ta question :"Si j'ai bien compris tu souhaiterais ajouter autant de lignes (en dessus ou en dessous de ta ligne) que le nombre saisie en colonne E sur ta ligne de référence est-ce bien cela?".

Je souhaite effectivement ajouter autant de ligne en dessous de ma ligne de référence que le nombre saisie en colonne E de cette même ligne.
Sachant que mon se compose de 484 lignes.

Merci beaucoup pour ton aide!

Delphine
Bonjour Jc,

Est-ce qu'avec les nouveaux éléments, vous pensez que mon problème est solutionnable?

Merci
titeufdu89
Messages postés
270
Date d'inscription
samedi 28 juillet 2012
Dernière intervention
9 décembre 2018
-
Oui ça devrait pouvoir se faire, une petite précision cependant.
Si un ligne 2 en colonne E j'ai 2
faut-il ajouter 2 lignes (soit en ligne 3 et 4) ou juste 1?
La première ligne est-elle compter dans la somme ou non?
Merci
Oh super, j'ai beaucoup d'admiration pour vous.
C'est tellement frustrant d'être handicapée du clavier que je vous suis très reconnaissante.
Il faut que le total de ligne fasse le n° en colonne E.

Si en ligne 2 en colonne E vous avez 2
Il faut ajouter 1 seule ligne, soit la ligne 3 pour arriver au total de 2
La première ligne est bien comptée dans la somme.

Merci!
Commenter la réponse de titeufdu89
0
Merci
Petite précision, dans la colonne E, on ne s'arrête pas à 3, ça va jusqu'à 27 ;-)
Ce n'est pas pas ordre croissant.

Merci
Commenter la réponse de Delphine
Messages postés
270
Date d'inscription
samedi 28 juillet 2012
Dernière intervention
9 décembre 2018
0
Merci
Re,

Voici une proposition :
https://www.cjoint.com/c/HKBo4lnuG7M

Bonne fin de journée

Jc
Bonjour Jc,
Je reçois un message qui me dit qu'il est impossible d'ouvrir le fichier.
J'ai fait un print screen mais n'étant pas "membre" je ne peux pas vous le poster.
Le message dit que le format ou le fichier n'est pas valide :-(
Peut-être que ça irait mieux en me l'envoyant sous un autre format via mon mail? ***@***
Je ne sais pas ce que vous en pensez...
Commenter la réponse de titeufdu89
Messages postés
270
Date d'inscription
samedi 28 juillet 2012
Dernière intervention
9 décembre 2018
0
Merci
Bonjour Delphine,

Nouveau lien :
https://www.cjoint.com/c/HKCiF0dkPxD

A enregistrer avant d'ouvrir et controler que l'extension du fichier est bien .xlsm (sinon le modifier manuellement avant de l'ouvrir). A l'ouverture tu risques d'avoir une alerte de sécurité étant donné que le fichier contient un programme clique sur "activer".

A bientot

Jc
titeufdu89
Messages postés
270
Date d'inscription
samedi 28 juillet 2012
Dernière intervention
9 décembre 2018
-
Bonjour Delphine,

"De façon aléatoire"? C'est à dire? Toutes tes lignes ne sont pas dédoublées le nombre de fois requis en E ? Pour les infos reportées c'est normal, c'est ainsi que j'avais programmé la macro car j'imaginais que tu souhaitais ajouter de nouvelles info sur les autres colonnes vu que tu n'en parlais pas dans ton ennoncé et surtout je voyais pas trop où était ton intérêt d'avoir 27 fois la ligne identique en fait... mais si c'est ce que tu souhaites alors pas de souci ça peut ce modifier assez facilement donc dis moi si tu souhaites copier toutes les colonnes de ta ligne de base ou seulement certaines...

Pour que tu comprenne un peu mieux le fonctionnement de la macro, je l'ai paramétré pour qu'elle analyse chacune des lignes de ton tableau et que lorsque le chiffre en colonne E est supérieure à 1 elle compte le nombre de lignes suivantes ou les valeurs dans la colonne A et est égale à celle de ta ligne de base, puis si le nombre de lignes requis n'est pas atteint elle ajoute celles qui manquent pour arriver au nombre souhaité.

Si ce n'est pas ce que tu souhaitais, ou pas ce qui s'est passé sur ton fichier n'hésite pas à m'en dire un peu plus afin que je puisse modifier ou adapter le code en fonction de tes besoins.

Bonne dimanche,

Jc
titeufdu89
Messages postés
270
Date d'inscription
samedi 28 juillet 2012
Dernière intervention
9 décembre 2018
-
Remplace le code dans le module de ton fichier par celui-ci et fait un autre essai, cette fois ça effectuera une copie de la ligne entière...

Option Explicit
Sub maj()
Dim i, j, k, n, der As Long
Dim cpte, dif, nbr As Integer
Dim nom As String
der = Range("A65536").End(xlUp).Row
For n = 2 To der
    For i = 2 To der
        If Range("E" & i) > 1 Then
        cpte = 0
        nbr = Range("E" & i).Value
        nom = Range("A" & i).Value
            Do While Range("A" & i).Offset(cpte, 0) = nom
            Range("E" & i).Offset(cpte, 0) = Range("E" & i).Value
            cpte = cpte + 1
            Loop
            i = i + cpte - 1
                If cpte < nbr Then
                dif = nbr - cpte
                    Do While dif > 0
                    Rows(i + 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
                    Rows(i).Copy Rows(i + 1)
                    Application.CutCopyMode = False
                    i = i + 1
                    dif = dif - 1
                    der = der + 1
                    Loop
                End If
        End If
    Next i
Next n
End Sub


Jc
Bonsoir Jc,
Je te remercie vraiment pour tous tes efforts.
Chaque ligne de mon tableau représente un vêtement en stock dans une taille bien précise. Le n° dans la colonne E représente le nombre de pièces de ce vêtement dans cette taille (ou le nombre d’occurrence de ce vêtement dans cette taille dans notre stock). Mon tableau excel sert normalement à l'impression des étiquettes pour la boutique de vêtement. Chaque pièce en stock doit avoir son étiquette. Raison pour laquelle les lignes doivent être copiées à l'identique le nombre de fois que le produit est en stock dans une taille x (soit la colonne E). Je te mets un petit apreçu de mon tableau:

Les 4 premières colonnes doivent apparaître sur les étiquettes (marque, nom du vêtement, taille et prix).

Pour que tu ne sois pas perdu, les 4 premiers produits n'ont pas de taille, ce sont des écharpes et bonnets.

Marque nom taille prix_vente Stock Wonderloop
Albwolle SCARF, Grey 46,00 € 2
Albwolle SCARF, Blue 46,00 € 1
Albwolle BEANIE, Grey 50,00 € 1
Albwolle BEANIE, White 50,00 € 1
Alice T-SHIRT Max XS / 36 / 8 78,00 € 1
Alice T-SHIRT Max S / 38 / 10 78,00 € 1
Alice T-SHIRT Max M / 40 / 12 78,00 € 1
Alice T-SHIRT Max L / 42 / 14 78,00 € 1
Alice BLUE SILKSCREENED SWEATER M / 40 / 12 60,00 € 1
Alice SHAURNALLY, T-shirt S / 38 / 10 78,00 € 1
Alice SHAURNALLY, T-shirt M / 40 / 12 78,00 € 1
Alice CROP TOP Black & White XS / 36 / 8 99,00 € 1
Alice CROP TOP Black & White S / 38 / 10 99,00 € 1
Alice CROP TOP Black & White M / 40 / 12 99,00 € 1
Alice BOATNECK TOP Shaurnally S / 38 / 10 78,00 € 2
Alice BOATNECK TOP Shaurnally M / 40 / 12 78,00 € 1
Alice BOATNECK TOP Shaurnally L / 42 / 14 78,00 € 2
Alice BOATNECK Kayleigh M / 40 / 12 99,00 € 1
Alice GREY SILKSCREENED SWEATER XS / 36 / 8 60,00 € 1
Armedangels FREDO, Scarf, Grey melange 79,90 € 3
Armedangels JAMES, T-shirt, Grey melange S / 38 / 10 19,90 € 1
Armedangels JAMES, T-shirt, Grey melange M / 40 / 12 19,90 € 2
Armedangels JAMES, T-shirt, Grey melange L / 42 / 14 19,90 € 2
Armedangels JAMES, T-shirt, Navy S / 38 / 10 19,90 € 1
Armedangels ELMER STRIPES, Shirt, Grey S / 38 / 10 79,90 € 2
Armedangels ELMER STRIPES, Shirt, Grey L / 42 / 14 79,90 € 1
Armedangels ELMER STRIPES, Shirt, Grey XL / 44 / 16 79,90 € 2
Armedangels JOE, Sweatshirt capuchon, Khaki melange S / 38 / 10 79,90 € 1
Armedangels MAX, Beanie, Signal red 39,90 € 3
Armedangels MAX, Beanie, Empire blue 39,90 € 2
Armedangels HILA, Dress Cranes in the sky, Scarlet red XS / 36 / 8 79,90 € 2


J'espère que je me suis mieux exprimée cette fois-ci. En appliquant ta dernière formule, j'ai l'impression qu'il y a une uniformisation des n° de la colonne Stock Wonderloop mais je ne sais pas sur quelle base: Pour certain, sur base du 1er n° de la marque. 2 pour Albwolle, 1 pour une bonne partie d'Alice, 2 pour la 2ème partie d'Alice, 3 pour tous les produits Armedangels...

Ces chiffres ne doivent pas changer. Ils servent de base pour multiplier la ligne dans le nombre de ligne nécessaires.

Voilà, j'espère que c'est plus clair. Encore un grand merci pour ton temps et ta patience!

Delphine
titeufdu89
Messages postés
270
Date d'inscription
samedi 28 juillet 2012
Dernière intervention
9 décembre 2018
-
Bonsoir Delphine,

Oula! Comme tu t’es pris la tête à tout écrire alors que tu aurais pu simplement poster un exemple de ton fichier... mais c pas grave au moins grâce à ça j’ai pu comprendre le problème.
Lorsque tu as exposé ton problème tu ne parlais que des colonnes A et E donc j’ai focalisé la macro sur ces 2 colonnes ci. A pour rechercher le nombre de lignes identiques dans cette cellule et E pour déterminer le nombre de lignes souhaités... mais étant donné que tu as plusieurs type de vêtement dans une même marque et en plus différentes tailles il fallait que je recherche l’exactitude également dans les colonnes B, C et D.
Je te renverrai un code actualisé demain matin.

Bonne soirée

Jc
titeufdu89
Messages postés
270
Date d'inscription
samedi 28 juillet 2012
Dernière intervention
9 décembre 2018
-
Voici un nouveau code à tester :
Option Explicit
Sub maj()
Dim i, j, k, n, der As Long
Dim cpte, dif, nbr As Integer
Dim marque, nom, taille, px As String
der = Range("A65536").End(xlUp).Row
For n = 2 To der
    For i = 2 To der
        If Range("E" & i) > 1 Then
        cpte = 0
        nbr = Range("E" & i).Value
        marque = Range("A" & i).Value
        nom = Range("B" & i).Value
        taille = Range("C" & i).Value
        px = Range("D" & i).Value
            Do While Range("A" & i).Offset(cpte, 0) = marque And Range("B" & i).Offset(cpte, 0) = nom And Range("C" & i).Offset(cpte, 0) = taille And Range("D" & i).Offset(cpte, 0) = px
            Range("E" & i).Offset(cpte, 0) = Range("E" & i).Value
            cpte = cpte + 1
            Loop
            i = i + cpte - 1
                If cpte < nbr Then
                dif = nbr - cpte
                    Do While dif > 0
                    Rows(i + 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
                    Rows(i).Copy Rows(i + 1)
                    Application.CutCopyMode = False
                    i = i + 1
                    dif = dif - 1
                    der = der + 1
                    Loop
                End If
        End If
    Next i
Next n
End Sub




Bonne jourée

Jc
Commenter la réponse de titeufdu89
Messages postés
270
Date d'inscription
samedi 28 juillet 2012
Dernière intervention
9 décembre 2018
0
Merci
Bonjour Delphine,

Pas de réponse...?! Est-ce que le dernier code t'a donné satisfaction...?!?!?
Commenter la réponse de titeufdu89