Se connecter avec
S'enregistrer | Connectez-vous

Calcul de sommes selon 3 conditons imbriques

Dernière réponse : dans Programmation
Expert Programmation

bonjour a tous !

je vous expose mon probleme:j'ai un tableau excel dans lequel il y a trois colonnes (et bien d'autres!! ) dont je me sert pour calculer des sommes intitulees : montant , maturity date et classification.
je m'explique :
je souhaite que pour chaque ligne du tableau :
- il fasse un tri selon l'ecart entre la date entree par l'utilisateur (inputbox) et celle de la colonne maturit date
- que parmis ces groupes de diference il fasse un tri par type de classification (colonne classification)
- puis que pour tous ces sous groupes il fasse un somme pour les montant >= 0 et ceux < 0

voila !!
au total je dois avoir qqch comme 126 sommes pour les >0 et 126 pour les < 0. et je me vois mal declarer 252 variables et faire autant de boucles IF !!!

Mon reel probleme est le suivant :
je connais la premiere ligne (fstrow) et la derniere ligne(lstrow) du tableau.
je sais faire un tri par cassification puis dans ces classification faire un somme pour les + et une somme pour les - et d'autre part je sais faire le calcul de difference entre les dates mais je n'arrive pas a trouver un moyen simpe de lier les 2 !!!

en fait j'ai 2 bouts de code ....

le resultat a afficher est dans un tableau a 2 entrees : en colonne le type de classification et en ligne l'ecart entre date de l'inputbox et date de colonne maturity..

ci dessous ce que j'ai deja fait :

pour les sommes et la recherche du tableau dans la feuille excel :
  1. '---=== search for first & last Row of the table ===---
  2. fstrow = ws_source.Range("B1:B65536").End(xlDown).Row
  3. lstrow = ws_source.Range("B" & fstrow & ":B65536").End(xlDown).Row
  4.  
  5. '---=== Column number search ===---
  6. For i = 1 To 255
  7. Select Case ws_source.Cells(fstrow, i).Value
  8. Case Is = "Branch code (Midas GL) (CAB)": bc_colnum = i
  9. Case Is = "Customer Number (CAB)": cn_colnum = i
  10. Case Is = "Account Code (CAB)": ac_colnum = i
  11. Case Is = "Currency ISO Code (CAB)": cic_colnum = i
  12. Case Is = "Debit Credit Indicator (CAB)": dci_colnum = i
  13. Case Is = "Accounting Balance transaction (CAB)": abt_colnum = i
  14. Case Is = "Deal Date": dd_colnum = i
  15. Case Is = "Maturity Date": md_colnum = i
  16. End Select
  17. Next
  18.  
  19. '---=== Calculations ===---
  20. For j = fstrow + 1 To lstrow
  21.  
  22. ws_source.Rows(j).Cells(abt_colnum).Value = Round(ws_source.Rows(j).Cells(abt_colnum).Value, [2])
  23. Select Case ws_source.Rows(j).Cells(ac_colnum).Value
  24. Case "1112": class = a1112: tot_type = tota: totc_type = totca
  25. Case "1131": class = b1131: tot_type = totb: totc_type = totcb
  26. Case "1141": class = c1141: tot_type = totc: totc_type = totcc
  27. Case "1151": class = d1151: tot_type = totd: totc_type = totcd
  28. Case "1221": class = e1221: tot_type = tote: totc_type = totce
  29. Case "1231": class = f1231: tot_type = totf: totc_type = totcf
  30. Case "1241": class = g1241: tot_type = totg: totc_type = totcg
  31. Case "2131": class = h2131: tot_type = toth: totc_type = totch
  32. Case "2141": class = i2141: tot_type = toti: totc_type = totci
  33. Case "2151": class = j2151: tot_type = totj: totc_type = totcj
  34. Case "2211": class = k2211: tot_type = totk: totc_type = totck
  35. Case "2221": class = l2221: tot_type = totl: totc_type = totcl
  36. Case "2231": class = m2231: tot_type = totm: totc_type = totcm
  37. Case "2241": class = n2241: tot_type = totn: totc_type = totcn
  38. Case 9952 To 9955: class = retail: tot_type = totr: totc_type = totcr
  39. Case 1410 To 2130, "2212", 2668 To 3700: class = other: tot_type = toto: totc_type = totco
  40. End Select
  41.  
  42. If IsNumeric(ws_source.Rows(j).Cells(abt_colnum).Value) And CDec(ws_source.Rows(j).Cells(abt_colnum).Value) > 0 Then
  43. tot_type = tot_type + CDec(ws_source.Rows(j).Cells(abt_colnum).Value)
  44. ElseIf IsNumeric(ws_source.Rows(j).Cells(abt_colnum).Value) And CDec(ws_source.Rows(j).Cells(abt_colnum).Value) < 0 Then
  45. totc_type = totc_type + CDec(ws_source.Rows(j).Cells(abt_colnum).Value)
  46. End If
  47.  
  48. Next


pour le calcul de la difference des dates :

  1. datedemand = InputBox("Enter Date of reference : ", "Date Ref")
  2. If IsDate(datedemand) Then
  3. date_ref = datedemand
  4. Else: MsgBox "You havn't written a date !!"
  5. End If
  6.  
  7. If ws_source.Rows(j).Cells(md_colnum).Value <> "" And IsDate(ws_source.Rows(j).Cells(md_colnum).Value) Then
  8. difference = DateDiff("d", ws_source.Rows(j).Cells(md_colnum).Value, date_ref)
  9. End If
  10.  
  11. Select Case difference
  12. Case 1 To 7: dif_type = one_w: col = 2
  13. Case 8 To 30: dif_type = one_m: col = 3
  14. Case 31 To 90: dif_type = one_tree_m: col = 4
  15. Case 91 To 180: dif_type = tree_six_m: col = 5
  16. Case 181 To 360: dif_type = six_twelve_m: col = 6
  17. Case Is > 360: dif_type = name_call: col = 7
  18. End Select

col indique le num de colonne du tableau d'arrivee (celui dans lequel j'affiche les resultats.)
comme vous pouvez le voir j'ai deja du declrer pas mal de variables total... 26 pour etre precis... c'est un peu barbant ....

voila... comment prendre en compte les dates dans le calcul des sommes ????

pour les totaux je pensait a qqch comme ca :
  1. for t = 1 to 126
  2. tot_credit_(t) = [.....]
  3. next

et pareil pour les debits.... judicieux ?

Autres pages sur : calcul conditons imbriques

Lassé par la pub ? Créez un compte

Meilleure solution

Expert Programmation

Tes principes sont bons mais tirent parti d'un cas particulier.
Les miens sont aussi bons, mais restent vrais partout ailleurs.

Sommes-nous d'accord avec ceci ? :
  • Si une macro crée un onglet pour faire des calculs temporaires, elle doit le supprimer en quittant.
  • Si le classeur dispose d'un onglet pour faire des calculs temporaires, les macros qui en tirent profit ne doivent pas le supprimer.

    --------------------

    Pourquoi je n'aime pas (*) la solution des onglets permanents.
    Le problème de la multiplicité des onglets nécessaires peut être effectivement réduit par l'utilisation d'un seul onglet (voire d'un nombre réduit). Mais il faut alors se garantir que seule une macro à la fois va pouvoir accéder à cet onglet. Et les problèmes d'accès concurrent à une ressource sont plutôt complexes à résoudre.

    (*) Raison subjective. Je ne suis pas détenteur de la Vérité Absolue.
    Expert Programmation

    Salut Oz'

    Ben dis-donc, c'est bien compliqué :/ 
    Enfin, je veux dire, surtout dans ta tête ;) 

    Si tu as trop de variables, c'est qu'il faut penser les choses autrement.
    Si tu as beaucoup de variables, c'est qu'il te faut sans doute travailler avec des tableaux.

    Sinon, tu peux aussi te servir d'Excel lui même. Utilise une feuille temporaire, qui n'est jamais qu'un grand tableau :
    1. ' // Copions nos données dans une nouvelle feuille
    2. Dim ws_tempo As Worksheet
    3. Set ws_tempo = Worksheets.Add
    4.  
    5. ws_source.Range(fstrow, lstrow).Copy ws_tempo.Range("A1")
    6.  
    7. ' // Ici tes calculs
    8. ...
    9.  
    10. ' // Ne pas oublier de la supprimer
    11. ws_tempo.Delete
    Expert Programmation

    salut zeb,

    merci, comme toujours, tu es de bon conseil...
    je vais complètement repenser mon code a l'aide de ces tableau temporaires...
    de toute façon j'etais coincé !! :D 

    je te tiens au courant.... et le reste du forum aussi !!!

    ^^
    Expert Programmation

    bonjour,

    alors voilà, j'ai essayer d'avancer mon problème mais... c'est pas top top. :heink: 
    J'ai décider de créer 6 feuilles temporaires (une par période).
    comme ca, je copie les lignes de ma feuille principale ces 6 feuilles et mon premier tri est fait !
    ensuite je calcule 2 sommes par feuille (une crédit et une débit).
    mais voilà... comment dire via VBA : for each feuille temporaire que je viens de créer... :??: 

    help !!!

    je poste quand même mon code même s'il n'a que peu évolué !

    1. Dim ws_tempo1 As Worksheet
    2. Dim ws_tempo2 As Worksheet
    3. Dim ws_tempo3 As Worksheet
    4. Dim ws_tempo4 As Worksheet
    5. Dim ws_tempo5 As Worksheet
    6. Dim ws_tempo6 As Worksheet
    7. Dim ws_tempo As Range
    8. Dim row_source As Range
    9. Dim ws_source As Worksheet
    10. Dim ws_r As Worksheet
    11.  
    12. Dim bc_colnum As Byte 'column Branch code
    13. Dim cn_colnum As Byte ' column Costumers numbers
    14. Dim ac_colnum As Byte ' column Account Code
    15. Dim cic_colnum As Byte
    16. Dim dci_colnum As Byte
    17. Dim abt_colnum As Byte
    18. Dim dd_colnum As Byte
    19. Dim md_colnum As Byte
    20. Dim col As Long
    21.  
    22. Dim date_ref As Date
    23.  
    24. Set ws_source = Worksheets("Report")
    25. Set ws_r = Worksheets("result")
    26.  
    27. fstrow = 0
    28. lstrow = 0
    29.  
    30. datedemand = InputBox("Enter Date of reference : ", "Date Ref")
    31. If IsDate(datedemand) Then
    32. date_ref = datedemand
    33. Else: MsgBox "You havn't written a date !!"
    34. End If
    35.  
    36. Set ws_tempo = ws_tempo(1 to 6)
    37. Set ws_tempo2 = Worksheets.Add
    38. Set ws_tempo2 = Worksheets.Add
    39. Set ws_tempo3 = Worksheets.Add
    40. Set ws_tempo4 = Worksheets.Add
    41. Set ws_tempo5 = Worksheets.Add
    42. Set ws_tempo6 = Worksheets.Add
    43. Set row_source = ws_tempo.Rows
    44.  
    45. 'recherche first & last Row of the table
    46. fstrow = ws_source.Range("B1:B65536").End(xlDown).Row
    47. lstrow = ws_source.Range("B" & fstrow & ":B65536").End(xlDown).Row
    48.  
    49. For i = 1 To 255
    50. Select Case ws_source.Cells(fstrow, i).Value
    51. Case Is = "Branch code (Midas GL) (CAB)": bc_colnum = i
    52. Case Is = "Customer Number (CAB)": cn_colnum = i
    53. Case Is = "Account Code (CAB)": ac_colnum = i
    54. Case Is = "Currency ISO Code (CAB)": cic_colnum = i
    55. Case Is = "Debit Credit Indicator (CAB)": dci_colnum = i
    56. Case Is = "Accounting Balance transaction (CAB)": abt_colnum = i
    57. Case Is = "Deal Date": dd_colnum = i
    58. Case Is = "Maturity Date": md_colnum = i
    59. End Select
    60. Next
    61.  
    62. 'copie des lignes en fonction des differences de dates
    63. For j = fstrow + 1 To lstrow
    64. If ws_source.Rows(j).Cells(md_colnum).Value <> "" And IsDate(ws_source.Rows(j).Cells(md_colnum).Value) Then
    65. difference = DateDiff("d", ws_source.Rows(j).Cells(md_colnum).Value, date_ref)
    66. End If
    67.  
    68. Select Case difference
    69. Case 1 To 7: ws_source.Rows(j).Copy ws_tempo1.Rows(j - fstrow): col = 2
    70. Case 8 To 30: ws_source.Rows(j).Copy ws_tempo2.Rows(j - fstrow): col = 3
    71. Case 31 To 90: ws_source.Rows(j).Copy ws_tempo3.Rows(j - fstrow): col = 4
    72. Case 91 To 180: ws_source.Rows(j).Copy ws_tempo4.Rows(j - fstrow): col = 5
    73. Case 181 To 360: ws_source.Rows(j).Copy ws_tempo5.Rows(j - fstrow): col = 6
    74. Case Is > 360: ws_source.Rows(j).Copy ws_tempo6.Rows(j - fstrow): col = 7
    75. End Select
    76.  
    77. Next
    78.  
    79. 'calcul des sommes dans chaque feuille temporaire
    80. For Each row_source In ws_tempo
    81. ws_tempo.Cells(abt_colnum).Value = Round(ws_source.Rows(j).Cells(abt_colnum).Value, [2])
    82. Select Case ws_tempo.Cells(ac_colnum).Value
    83. Case "1112": tot_type = tota: totc_type = totca
    84. Case "1131": tot_type = totb: totc_type = totcb
    85. Case "1141": tot_type = totc: totc_type = totcc
    86. Case "1151": tot_type = totd: totc_type = totcd
    87. Case "1221": tot_type = tote: totc_type = totce
    88. Case "1231": tot_type = totf: totc_type = totcf
    89. Case "1241": tot_type = totg: totc_type = totcg
    90. Case "2131": tot_type = toth: totc_type = totch
    91. Case "2141": tot_type = toti: totc_type = totci
    92. Case "2151": tot_type = totj: totc_type = totcj
    93. Case "2211": tot_type = totk: totc_type = totck
    94. Case "2221": tot_type = totl: totc_type = totcl
    95. Case "2231": tot_type = totm: totc_type = totcm
    96. Case "2241": tot_type = totn: totc_type = totcn
    97. Case 9952 To 9955: tot_type = totr: totc_type = totcr
    98. Case 1410 To 2130, "2212", 2668 To 3700: tot_type = toto: totc_type = totco
    99. End Select
    100.  
    101. If IsNumeric(ws_source.Rows(j).Cells(abt_colnum).Value) And CDec(ws_source.Rows(j).Cells(abt_colnum).Value) > 0 Then
    102. tot_type = tot_type + CDec(ws_source.Rows(j).Cells(abt_colnum).Value)
    103. ElseIf IsNumeric(ws_source.Rows(j).Cells(abt_colnum).Value) And CDec(ws_source.Rows(j).Cells(abt_colnum).Value) < 0 Then
    104. totc_type = totc_type + CDec(ws_source.Rows(j).Cells(abt_colnum).Value)
    105. End If
    106.  
    107.  
    108. Next
    109.  
    110. ligne = 6
    111. For tot_type = tota To toto
    112. ws_result.Cells(ligne, col).Value = tot_type
    113. ligne = ligne + 1
    114. Next
    115.  
    116. ligne = 29
    117. For totc_type = totca To totco
    118. ws_result.Cells(ligne, col).Value = tot_type
    119. ligne = ligne + 1
    120. Next
    121.  
    122.  
    123. ' // Ne pas oublier de la supprimer
    124.  
    125. ws_tempo1.Delete
    126. ws_tempo2.Delete
    127. ws_tempo3.Delete
    128. ws_tempo4.Delete
    129. ws_tempo5.Delete
    130. ws_tempo6.Delete

    Je ne fais que prendre le bateau en route, donc je ne me suis pas penché sur tous les détails.
    Une chose m’interpelle. Tu utilises 6 feuilles temporaires, soit, mais pourquoi à chaque fois la créer pour ensuite le supprimer?.
    Il est possible dans excel de masquer les feuilles (tout en continuant à les utiliser depuis des macros). Cette option se trouve dans les propriétés des feuilles, suffit de passer la variable visible à 0 (xlsheethidden).
    Autre chose, si tu ne sais pas comment faire appel à tes feuilles, il y a toujours moyens de contourner le problème. Tu les nomes 1, 2 ,3, 4, 5 et 6 (donc sans le tempo) et donc tu px les appeler en faisant une simple boucle de 1 à 6.
    Pour terminer, vu qu'on ne supprime plus les feuilles, tu dois simplement vider le contenu.
    Expert Programmation

    Citation :
    Autre chose, si tu ne sais pas comment faire appel à tes feuilles, il y a toujours moyens de contourner le problème. Tu les nomes 1, 2 ,3, 4, 5 et 6 (donc sans le tempo) et donc tu px les appeler en faisant une simple boucle de 1 à 6.
    En route, c'est mal vu :o 
    En vert, c'est bien vu :) 

    ----------------------------

    1. Dim ws_tempo1 As Worksheet
    2. Dim ws_tempo2 As Worksheet
    3. Dim ws_tempo3 As Worksheet
    4. Dim ws_tempo4 As Worksheet
    5. Dim ws_tempo5 As Worksheet
    6. Dim ws_tempo6 As Worksheet
    7. ..
    8. Set ws_tempo2 = Worksheets.Add
    9. Set ws_tempo2 = Worksheets.Add
    10. Set ws_tempo3 = Worksheets.Add
    11. Set ws_tempo4 = Worksheets.Add
    12. Set ws_tempo5 = Worksheets.Add
    13. Set ws_tempo6 = Worksheets.Add
    14. ..
    15. ws_tempo1.Delete
    16. ws_tempo2.Delete
    17. ws_tempo3.Delete
    18. ws_tempo4.Delete
    19. ws_tempo5.Delete
    20. ws_tempo6.Delete


    Tu sais qu'on a inventé l'informatique pour ne pas se faire chier à faire 6 fois la même chose ?

    1. Dim ws_tempo(1 To 6) As Worksheet
    2. Dim i As Integer
    3. ..
    4. For i = 1 To 6
    5. Set ws_tempo(i) = Worksheets.Add
    6. Next
    7. ..
    8. For i = 1 To 6
    9. ws_tempo(i).Delete
    10. Next

    A t'écouter tu aurais même envie de retirer les lignes et colonnes inutile dans les onglets en cours :-)
    Mais je ne changerai pas d'idée, je trouve mon idée (uniquement pour excel) bcp plus pratique :-)

    Expert Programmation

    Citation :
    retirer les lignes et colonnes inutile

    Remarque pertinente. A bien y regarder, Excel est en effet fait pour ça. On cache les lignes, les colonnes, les feuilles de calcul. Mais on n'est plus en Excel, on est en VB ! Et il me semble important que le classeur soit rendu, à l'issu des calculs, dans le même état. Imaginons maintenant que de nombreuses macros puissent y interagir. Il leur faut 6 feuilles à chacune !!!!!

    On n'est pas en VB, mais en VBA donc toujours dans Excel (la nuance est légère mais elle a toute son importance). Et mes onglets, on peut le réutiliser plusieurs fois tout comme une variable (inutile d'en recréer si on a ce qu'il faut). Et si je veux chercher la petite bête, si dès le départ je décide de créer un fichier avec des onglets cachés, indirectement, lorsque je ferme mon fichier, il sera toujours dans le même état qu'à l'ouverture :-)

    Beaucoup de mes fichiers excel où je m'amuse à créer des macro ont un onglet "caché" qui me sert de zone de stockage de données. Je pourrais très bien m'en passer mais cela grossirait considérablement mon code VBA (et tout le monde sait bien que plus on raccourcis un code plus cela tourne vite).
    Expert Programmation

    bonjour,

    bon, j'ai mis le temps mais j'ai trouver la maniere de faire mon code.
    Par contre j'affiche dans un tableau fixe sur excel et j'aimerai que si il n'y a que des sommes pour le cas 1112 et 2131 (par exemple) toute les autres lignes du tableau correspondant aux autres cas se cachent..(pour plus de clarté !!)
    j'ai entendu parler des tableaux sous VBA.. est - ce une bonne piste ?

    ci dessous mon code :
    1. Dim ws_source As Worksheet
    2. Dim ws_r As Worksheet
    3. Dim tot_credit(1 To 16) As Variant
    4. Dim tot_debit(1 To 16) As Variant
    5.  
    6. Dim bc_colnum As Byte 'column Branch code
    7. Dim cn_colnum As Byte ' column Costumers numbers
    8. Dim ac_colnum As Byte ' column Account Code
    9. Dim cic_colnum As Byte
    10. Dim dci_colnum As Byte
    11. Dim abt_colnum As Byte
    12. Dim dd_colnum As Byte
    13. Dim md_colnum As Byte
    14.  
    15. Dim col As Long
    16. Dim fstrow As Long
    17. Dim lstrow As Long
    18. Dim i As Long
    19. Dim j As Long
    20. Dim k As Long
    21. Dim l As Long
    22. Dim m As Long
    23. Dim date_ref As Date
    24.  
    25. fstrow = 0
    26. lstrow = 0
    27. Set ws_source = Worksheets("Report")
    28. Set ws_r = Worksheets("result")
    29.  
    30. datedemand = InputBox("Enter Date of reference : ", "Date Ref")
    31. If IsDate(datedemand) Then
    32. date_ref = datedemand
    33. Else: MsgBox "You havn't written a date !!"
    34. End If
    35. ' clear old results
    36. ws_r.Range("B6:H21").ClearContents
    37. ws_r.Range("B29:H44").ClearContents
    38.  
    39. '---=== search for first & last Row of the table ===---
    40. fstrow = ws_source.Range("B1:B65536").End(xlDown).Row
    41. lstrow = ws_source.Range("B" & fstrow & ":B65536").End(xlDown).Row
    42.  
    43. '---=== Column number search ===---
    44. For i = 1 To 255
    45. Select Case LCase(ws_source.Cells(fstrow, i).Value)
    46. Case Is = "branch code (midas gl) (cab)": bc_colnum = i
    47. Case Is = "customer number (cab)": cn_colnum = i
    48. Case Is = "account code (cab)": ac_colnum = i
    49. Case Is = "currency iso code (cab)": cic_colnum = i
    50. Case Is = "debit credit indicator (cab)": dci_colnum = i
    51. Case Is = "accounting balance transaction (cab)": abt_colnum = i
    52. Case Is = "deal date": dd_colnum = i
    53. Case Is = "maturity date": md_colnum = i
    54. End Select
    55. Next
    56.  
    57. '---=== Calculations ===---
    58. For j = fstrow + 1 To lstrow
    59.  
    60. Select Case ws_source.Rows(j).Cells(ac_colnum).Value ' pour chaque ligne assigne un numero pour la somme l et un numero de ligne k pour le résultat
    61. Case "1112": l = 1: k = 6
    62. Case "1131": l = 2: k = 7
    63. Case "1141": l = 3: k = 8
    64. Case "1151": l = 4: k = 9
    65. Case "1221": l = 5: k = 10
    66. Case "1231": l = 6: k = 11
    67. Case "1241": l = 7: k = 12
    68. Case "2131": l = 8: k = 13
    69. Case "2141": l = 9: k = 14
    70. Case "2151": l = 10: k = 15
    71. Case "2211": l = 11: k = 16
    72. Case "2221": l = 12: k = 17
    73. Case "2231": l = 13: k = 18
    74. Case "2241": l = 14: k = 19
    75. Case 9952 To 9955: l = 15: k = 20
    76. Case 1410 To 2130, "2212", 2668 To 3700: l = 16: k = 21
    77. End Select
    78.  
    79. 'fait la somme en fonction du signe et de la classification
    80. If IsNumeric(ws_source.Rows(j).Cells(abt_colnum).Value) And CDec(ws_source.Rows(j).Cells(abt_colnum).Value) > 0 Then
    81. tot_debit(l) = tot_debit(l) + ws_source.Rows(j).Cells(abt_colnum).Value
    82. ElseIf IsNumeric(ws_source.Rows(j).Cells(abt_colnum).Value) And CDec(ws_source.Rows(j).Cells(abt_colnum).Value) < 0 Then
    83. tot_credit(l) = tot_credit(l) + Abs(ws_source.Rows(j).Cells(abt_colnum).Value)
    84. End If
    85.  
    86. '---=== calcul de la diference entre date_ref et maturity date ===---
    87. If ws_source.Rows(j).Cells(md_colnum).Value <> "" And IsDate(ws_source.Rows(j).Cells(md_colnum).Value) Then
    88. difference = DateDiff("d", date_ref, ws_source.Rows(j).Cells(md_colnum).Value)
    89. End If
    90.  
    91. Select Case difference 'assignation de la colonne pour le résultat
    92. Case 1 To 7: col = 2
    93. Case 8 To 30: col = 3
    94. Case 31 To 90: col = 4
    95. Case 91 To 180: col = 5
    96. Case 181 To 360: col = 6
    97. Case Is > 360: col = 7
    98. Case Else: col = 8
    99. End Select
    100.  
    101. '---=== put result in table in K GBP===---
    102. ws_r.Cells(k, col).Value = Round(ws_r.Cells(k, col).Value + tot_credit(l) / 1000, 2)
    103. ws_r.Cells(k + 23, col).Value = Round(ws_r.Cells(k + 23, col).Value + tot_debit(l) / 1000, 2)
    104.  
    105. For b = 1 To 16
    106. tot_credit(b) = 0
    107. tot_debit(b) = 0
    108. Next
    109.  
    110. Next


    du coup, j'ai pas eu besoin des feuilles temporaires mais je garde l'astuce en mémoire... ;) 
    Lassé par la pub ? Créez un compte