VB excel conversion tableau

Résolu
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. fais File --> Save As... et choisis le format qui te plait, p.ex. CSV
    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
      1. 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
        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.
          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