Ma première macro

Ma première macro - VB/VBA/VBS - Programmation

Marsh Posté le 01-06-2008 à 15:12:08    

Salut!
J'aurais besoin d'aide pour une macro sous excel. J'ai 750 000 pages de doc mais bon, je pense que le plus rapide pour progresser c'est de répondre à des besoins, ça motive plus  :o  
Seulement je pars de 0. Pour ceux qui ont le temps, ce serait cool de me balancer une esquisse de macro pour le truc de naze que j'essaie de faire.
 
Objectif :
J'ai une colonne de noms, un nom pouvant être présent sur plusieurs lignes.
Dans une autre colonne, j'ai des montants.
Mon but est de changer la "justification" (droite/gauche) des cellules des montants à chaque changement de nom. Ainsi, lorsque je consule mon tableau (énorme) à loupe = 75% , je peux facilement sélectionner avec la cellule les montants correspondants à une personne, la somme s'affichant en pas de la page excel.
 
Le résultat à obtenir :
http://pix.nofrag.com/9/9/e/0548a7545e8b4194a818ac1bce51e.jpg
 
Voilà le genre de boucle à laquelle j'avais "pensé" :
 
C2->justifié à gauche
 
for i=3 to nb_lignes
     if A(i) <> A(i-1)
        then justifC(i) <>justifC(i-1)
        else  justifC(i) =  justifC(i-1)
     endif
endfor
 
Bon, ce langage n'existe pas je sais, c'est juste pour essayer de vous faciliter le boulot. :whistle:  
Merci  :bounce:


Message édité par Profil supprimé le 01-06-2008 à 15:13:29
Reply

Marsh Posté le 01-06-2008 à 15:12:08   

Reply

Marsh Posté le 02-06-2008 à 09:59:34    

Salut,à tester,adapter, améliorer


Option Explicit
 
Sub Tst()
Dim LastRow As Long
Dim i As Long
Dim bAlignement As Boolean
Dim sTmp As String
Dim sDep As String
 
    bAlignement = False
    sDep = "xwdseT(èà9-Y(]]ç"
    LastRow = Range("A" & Cells.Rows.Count).End(xlUp).Row
     
    For i = 2 To LastRow
        sTmp = Cells(i, 1)
        If sTmp <> sDep Then
            sDep = sTmp
            bAlignement = Not (bAlignement)
        End If
 
        Select Case bAlignement
            Case True
                Cells(i, 3).HorizontalAlignment = xlLeft
            Case False
                Cells(i, 3).HorizontalAlignment = xlRight
        End Select
    Next i
End Sub

Message cité 1 fois
Message édité par kiki29 le 02-06-2008 à 10:24:53
Reply

Marsh Posté le 02-06-2008 à 10:36:32    

salut,
 
n'oublie pas de faire un tri au debut de ta macro ca pourrai eviter des erreurs.
 
nbl = Range("A6555" ).End(xlUp).Row
Range("A1:C" & nbl).Select
Selection.Sort Key1:=Range("A1" ), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal


Message édité par 86vomito33 le 02-06-2008 à 10:39:56
Reply

Marsh Posté le 02-06-2008 à 11:22:43    

kiki29 a écrit :

Salut,à tester,adapter, améliorer
...macro qui marche...


 
Salut!
Bon, je comprends la macro, pas de souci, en plus ça a l'air de rouler.
Merci beaucoup pour l'effort!  
 
 
@86vomito33:mon tableau est déjà trié par nom, pas de souci de ce côté-là.
 :hello:

Reply

Sujets relatifs:

Leave a Replay

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