Boucle dans chaque feuille

Bonsoir tout le monde, Je cale sur un sujet voila plusieurs jours.

J'aimerais faire la somme d'un tableau dans toutes les feuilles de mon classeur, mais je flanche sur une partie du code. ;(

Je vous mets en dessous le code qui me pose soucis,

Merci en tous cas, et bonne période de Noel.

Sub CalculSomme()

Dim Fin As Long, Liste As Range, a As Long, sht As Worksheet

For Each Work_sheet In Sheets(Array("ALNMMSP", "AECMMSP", "AFNMDSM", "BNABNYK", "SLAWBOS", "GSILLON", "CHASLON", "EPAFGCM", "BWSTSFO"))

With Work_sheet

Fin = Columns("F").Find("*", , , , , xlPrevious).Row

Set Liste = Range("F2:F" & Fin)

Range("F" & Rows.Count).End(xlUp).Offset(1, 0).Value = Application.Sum(Liste)

Range("E" & Rows.Count).End(xlUp).Offset(1, 0).Value = "Net Amount"

With Range("E" & Rows.Count).End(xlUp)

.HorizontalAlignment = xlHAlignCenter

.VerticalAlignment = xlVAlignCenter

.EntireColumn.AutoFit

.Borders(xlEdgeLeft).LineStyle = xlContinuous

.Borders(xlEdgeTop).LineStyle = xlContinuous

.Borders(xlEdgeBottom).LineStyle = xlContinuous

.Borders(xlEdgeRight).LineStyle = xlContinuous

End With

With Range("F" & Rows.Count).End(xlUp)

.HorizontalAlignment = xlHAlignCenter

.VerticalAlignment = xlVAlignCenter

.EntireColumn.AutoFit

.Borders(xlEdgeLeft).LineStyle = xlContinuous

.Borders(xlEdgeTop).LineStyle = xlContinuous

.Borders(xlEdgeBottom).LineStyle = xlContinuous

.Borders(xlEdgeRight).LineStyle = xlContinuous

Columns("F:F").Select

Selection.NumberFormat = "#,##0.00_);[Red](#,##0.00)"

End With

End With

Next Work_sheet

End Sub

Bonsoir Gianni23, le forum,

Si tu souhaites obtenir des réponses:

Joint un fichier avec des données non sensibles et le résultat attendu...

Cordialement,

bonjour

edit :salut xorsankukai

pourquoi une macro ? Excel sait faire des additions

pour obtenir une somme d'un onglet 2 dans un onglet 1 :

  • aller en onglet 2
  • cliquer dans la zone de données et faire "mettre sous forme de Tableau"
  • aller en onglet 1
  • dans une cellule faire = SOMME(
  • aller en onglet 2 et sélectionner la colonne voulue (sauf son titre)
  • valider

c'est fini

tout ajout ou suppression ou modification de ligne en onglet 2 se répercute sur la somme

amitiés

Bonsoir; xorsankukai

Je te joins un bout de fichier,

Il y a 4 onglets.

Tout part d'une liste dans l'onglet 1, que je dispatche dans les autres onglets en fonction de certaines critères.

Avec toujours les mêmes types de lignes.

Dans les onglets, Liste 1 , etc.. Il y a une somme totale a calculer, en plus d'une mise en page. Tout ça c'et bon.

Mon soucis est que je n'arrive a le faire que sur une page active, j'ai voulu créer un tableau ( array ) pour parcourir toutes les feuilles du classeur et appliquer ma macro, mais je bug ;(

Bonsoir jmd

Non, j'ai vraiment besoin de VBA, car chaque feuille a ses propres devises ( euros, dollars, Yen, etc..) je ne peux donc pas mélanger les calculs.

13classeur1.xlsx (35.87 Ko)

Bonsoir Gianni, le forum,

bon allez, par rapport au code VBA de ton énoncé, j'te propose quand même cette autre version (non testée) :

Sub CalculSomme()

  Dim sht As Worksheet, Liste As Range, Fin As Long

  For Each sht In Worksheets(Array("ALNMMSP", "AECMMSP", "AFNMDSM", _
    "BNABNYK", "SLAWBOS", "GSILLON", "CHASLON", "EPAFGCM", "BWSTSFO"))

    With sht

      Fin = .Columns("F").Find("*", , , , , xlPrevious).Row
      Set Liste = .Range("F2:F" & Fin)

      .Range("E" & Fin + 1) = "Net Amount"
      .Range("F" & Fin + 1) = Application.Sum(Liste)

      With .Range("E" & Rows.Count).End(xlUp)
        .HorizontalAlignment = xlHAlignCenter
        .VerticalAlignment = xlVAlignCenter
        .Borders.LineStyle = xlContinuous
        .EntireColumn.AutoFit
      End With

      With .Range("F" & Rows.Count).End(xlUp)
        .HorizontalAlignment = xlHAlignCenter
        .VerticalAlignment = xlVAlignCenter
        .Borders.LineStyle = xlContinuous
        With .EntireColumn
          .NumberFormat = "#,##0.00_);[Red](#,##0.00)": .AutoFit
        End With
      End With

    End With

  Next sht

End Sub

bonne période de Noël à toi aussi !

dhany

Bonsoir jmd

Non, j'ai vraiment besoin de VBA, car chaque feuille a ses propres devises ( euros, dollars, Yen, etc..) je ne peux donc pas mélanger les calculs.

ben... Excel peut se charger par formules de convertir les devises avant sommes

ce n'est qu'une multiplication

soit avec des taux de change fixes, soit les taux actuels en les récupérant sur le web avec Power Query (j'ai pas encore essayé)

https://community.powerbi.com/t5/Desktop/use-power-query-to-download-daily-exchange-rates/td-p/138000

amitiés

Bonjour,

Faut-il encore que les tableaux indiquent la devise (ou que la devise soit documentée) !...

Cdlt.

Bonjour les amis,

Je n'avais pas le fichier sous la main, j'étais sur tablette, c'est pas le top.

Mais vos réponses m'ont suffit à résoudre mon soucis ! Le code me donne exactement ce que je voulais. Grace à vous, je vais pouvoir avancer !

MERCI

merci pour ton retour, et pour avoir passé le sujet en résolu !

bonne continuation !

dhany

Bonjour,

Faut-il encore que les tableaux indiquent la devise (ou que la devise soit documentée) !...

Cdlt.

si on ne dispose pas des valeurs des taux, sous une forme ou une autre, alors ni VBA ni PQuery, ni Excel tout nu, ni rien ne peut nous aider

amitiés

jmd a écrit :

... ni rien ne peut nous aider

si, si, jmd, rassure-toi : « aide-toi, et le Ciel t'aidera ! »

dhany

dhany,

si on n'a pas les taux de change, le Ciel Lui-Même ne peut rien

ou alors tu as une astuce ?

aïe ! grosse cataschtroumpf !!!

Rechercher des sujets similaires à "boucle chaque feuille"