XL 2019 copie une série de lignes n fois dans une autre feuille selon valeur d'une case de la ligne

fpinheiro

XLDnaute Nouveau
Bonsoir à tous

Fraichement arrivé sur votre site, me voici déjà avec une colle en ce qui me concerne!

Je souhaiterai retravailler une liste actuellement sous cette forme.

Essai 1
1​
2​
Essai 2
2​
5​
Essai 3
3​
6​
Essai 4
4​
3​

Vers cette forme =>

Essai 1
1​
2​
Essai 1
1​
2​
Essai 2
2​
5​
Essai 2
2​
5​
Essai 2
2​
5​
Essai 2
2​
5​
Essai 2
2​
5​
Essai 3
3​
6​
Essai 3
3​
6​
Essai 3
3​
6​
Essai 3
3​
6​
Essai 3
3​
6​
Essai 3
3​
6​
Essai 4
4​
3​
Essai 4
4​
3​
Essai 4
4​
3​


Oui je sais, c'est bizarre comme démarche en gros, pendant que certains condense et synthétise pour regrouper les données ben moi je décide de faire compliquer ...

Bref j'ai déjà commencer à travailler sur un truc mais je n'arrêtes pas décrasser les données sur la feuille 2

Je vous joints le fichier Excel, la macro copier1 donne presque satisfaction c'est à partir de la deuxième que ça coince et donc je ne parle même pas d'une éventuelle suite ...

Bonne réception en attendant vos remarques
 

Pièces jointes

  • Classeur12.xlsm
    18.5 KB · Affichages: 19

soan

XLDnaute Barbatruc
Inactif
Bonjour fpinheiro,

Je te retourne ton fichier modifié.

Tu peux voir que "Feuil2" est entièrement vide ;
va sur "Feuil1" ; fais Ctrl e ➯ travail effectué :)

Note bien qu'après exécution de la macro, tu es sur "Feuil2" ;
si tu retourne sur "Feuil1" pour faire de nouveau Ctrl e, alors
les mêmes lignes de résultat seront en dessous, à partir de
la ligne 17.

À te lire pour avoir ton avis.


soan
 

Pièces jointes

  • Classeur12.xlsm
    17.5 KB · Affichages: 11

fpinheiro

XLDnaute Nouveau
Bonjour @soan et @mapomme

Merci pour votre retour, c'est exactement ça ... mais il ya un hic ...

C'est que vos codes à tous les deux sont juste parfait et que du coup je me rends compte que je suis loin de votre niveau ...
Donc problème, je ne sais pas comment l'adapter à mon véritable cas car j'ai un peu simplifier mon exemple ...
Ce qui est rageant c'est que je butte juste sur une histoire de différence de mise en page et de nombre de colonne ... bref.

je vous retransmets mon fichier Excel qui ressemble plus à la réalité et les lignes colorés en bleu sont les lignes que je veux recopier dans une feuille 2 et la colonne en jaune correspond au valeur n fois à prendre en compte ...
Pour information je pense que ma liste de la feuille 1 ne dépassera jamais 100 lignes mais au cas où prévoir 300 lignes ou bien une valeur variable que je pourrais reconnaitre facilement.
Si vous pouvez me décortiquer votre code également, je pourrais ainsi peut être en apprendre d'avantage et éventuellement réussir à me débrouiller sans trop vous embêter ;-)
En tous cas merci beaucoup à vous deux et j'ai hâte d'avoir votre retour
 

Pièces jointes

  • Classeur12 20201004.xlsm
    28.4 KB · Affichages: 4

soan

XLDnaute Barbatruc
Inactif
Bonjour fpinheiro, mapomme, le fil,

Tu as écrit : « Merci pour votre retour, c'est exactement ça »

Merci beaucoup ! ça fait toujours plaisir quand le demandeur confirme que la solution
proposée lui convient ! :) (ça prouve aussi qu'on n'a pas travaillé pour rien ! :p)


-------------------------------------------------------------------------------------------------

Tu as écrit : « mais il y a un hic ... je me rends compte que je suis loin de votre niveau ... »
mais non, mais non, je suis sûr qu'avec un p'tit peu d'entraînement, tu es à deux doigts
de rejoindre notre niveau. ;) (enfin, presque ... pas vrai, mapomme ? :rolleyes:)

-------------------------------------------------------------------------------------------------

Tu as écrit : « Donc problème, je ne sais pas comment l'adapter à mon véritable cas
car j'ai un peu simplifié mon exemple ... »


Euh... je dirais plutôt que tu as beaucoup simplifié ton exemple ! c'est pourquoi ton
fichier initial est loin d'être représentatif !!! triple résultat : le code VBA de départ ne
convient plus pour ton vrai fichier ; tu n'arrives pas à l'adapter ; et ça nous fait faire
du travail en plus pour le faire à ta place ! c'est des constatations, pas un reproche !
(c'est valable pour tout demandeur qui ne fournit pas un fichier représentatif ; et en
particulier quand la structure est différente du vrai fichier !) ; dans les commentaires
de mon code VBA, tu verras que j'ai souligné toutes les différences entre ton fichier
initial et le nouveau fichier (qui a cette fois la même structure que ton vrai fichier).


-------------------------------------------------------------------------------------------------

Tu as aussi écrit : « Si vous pouvez me décortiquer votre code également, je pourrai
ainsi peut-être en apprendre davantage et éventuellement réussir à me débrouiller
sans trop vous embêter ;-) »


Ben t'en écris des choses ! à défaut d'être à not' niveau pour programmer en VBA,
j'peux t'garantir que t'as l'niveau pour être écrivain ! :p j'crois bien qu'ça va être toi
l'prochain Victor Hugo ! ;) bon, trêve de plaisanterie, c'est parce que t'as écrit ça que
j'ai bien détaillé mon code VBA ; et c'est très bien de ta part de chercher à apprendre
davantage, pour ensuite arriver à te débrouiller par toi-même ! on pourra alors prendre
quelques vacances ; à nos frais, car c'est pas payé par le site XLD ; enfin, j'crois pas... peut-être en rêve ?
en plus des congés payés, j'aurais bien aimé aussi un 13ème mois, plus la cantine gratuite, plus des stock-
options, plus le joli parachute doré que s'offrent certains patrons (même s'ils sont responsables d'avoir
fait couler leur boîte) ; enfin, bref ! bon, j'te rassure : tu ne nous embête pas. (ou si peu ;))


-------------------------------------------------------------------------------------------------

Utilisation du fichier joint :

Tu peux voir que "Feuil2" est vide, à part une ligne d'en-têtes que j'ai rajoutée ;
va sur "Feuil1" ; fais Ctrl e ➯ travail effectué :) (et tu es bien sur "Feuil2")


-------------------------------------------------------------------------------------------------

Ci-joint, ton fichier adapté, avec un code VBA très documenté (j'suis l'Victor Hugo du VBA,
même si Microsoft le sais pas)
; voici le même code VBA, sans les commentaires :
VB:
Option Explicit

Sub Essai()
  Application.ScreenUpdating = 0: Worksheets("Feuil1").Select
  Dim cel As Range, nlm&, dlg&, lg1&, lg2&, n As Byte, i As Byte
  nlm = Rows.Count: dlg = Cells(nlm, 7).End(3).Row
  With Worksheets("Feuil2")
    lg2 = .Cells(nlm, 1).End(3).Row + 1
    For lg1 = 7 To dlg
      Set cel = Cells(lg1, 1): n = cel.Offset(, 6)
      If n > 0 Then
        For i = 1 To n
          cel.Resize(, 13).Copy .Cells(lg2, 1): lg2 = lg2 + 1
        Next i
      End If
    Next lg1
    .Select
  End With
End Sub
soan
 

Pièces jointes

  • Classeur12 20201004.xlsm
    27.2 KB · Affichages: 13

mapomme

XLDnaute Barbatruc
Bonjour @fpinheiro :), @soan :),

Pour ne pas être en reste, voici un document Word comprenant le code commenté de fpinheiro- dupliquer ligne- v2 comm .xlsm (un peu moins de ligne de commentaires que @soan :p )
 

Pièces jointes

  • fpinheiro- dupliquer ligne- v2 comm.docx
    16.9 KB · Affichages: 29
Dernière édition:

fpinheiro

XLDnaute Nouveau
@soan @mapomme

Merci pour toutes ces lumières...

Je vous cache pas que j'ai été rattraper grave par le boulot cette semaine mais en tous cas vos fichiers sont parfait.
Super les commentaires, j'ai plus ka lire à tête reposé et à digérer tous ça
Franchement vous assurez trop grave mais je suis aussi très très largué… donc j'ai du boulot de compréhension et de décorticage.
Sinon désolé aussi pour l'erreur de débutant et le fichiers non représentatif de départ … on ne m'y reprendra plus (ct ma première demande et je pensais pas avoir non plus un niveau aussi poukrave … ;-))
Bref merci pour tous, merci beaucoup … et à très bientôt
 

Discussions similaires

Statistiques des forums

Discussions
315 126
Messages
2 116 484
Membres
112 761
dernier inscrit
delaveau