Macro pr copier autant de ligne que la valeur d'une cellule

Résolu
Emi80110 Messages postés 69 Statut Membre -  
Emi80110 Messages postés 69 Statut Membre -

Bonjour à tous :-)

Voici le fichier concerné (qui en réalité est bien plus lourd mais pour l'exemple cela suffira):

https://www.cjoint.com/c/MFnoFvgtekh

J'aimerai si possible savoir s'il existerait une macro qui permettrait de copier cet onglet mais en me copiant chaque ligne le nombre de fois que l'indique la colonne D.

Ce fichier va me permettra d'imprimer le bon nombre d'étiquettes par référence, et 70 000  références sont concernées, donc je cherche un moyen de faire plus simple que le faire à la mano :-)

J'espère que ma demande vous semble claire.

merci d'avance pour votre aide :-)

5 réponses

  1. cousinhub29 Messages postés 1112 Date d'inscription   Statut Membre Dernière intervention   383
     

    Bonjour,

    Si tu utilises une version Excel supérieure ou égale à 2016, tu disposes nativement d'un outil très puissant "Power Query" (téléchargeable gratuitement pour les versions 2013 et 2010 Pro)

    Regarde ce que cela pourrait donner, sachant qu'on peut ensuite supprimer des colonnes, modifier l'ordre des colonnes....

    J'ai modifié ta plage de données en Tableau Structuré (TS), nommé "Tableau1"

    Et dans l'onglet "PQ", le résultat de la requête. Pour mettre à jour, clic droit dans une cellule de cette requête, "Actualiser", ou dans le ruban "Données", "Actualiser tout"

    Bonne apm

    https://www.cjoint.com/c/MFnpn31XaiC


    0
  2. Emi80110 Messages postés 69 Statut Membre 2
     

    1000 mercis pour votre aide !!

    @ccm81 StatutMembre  est-il possible d'avoir le script stp ? "sécurité" oblige au boulot, de ce fait je ne peux qu'ouvrir le fichier sans pouvoir activer les macros, et de ce fait je n'ai pas accès au script.

    Merci beaucoup d'avance :-)

    0
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     

    Bonjour

    Option Explicit
    
    Const FS = "Feuil1"
    Const FB = "Feuil2"
    
    Const lideb = 2
    Const costo = 4
    Const cofin = 8
    
    Public Sub ok()
    Dim liFS As Long, lifinFS As Long, n As Long, k As Long, plage As Range
    Dim liFB As Long
    Application.ScreenUpdating = False
    liFB = lideb
    With Sheets(FS)
      lifinFS = .Cells(Rows.Count, 1).End(xlUp).Row
      For liFS = lideb To lifinFS
        Set plage = .Range(.Cells(liFS, 1), .Cells(liFS, cofin))
        n = .Cells(liFS, costo).Value
        For k = 1 To n
           plage.Copy Sheets(FB).Cells(liFB, 1)
           liFB = liFB + 1
        Next k
      Next liFS
    End With

    à mettre dans un module général (Module 1 par exemple)

    Cdlmnt

    0
    1. Emi80110 Messages postés 69 Statut Membre 2
       

      Bonjour

      merci beaucoup @ccm81 StatutMembre  cela fonctionne parfaitement, je peux passer a un autre dossier maintenant :-)

      0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Emi80110 Messages postés 69 Statut Membre 2
     

    merci beaucoup je teste de suite :-)

    0