[Macro]Passer une liste de ligne en colonne

  • Initiateur de la discussion Klendos
  • Date de début
K

Klendos

Guest
Bonjour à tous,

J'ai une table excel qui à cette gueule la :


Code:
Article Opé1 Temps1       Opé2 Temps2        ....  Opé12 Temps 12
xxx        FRA    10          USI    22      ....  TOUR   25
yyy         TOUR  15          ZAY    30     ....   HUR     15
etc..


Et je voudrais arriver à qqch comme cela :



Code:
Article   N° Opé  Opé   Temps
xxx       10        FRA    10
xxx       20        USI    22
.....
xxx       120     TOUR   25
yyy        10       TOUR  15  
yyy        20       ZAY     30
....
yyy        120      HUR    15

J'ai fais une macro qui ne met en forme que la premiére ligne du fichier 1, et je n'arrive pas à la répéter pour toutes les autres ligne.


Est-ce que qqun peux m'aider pour arriver à mes fins???

Merci d'avance!

Message édité par: klendos, à: 31/08/2005 14:05

Message édité par: klendos, à: 31/08/2005 14:50
 
K

Klendos

Guest
Voici la macro que j'ai faite, mais je n'arrive pas à la se repéter sur chacune des ligne de la liste 1.

Code:
Range('A2').Select
    Windows('DUBILAODB.xls').Activate
    Range('A2').Select
    Selection.Copy
    Windows('InterfaceGamme.xls').Activate
    ActiveSheet.Paste
    Range('C2').Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = '10'
    Range('C3').Select
    ActiveCell.FormulaR1C1 = '20'
    Range('C4').Select
    ActiveCell.FormulaR1C1 = '30'
    Range('C5').Select
    ActiveCell.FormulaR1C1 = '40'
    Range('C6').Select
    ActiveCell.FormulaR1C1 = '50'
    Range('C7').Select
    ActiveCell.FormulaR1C1 = '60'
    Range('C8').Select
    ActiveCell.FormulaR1C1 = '70'
    Range('C9').Select
    ActiveCell.FormulaR1C1 = '80'
    Range('C10').Select
    ActiveCell.FormulaR1C1 = '90'
    Range('C11').Select
    ActiveCell.FormulaR1C1 = '100'
    Range('C12').Select
    ActiveCell.FormulaR1C1 = '110'
    Range('C13').Select
    ActiveCell.FormulaR1C1 = '120'
    Range('D2').Select
    ActiveWindow.SmallScroll Down:=-3
    Windows('DUBILAODB.xls').Activate
    Range('C2').Select
    Selection.Copy
    Windows('InterfaceGamme.xls').Activate
    ActiveSheet.Paste
    Windows('DUBILAODB.xls').Activate
    Range('H2').Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows('InterfaceGamme.xls').Activate
    Range('D3').Select
    ActiveSheet.Paste
    Range('D2:D13').Select
    Application.CutCopyMode = False
    Selection.AutoFill Destination:=Range('D2:E13'), Type:=xlFillDefault
    Range('D2:E13').Select
    Range('A2').Select
    Selection.AutoFill Destination:=Range('A2:A13'), Type:=xlFillCopy
    Range('A2:A13').Select
    Range('G2').Select
    Windows('DUBILAODB.xls').Activate
    ActiveWindow.SmallScroll Down:=-9
    Range('E2').Select
    Selection.Copy
    Windows('InterfaceGamme.xls').Activate
    ActiveSheet.Paste
    Windows('DUBILAODB.xls').Activate
    Range('J2').Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows('InterfaceGamme.xls').Activate
    Range('G3').Select
    ActiveSheet.Paste


Voili voilou!!
 
K

Klendos

Guest
Voici la macro que j'ai faite :


Code:
Sub transpose()

nbcol = 3  ' nombre de couples de données à lire  ope/tps
nbproduit = 4 ' nombre de produits

celluledepart = 'C19' ' cellule de départ du tableau à remplir
cellulealire = 'A2'  ' cellule de départ des données à parcourir


For prod = 0 To nbproduit
  For i = 0 To nbcol - 1
    Range(celluledepart).Offset(i + (prod * nbcol), 0).Value = Range(cellulealire).Offset(0 + prod, 0).Value
    Range(celluledepart).Offset(i + (prod * nbcol), 1).Value = 10 + 10 * i
    Range(celluledepart).Offset(i + (prod * nbcol), 2).Value = Range(cellulealire).Offset(0 + prod, 2 + (5 * i))
    Range(celluledepart).Offset(i + (prod * nbcol), 3).Value = Range(cellulealire).Offset(0 + prod, 4 + (5 * i))
  Next i
Next prod

End Sub


Mais je n'arrive à faire pointer cellualire et celluledepart dans 2 feuilles différentes.

Merci pour votre aide.
 
K

Klendos

Guest
Voici au final ma macro:

Code:
Sub transpose()

nbcol = 12  ' nombre de couples de données à lire  ope/tps
nbproduit = 18 ' nombre de produits


nomclasseur = 'DUBILAODB1.xls' ' nom du classeur où se trouve les données
nomfeuille = 'Feuil1' ' nom de la feuille

celluledepart = 'C19' ' cellule de départ du tableau à remplir
cellulealire = 'A2'  ' cellule de départ des données à parcourir


For prod = 0 To nbproduit
  For i = 0 To nbcol - 1
    Range(celluledepart).Offset(i + (prod * nbcol), 0).Value = Workbooks(nomclasseur).Worksheets(nomfeuille).Range(cellulealire).Offset(0 + prod, 0).Value
    Range(celluledepart).Offset(i + (prod * nbcol), 1).Value = 10 + 10 * i
    Range(celluledepart).Offset(i + (prod * nbcol), 2).Value = Workbooks(nomclasseur).Worksheets(nomfeuille).Range(cellulealire).Offset(0 + prod, 2 + (5 * i))
    Range(celluledepart).Offset(i + (prod * nbcol), 3).Value = Workbooks(nomclasseur).Worksheets(nomfeuille).Range(cellulealire).Offset(0 + prod, 4 + (5 * i))
  Next i
Next prod

End Sub

Merci à tous pour votre aide.
 

Discussions similaires

Réponses
17
Affichages
2 K

Statistiques des forums

Discussions
299 703
Messages
1 978 592
Membres
206 298
dernier inscrit
yannick451