VB excel conversion tableau

Résolu
badstef Messages postés 4 Statut Membre -  
badstef Messages postés 4 Statut Membre -
Bonjour,
j'ais un tableau style cédule de production dans excel 2003:

Work order 10-01-2008 11-01-2008 12-01-2008 etc...
L51000 10 null 20 etc..
L52011 null 1000 200 etc ..

Je veut importé le tableau dans sql mais j'aurais besoin avant de le convertir de cette facon:

Work order date quantity
L51000 10-01-2008 10
L51000 12-01-2008 20
etc...
L52011 11-01-2008 1000
L52011 12-01-2008 200
etc...

Je ne suis pas un expert en vb je suis surtout spécialiste en database sql je ne sais pas par ou commencé pour eliminé les null transposé et dupliquété les étiquette de work order enfin un départ serais grandement aprécié.

Merci d'avance,
Badstef.
Configuration: Windows XP
Internet Explorer 7.0
Excel 2003

5 réponses

  1. badstef Messages postés 4 Statut Membre 1
     
    Bonjour, j'ai recu ce code d'un forum ca fonctionne très bien et c est très simple:

    Merci a tout ceux qui m on aidé.
    Badstef

    ex:
    Sub ConvertTable()

    Dim C As Long
    Dim LastCol As Long
    Dim LastRow As Long
    Dim N As Long
    Dim R As Long
    Dim Rng As Range
    Dim NewWks As Worksheet

    N = 2
    Set NewWks = Worksheets("result")
    ' Set NewWks = Worksheets.Add(After:=Worksheets(Worksheets.Count))
    Set Rng = NewWks.Range("A1:C1")

    With Rng
    .Cells(1, 1) = "Work Order"
    .Cells(1, 2) = "Date"
    .Cells(1, 3) = "Quantity"
    .Font.Bold = True
    .Columns.AutoFit
    End With
    With Worksheets("source")
    'With ActiveSheet
    LastCol = .Cells(1, Columns.Count).End(xlToLeft).Column
    LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
    'LastCol = 10
    'LastRow = 10
    End With
    ' MsgBox (LastRow)
    For R = 2 To LastRow
    For C = 2 To LastCol
    If Not IsEmpty(ActiveSheet.Cells(R, C)) Then
    NewWks.Cells(N, "A") = Worksheets("source").Cells(R, "A") 'Work Order
    'NewWks.Cells(N, "A") = ActiveSheet.Cells(R, "A") 'Work Order
    NewWks.Cells(N, "B") = Worksheets("source").Cells(1, C) 'Date
    NewWks.Cells(N, "C") = Worksheets("source").Cells(R, C) 'Quantity
    N = N + 1
    End If
    Next C
    Next R

    End Sub
    1
  2. phil232 Messages postés 610 Statut Membre 178
     
    fais File --> Save As... et choisis le format qui te plait, p.ex. CSV
    0
  3. badstef Messages postés 4 Statut Membre 1
     
    Bonjour, en fait j'aurai du précisez que le but est de faire un DTS pour une importation automatique dans SQL. De faire une importation avec la feuille direct me cause un problème au niveau de la table car a chaque jours s'ajoute une date donc ma table temporaire dois contenir un champ de plus alors que tous ce qui m'interesse est d'avoir une liste de work order avec la date et la quantité c'est pourquoi je dois avoir une conversion du tableau en premier et c'est la mon problème.....

    Voici un exemple de la feuille en question:

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

    Bon de commande 11-janv 18-janv 25-janv
    L51970 18 29 11
    L51971 10
    L51963 1
    L51978 30
    L51979 23
    C51355 20
    C51356 20
    C51357 10 20
    C5135810 20

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

    et je doit en arrivé avec une table comme cela:

    Bon de Commande date quantité
    C51356 XXXX-XX-XX XX
    .
    .

    Merci encore,
    BadStef
    0
  4. phil232 Messages postés 610 Statut Membre 178
     
    soit on change la façon de travailler soit tu te fais une belle liste de IF..THEN

    ceci me semble le plus efficace :

    Private Sub DeleteEmptyCell()

    If ActiveSheet.Range("A2") = "" Then
    Range("A2").Delete (xlShiftToLeft)
    End If

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

    Posez votre question
  6. badstef Messages postés 4 Statut Membre 1
     
    Bonjour, merci mais encore une fois ce n'est pas la solution:

    Résumé je ne dois pas éffacé les valeur vide car tout la validité de la donné seras perdu un bon de commande doit avoir une quantité a une date donné alors j'ais une cédule avec différent bon de commande a des dates différente pour des quantité différente je doit me faire une table en répétant les bon de commande qui on plusieurs date des quantityé indiqué ex:

    bon de commande; date1 ; date2; date3; date4;date5
    C5000 ;10;null;20;null;30
    .
    .

    alors je veut:

    bon de commande;date;quantité
    C5000;date1;10
    C5000;date3;20
    C5000;date5;30
    etc...

    Dans le DTS sql je vais juste ajouté un identity a chaque ligne et après mon traitement seras facille . Le but étant un tableau finale avec d'autre table déjà dans une bd sql.

    Merci encore pour votre aide.
    BadStef.
    0