Transférer donnés entre feuille Excell en VBA

Résolu
Moonlight Messages postés 5 Statut Membre -  
Moonlight Messages postés 5 Statut Membre -
Bonjour,

Je cherche une macro pour faire le transfère des données triées depuis ma feuille Mater data vers la feuille de chaque work centre.
je vais faire le trie par VBA ça j'ai pas de roblème!!!

Merci

5 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    bonjour

    tests effectués sur maquette très sommaire donc...
    compte tenu du nombre de lignes (20000) recherche de la rapidité d'exécution
    Option Explicit 
    Option Base 1 
    
    Sub repartir_donnees() 
    Dim Lig As Long 
    Dim Nbre As Integer, Wc As Integer, Cptr As Integer, T_wc(), T_lig(), cptr_col As Byte 
    
    Dim start As Single 'essai rapidité  
    start = Timer 
    
    Application.ScreenUpdating = False 
    
    With Sheets("cédule") 
          
         'recherches et collectes des données 
         For Wc = 2 To 54 
              Nbre = Application.CountIf(.Columns("A"), Wc) 
              ReDim T_wc(Nbre, 18) 
              Lig = .Cells.Rows.Count ' départ recherche 
              For Cptr = 1 To Nbre 
                   Lig = .Columns("A").Find(Wc, .Cells(Lig, 1), xlValues, xlWhole).Row 
                   T_lig = .Range(.Cells(Lig, "A"), .Cells(Lig, "R")).Value 
                   For cptr_col = 1 To 18 
                        T_wc(Cptr, cptr_col) = T_lig(1, cptr_col) 
                   Next 
              Next 
              'restitution surn feuille wc en cours 
               With Sheets(Wc) 
                   .Range("A1:R20000").ClearContents 
                   .Range("A1").Resize(Nbre, 18) = T_wc 
              End With 
         Next 
    End With 
    
    Application.ScreenUpdating = True 
    MsgBox ("Répartition dans les Work Centers effectuée en " & Timer - start & " secondes") 
    End Sub 
    


    tu dis, merci d'avance :o)
    Michel
    2
    1. Moonlight Messages postés 5 Statut Membre
       
      WOWWWW :- O

      Ça c'est du code!!!!
      Je ne m'attendais pas, à une telle efficacité J'ai fait quelques ajustements pour adapter le code à ma cédule de production et ca marche!!!
      Il va me rester de re nomer les feuilles par leur propre nom au lieu du WC.

      Merci Beaucoup Michel.

      MO
      0
  2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour,

    Comme tu as l'air de connaitre le VBA, tu crois trouver une macro adaptée à ton besoin sans donner plus de précisions ?
    0
  3. Moonlight Messages postés 5 Statut Membre
     
    Dans mon Master Data j'ai des lignes de données des "Part" triées selon le work centre WC que je veux copier vers la première ligne disponible d'une Feuille dediée à ce WC.
    Voici le code que j'ai écrie mais je trouve pas qu'il est optimal ;( !!!!
    comme il me reste à repere la premièr ligne disponible au lieu d'écrire une autre procedure qui cherche cet indice.

    Merci

    Code:

    ' copier les cellue vers un autre classeur
    Public Sub Copier_donnee()

    Dim ligne_dispo As Integer
    Dim WC As Integer ' Work Center

    For WC = 2 To 54

    Worksheets("Cédule").Activate
    ' chercher le centre de cahrge correspondant
    For i = 1 To 20000 '(Range("A1").SpecialCells(xlCellTypeLastCell).Row + 2)

    If (Cells(i, 1) = WC) Then
    With sheets("Cédule")

    .Range(.Cells(i, 1), .Cells(i, 18)).Copy _
    sheets(WC).Range("A1:Z10000").Cells(i, 1)
    End With
    End If
    Next

    Next WC
    End Sub
    0
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    1/Un coup, tu parles de feuille, après tu parles de classeurs, donc...

    2/"part" c'est quoi ?

    3/ For i = 1 To 20000 '(Range("A1").SpecialCells(xlCellTypeLastCell).Row + 2)
    pourquoi un commentaire dans cette ligne c'est 20000 ou dernière ligne+2 ?

    4/A quoi sert la variable lignedispo ?

    5/ Tu parles de la feuille "master data": on la retrouve où dans ta macro?

    6/ Tu copies dans les feuilles "WC" avec des espaces (variable "i") ?

    7/ tu écris:
    .Range(.Cells(i, 1), .Cells(i, 18)).Copy _
    sheets(WC).Range("A1:Z10000").Cells(i, 1)
    Ca marche, tu es sûr de toi ?

    8/ tu es sûr qu'un tri sur 20000 lignes sera accepté ?

    Bref, pas très encourageant pour te donner un coup de main....

    Alors, exprimes toi clairement, s'il te plait et sans franglais.

    Dans l'attente
    Michel
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Moonlight Messages postés 5 Statut Membre
     
    Merci d'avoir pris la peinne de lire mon message,

    pour les questions

    1/Un coup, tu parles de feuille, après tu parles de classeurs,: j'utilse des feuilles le mot calsseur s'est glisser par erreur

    2/"part" c'est quoi ? c'est des pièces

    3/ For i = 1 To 20000 '(Range("A1").SpecialCells(xlCellTypeLastCell).Row + 2)
    pourquoi un commentaire dans cette ligne c'est 20000 ou dernière ligne+2 ? : ce commentaire pour dÉsactiver la commande qui me cherche la derniere ligne du range de donnée alors je l'ai remplacer par un garnd chiffre (20000)


    4/A quoi sert la variable lignedispo ? oublie la !!


    5/ Tu parles de la feuille "master data": on la retrouve où dans ta macro? , c'est la la feuille ( "Cédule") dans le meme classeur

    6/ Tu copies dans les feuilles "WC" avec des espaces (variable "i") ? :je ne comprend pas ????

    7/ tu écris:
    .Range(.Cells(i, 1), .Cells(i, 18)).Copy _
    sheets(WC).Range("A1:Z10000").Cells(i, 1) :
    Ca marche, tu es sûr de toi ? : oui je l'ai essayer mais si tu une meilleure façon je serai reconnaissant!!

    8/ tu es sûr qu'un tri sur 20000 lignes sera accepté ? :Oui je l'ai faite

    Merci beaucoup
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Pour la 6

      si, par exemple, tu retrouves WC en ligne 4 puis en ligne 100 dans Cédule tu auras un trou de 96 lignes dans la feuille WC au lieu de ligne4 et ligne5

      je ye proposerai un truc demain dans la matinée
      0
    2. Moonlight Messages postés 5 Statut Membre
       
      Merci
      0