besoin d'aide (URGENT) pour une macro-EXCEL VBA - VB/VBA/VBS - Programmation
Marsh Posté le 08-02-2012 à 11:41:40
bonjour,
1) regarde le post de abder92
2) enregistreur de macro
3) regarde le post de abder92
voila ca va t'aider
Marsh Posté le 08-02-2012 à 13:49:58
pas d'autres reponses je trouve pas la solution.
pourtant ca a l'air trés simple et basique
Marsh Posté le 08-02-2012 à 13:57:25
generalement tu proposes un code (avec les indos que je t'ai donné) et puis apres on en parle
on fait pas le travail pour les autres (je parle pour moi en tt cas)
Marsh Posté le 08-02-2012 à 14:46:56
oui oui vous avez raison .
en faite j'ai commencé comme ca :
pour la date puisque j'ai pas de solution j'ai mis la date pour 20 lignes et les bordures et trames pour 20 lignes aussi car je sais d'avance que le tableau que ej vais avoir aprés convertir les données de bases ne depasseront pas 20 lignes, mais bon j'ai voulu que j'ai un moyen pour que VBA ne le fait que pour les cellules nons vides
Sub Recap()
'declaration variables
Dim Counterparty As String
Dim Cel1 As Range
'convertir les données en un tableau excel
Range("A1:A43" ).TextToColumns Destination:=Range("A1" ), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, Semicolon:=True
Range("B1" ).Value = "ISIN"
Range("E1" ).Value = "Price"
Range("F1" ).Value = "Trade date"
Range("G1" ).Value = "Value date"
Range("F2:F20" ).Value = Date
Set Cel1 = Range("A1:G1" )
With Cel1.Font
.Bold = True
.Italic = True
End With
'couleur de fond
Range("A1:G1" ).Interior.Color = RGB(255, 255, 153)
Range("B1:G1" ).HorizontalAlignment = xlCenter
'ajuster automatiquement la largeur des cellules
Workbooks("recap.csv" ).Worksheets("recap" ).Columns("A:G" ).EntireColumn.AutoFit
Range("A1:G20" ).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
End With
End Sub
Marsh Posté le 08-02-2012 à 15:16:15
ah j'ai oublié quelque chose :
voila le code :
Sub Recap()
'declaration variables
Dim Counterparty As String
Dim Cel1 As Range
'convertir les données en un tableau excel
Range("A1:A43" ).TextToColumns Destination:=Range("A1" ), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote,Semicolon:=True$$
'supprimer les colonnes I--P
Columns("I:P" ).Delete Shift:=xlToLeft
'effacer le contenu de la colonne G
Range("G1:G6" ).Clear
'inserer colonne
Columns(6).EntireColumn.Insert
Range("B1" ).Value = "ISIN"
Range("E1" ).Value = "Price"
Range("F1" ).Value = "Trade date"
Range("G1" ).Value = "Value date"
Range("F2:F20" ).Value = Date
Set Cel1 = Range("A1:G1" )
With Cel1.Font
.Bold = True
.Italic = True
End With
'couleur de fond
Range("A1:G1" ).Interior.Color = RGB(255, 255, 153)
Range("B1:G1" ).HorizontalAlignment = xlCenter
'ajuster automatiquement la largeur des cellules
Workbooks("recap.csv" ).Worksheets("recap" ).Columns("A:G" ).EntireColumn.AutoFit
Range("A1:G20" ).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
End With
End Sub
Marsh Posté le 08-02-2012 à 16:11:17
donc tout est bon ici sauf que l'ennui que c'est nul de vouloir mettre 20 date dans la colonne F ainsi que des bordures et trames pour 20 lignes .
svp aidez moi, je vous en serai trés reconnaissant.
ca me permettra d'apprendre et c'est ca le but aussi
MERCI
Marsh Posté le 09-02-2012 à 11:44:43
la tristesse du stage en finance sans maitrise de VBA
ca va bien les gov en ce moment?
Marsh Posté le 09-02-2012 à 11:59:02
pour la date, tu fais un
i=0
while cells(i,1)<>""
cells(i,6)=date
wend
en gros tu fais en fonction de la colone de ton ISIN, parce que pas d'ISIN pas de date. si ta ligne n'a pas de date, ton code s'arrete,
l'inconvenient, c'est qu'il faut pas que tu aies une ligne vide (sans parler de l'infinit loop si tu rates ton code)
Marsh Posté le 09-02-2012 à 12:13:46
merci bcp, je vais essayer ca !!
en plus mon job c'est de faire des deals aussi sur le marché , qui necessite en aucun cas l'utilisation de VBA, ce que je veux faire c'est un plus.
Marsh Posté le 09-02-2012 à 12:16:18
en gros je fais pas de developpement ! mais c'est une chose qui est trés interessante et j'esaie de faire des trucs lorsque j'ai le temps pour ca. un broker n'a pas besoin de connaissance en VBA ce que je fais maintenant
Marsh Posté le 09-02-2012 à 12:24:14
le code ne marche pas et lorsque je fais debug, il marque le fond jaune sur While Cells (i,1) <> ""
c'est a dire que le probleme vient de cette ligne.
t'as une idée?
Marsh Posté le 09-02-2012 à 12:52:42
t'as defini
dim i as integer?
change i=1
je ne sais plus si cells part de (0,0) ou de (1,1)
idealement tu dois nomer tes cellules et utiliser des offset.
Marsh Posté le 09-02-2012 à 13:08:35
j'ai fait ca , mais toujours probleme : Run-time error '1004'
application-defined or object-defined error
Sub Recap()
'declaration variables
Dim counterparty As String
Dim Cel1 As Range
Dim i As Integer
'convertir les données en un tableau excel
Range("A1:A43" ).TextToColumns Destination:=Range("A1" ), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, Semicolon:=True
Range("B1" ).Value = "ISIN"
Range("E1" ).Value = "Price"
Range("F1" ).Value = "Trade date"
Range("G1" ).Value = "Value date"
Set Cel1 = Range("A1:G1" )
With Cel1.Font
.Bold = True
.Italic = True
End With
'ajuster automatiquement la largeur des cellules
Workbooks("test.csv" ).Worksheets("test" ).Columns("A:G" ).EntireColumn.AutoFit
'couleur de fond
Range("A1:G1" ).Interior.Color = RGB(255, 255, 153)
Range("B1:G1" ).HorizontalAlignment = xlCenter
'bordures et trames
Range("A1:G20" ).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
End With
i = 1
While Cells(i, 1) <> ""
Cells(i, 6) = Date
Wend
End Sub
Marsh Posté le 09-02-2012 à 13:25:45
i=10 '(numero de la ligne de ton debut de tableau)
While Cells(i, 2).Value <> "" '2 pour le numero de ta colone ISIN
Cells(i, 4).Value = "x" '4 pour le numero de ta colone date
i = i + 1
Wend
Marsh Posté le 09-02-2012 à 15:30:45
merci bcp hiukho.
j'ai trouvé une autre facon
For Line = 2 To lastRow
.Range("F" & Line).Value = Date
Next
Marsh Posté le 09-02-2012 à 16:04:40
en faite la j'ai reussit a tout faire, j'ai créer un bouton qui importe tous les données du logiciel sur excel , aprés, il fait la mise en forme , aprés il scinde le tableau en deux selon la contrepartie et il met chaque tableau dans une page a part sur excel.
la derniére etape qui me manque et que j'ai pas reussit a faire car je suis fatigué la c'est d'envoyer le contenu de chaque page a une adresse mail via outlook express.
sachant le truc c'est que sans vba , normalement je copie coller chaque tableau dans la page d'envoi depuis excel a outlook .
c'est a dire que je ne veux pas envoyer sous forme de piece jointe.
Est ce que vous avez une idée SVP?
Marsh Posté le 13-02-2012 à 16:54:26
héééyyyyy cool les mecs. j'ai trouvé la solution.
tout marche nickel
Marsh Posté le 08-02-2012 à 11:20:17
A...........................B................................C...............D..............E................F............. G..........
Numeros..........................code.....................Role.........Quantity.......Price...........Date......Counterparty
TB 0.00 10/12...............BE0312684534..............Seller............30............110.............................A........
TB 0.00 05/12...............BE0312679484..............Seller............20............120.............................A.......
TR 3.25 04/16...............FR0010288357..............Buyer............49............105.............................B.......
TR 3.75 04/21...............FR0010192997..............Seller............25.............80..............................B.......
TR 3.25 10/21...............FR0011059088..............Buyer............10.............99..............................B.......
Bonjour tout le monde, je suis novice en VBA et la j'ai vraiment vraiment besoin de votre aide .
c'est en faite une macro que je dois realiser pour la boite pour qui je bosse.
en faite la macro qui sert a presenter le tableau , je l'ai faite .
ce que j'ai pas reussit a faire et dois se derouler comme suit sur vba
1) inserer la date automatiquement dans la colonne F de maniere que l'insertion s'arrete toujours dans la derniere cellule non vide , c'est a dire demander a VBA de identifier la derniere ligne non vide pour que l'insertion de la date se poursuit jusqu'a la derniére ligne non vide
2) mettre les bordures et trames pour en faire un tableau . la meme chose , demander a VBA de faire ces bordures et trames que pour les cellules non vides .
3) une fois on a la date inseré ainsi que les bordures et trames, demander a VBA de separer le tableau crée en 2 selon la contre partie (colonne G).
c'est a dire demander a VBA de regarder cette colonne et une fois il tombe sur un chiffre different de A , il separe le tableau en 2 de facon qu'on a au final un tableau avec contrepartie A et un autre tableau avec la contre partie B
Merci beaucoup .
j'en ai vraiment besoin pour reussir mon boulot .
Aidez moi SVP
Message édité par akira3100 le 08-02-2012 à 11:47:35