VB excel conversion tableau
Résolu/Fermé
badstef
Messages postés
4
Date d'inscription
mardi 29 janvier 2008
Statut
Membre
Dernière intervention
30 janvier 2008
-
29 janv. 2008 à 02:38
badstef Messages postés 4 Date d'inscription mardi 29 janvier 2008 Statut Membre Dernière intervention 30 janvier 2008 - 30 janv. 2008 à 06:04
badstef Messages postés 4 Date d'inscription mardi 29 janvier 2008 Statut Membre Dernière intervention 30 janvier 2008 - 30 janv. 2008 à 06:04
A voir également:
- VB excel conversion tableau
- Trier tableau excel - Guide
- Tableau word - Guide
- Code ascii tableau - Guide
- Liste déroulante excel - Guide
- Tableau croisé dynamique - Guide
5 réponses
badstef
Messages postés
4
Date d'inscription
mardi 29 janvier 2008
Statut
Membre
Dernière intervention
30 janvier 2008
1
30 janv. 2008 à 06:04
30 janv. 2008 à 06:04
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
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
phil232
Messages postés
607
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
31 janvier 2008
178
29 janv. 2008 à 11:47
29 janv. 2008 à 11:47
fais File --> Save As... et choisis le format qui te plait, p.ex. CSV
badstef
Messages postés
4
Date d'inscription
mardi 29 janvier 2008
Statut
Membre
Dernière intervention
30 janvier 2008
1
29 janv. 2008 à 14:44
29 janv. 2008 à 14:44
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
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
phil232
Messages postés
607
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
31 janvier 2008
178
29 janv. 2008 à 15:47
29 janv. 2008 à 15:47
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
ceci me semble le plus efficace :
Private Sub DeleteEmptyCell()
If ActiveSheet.Range("A2") = "" Then
Range("A2").Delete (xlShiftToLeft)
End If
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
badstef
Messages postés
4
Date d'inscription
mardi 29 janvier 2008
Statut
Membre
Dernière intervention
30 janvier 2008
1
29 janv. 2008 à 16:43
29 janv. 2008 à 16:43
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.
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.