Rapport de message :*
 

Re: Traitement de données automatisé

Titre du sujet : Re: Traitement de données automatisé
par Megaolive le 17/07/2007 15:41:56

Rebonjour à vous,

Désolé de te décevoir, mais je suis de Toulouse et non pas du pays des tabernacles, nom d'un cassoulet !! :p

j'ai bien relu la proposition précédente et j'étais arrivé de par ailleur à un code un peu modifié qui prend en compte certaines des remarques formulées :

J'avais eu de par ailleurs le conseil sur l'"option explicit".
Cependant la proposition m'apporte des éléments complémentaires telles que l'utilisation des "bytes" comme type de constante.

J'ai également décomposé mon module en fonctions qui sont appelés dans la Sub Main()

Voila mon code final.
Je reste bien sur preneur de toute remarques que vous auriez sur le code suivant :


Option Explicit


'Declaration des variables publiques utilisées dans plusieurs sousfonctions
Public f_dest As Worksheet
Public CommentClean As Range
Public CommentArea As Range

Deroulement général et appel des sous fonctions
Sub Main
()

Clean

Generate

SortComments

FilterComments

End Sub

' Nettoyage et suppression des filtres de la zone de synthèse
Sub Clean()
    Set f_dest = Worksheets("FTE=> Delta Target & Overrun")
    Set CommentClean = f_dest.Range("C37:E91")


        f_dest.ShowAllData
        CommentClean.ClearContents
End Sub
Tri sur le mois de la zone de synthèse
Sub SortComments
()
    
Set f_dest Worksheets("FTE=> Delta Target & Overrun")
    
Set CommentArea f_dest.Range("C36:E91")
           
        
CommentArea.Sort Key1:=Range("D37"), Order1:=xlAscendingHeader:=xlGuess_
        OrderCustom
:=5MatchCase:=TrueOrientation:=xlTopToBottom
        
            Application
.Run "TM1RECALC"
            
On Error GoTo Error
            
Exit Sub
Error
:
            
MsgBox ("Please connect To Fera Server")

            
Resume Next

 End Sub
' Filtre sur les mois compris entre sélection start et end Month
Sub FilterComments()
    Set f_dest = Worksheets("FTE=> Delta Target & Overrun")
    Set CommentArea = f_dest.Range("C36:E91")
        
        CommentArea.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
        Sheets("Comments Mngt").Range("G5:G17"), Unique:=False
 End Sub
 
'
Definition de la plage Source
'Definition de la plage Cible
'
Generation de la liste de commentaires synthétiquesur trois colonnes AnnéemoisSite+Centre+Comment
Sub Generate
()

    
'Init des variables Feuille & Range source et destination
    Dim f_comm As Worksheet
    Dim cell As Range
    Dim r_dest As Integer

    '
Initialisation de la Variable Ligne d'arrivée
    r_dest = 37

    '
Initialisation des cellules sources
    
Const r_peri 12
    
Const r_pays 13
    
Const c_dept 3
    
Const r_Year 5
    
Const c_Year 4

    
'Affectation de valeurs aux variables "définition des feuilles"
    Set f_comm = Worksheets("DELTA Comments")
    Set f_dest = Worksheets("FTE=> Delta Target & Overrun")

        Application.Run "TM1RECALC"

          '
Test sur cellule de la zone source
        
For Each cell In f_comm.Range("D14:BW30")
             If 
cell.Text <> "" Then

                
' Definition de la valeur à reporter sur la feuille destination en fonction des références de la zone source
                 f_dest.Cells(r_dest, 3).Value = f_comm.Cells(r_Year, c_Year).Text
                                        
                 f_dest.Cells(r_dest, 4).Value = f_comm.Cells(r_peri, cell.Column).Text

                 f_dest.Cells(r_dest, 5).Value = f_comm.Cells(r_pays, cell.Column).Text & " - " & _
                                f_comm.Cells(cell.Row, c_dept).Text & " - " & _
                                        cell.Text
                                        
            '
Ligne de destination 1 pour décaler vers le bas au fur et à mesure des recopie Ca c'est génial :p)
             r_dest = r_dest + 1
 
            '
Fin de SI
             End 
If
 
        
'Redemarrage en haut de boucle
        Next
   
  
End Sub