Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
964 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°2125341
akira3100
Posté le 08-02-2012 à 11:20:17  profilanswer
 

        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
mood
Publicité
Posté le 08-02-2012 à 11:20:17  profilanswer
 

n°2125356
86vomito33
Posté le 08-02-2012 à 11:41:40  profilanswer
 

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
n°2125364
akira3100
Posté le 08-02-2012 à 12:18:27  profilanswer
 

Merci  86vomito33 :)

n°2125386
akira3100
Posté le 08-02-2012 à 13:49:58  profilanswer
 

pas d'autres reponses :( je trouve pas la solution.
pourtant ca a l'air trés simple et basique

n°2125392
86vomito33
Posté le 08-02-2012 à 13:57:25  profilanswer
 

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)

n°2125416
akira3100
Posté le 08-02-2012 à 14:46:56  profilanswer
 

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
 

n°2125432
akira3100
Posté le 08-02-2012 à 15:16:15  profilanswer
 

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
 
 
 

n°2125446
akira3100
Posté le 08-02-2012 à 16:11:17  profilanswer
 

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

n°2125580
Hiukho
Posté le 09-02-2012 à 11:44:43  profilanswer
 

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
n°2125582
Hiukho
Posté le 09-02-2012 à 11:59:02  profilanswer
 

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
mood
Publicité
Posté le 09-02-2012 à 11:59:02  profilanswer
 

n°2125587
akira3100
Posté le 09-02-2012 à 12:13:46  profilanswer
 

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.

n°2125589
akira3100
Posté le 09-02-2012 à 12:16:18  profilanswer
 

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

n°2125593
akira3100
Posté le 09-02-2012 à 12:24:14  profilanswer
 

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?

n°2125607
Hiukho
Posté le 09-02-2012 à 12:52:42  profilanswer
 

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
n°2125616
akira3100
Posté le 09-02-2012 à 13:08:35  profilanswer
 

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

n°2125626
Hiukho
Posté le 09-02-2012 à 13:25:45  profilanswer
 

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
n°2125679
akira3100
Posté le 09-02-2012 à 15:30:45  profilanswer
 

merci  bcp hiukho.
j'ai trouvé une autre facon  
 
For Line = 2 To lastRow
        .Range("F" & Line).Value = Date
    Next

n°2125681
akira3100
Posté le 09-02-2012 à 15:33:31  profilanswer
 

sans oublier de declarer lastRow
 
Dim lastRow As Integer

n°2125683
akira3100
Posté le 09-02-2012 à 16:04:40  profilanswer
 

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
n°2125872
akira3100
Posté le 10-02-2012 à 14:49:49  profilanswer
 

no idea concerning my last request?
plzzzzz

n°2126262
akira3100
Posté le 13-02-2012 à 16:54:26  profilanswer
 

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

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 

Sujets relatifs
Macro insertion et copie de lignesRépétition macro
Dans ACCESS, pb références EXCELBesoin d'aide pour faire des moyennes!
Executer une macro dans un classeur deja ouvertaide sur fonction excel
comparer des lignes sur macro excel 
Plus de sujets relatifs à : besoin d'aide (URGENT) pour une macro-EXCEL VBA


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR