besoin d'aide (URGENT) pour une macro-EXCEL VBA

besoin d'aide (URGENT) pour une macro-EXCEL VBA - VB/VBA/VBS - Programmation

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
Reply

Marsh Posté le 08-02-2012 à 11:20:17   

Reply

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


Message édité par 86vomito33 le 08-02-2012 à 11:42:14
Reply

Marsh Posté le 08-02-2012 à 12:18:27    

Merci  86vomito33 :)

Reply

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

Reply

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)

Reply

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
 

Reply

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
 
 
 

Reply

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

Reply

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?


---------------
Feed: http://forum.hardware.fr/hfr/Achat [...] 6855_1.htm
Reply

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)


---------------
Feed: http://forum.hardware.fr/hfr/Achat [...] 6855_1.htm
Reply

Marsh Posté le 09-02-2012 à 11:59:02   

Reply

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.

Reply

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

Reply

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?

Reply

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.


---------------
Feed: http://forum.hardware.fr/hfr/Achat [...] 6855_1.htm
Reply

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

Reply

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


---------------
Feed: http://forum.hardware.fr/hfr/Achat [...] 6855_1.htm
Reply

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

Reply

Marsh Posté le 09-02-2012 à 15:33:31    

sans oublier de declarer lastRow
 
Dim lastRow As Integer

Reply

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 :p 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?


Message édité par akira3100 le 09-02-2012 à 16:05:07
Reply

Marsh Posté le 10-02-2012 à 14:49:49    

no idea concerning my last request?
plzzzzz

Reply

Marsh Posté le 13-02-2012 à 16:54:26    

héééyyyyy cool les mecs. j'ai trouvé la solution.
tout marche nickel :)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed