Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Somme de plusieurs feuilles par VBA

4 réponses
Avatar
Max du Vuache
Bonjour,

J'ai une classeur de plusieurs feuilles de structure identiques, mais le
nombre de feuilles peut varier, dans lesquelles je fais diverses opérations.
A la fin, je voudrais ajouter une feuille "Cumul" avec la somme, sur
certaines cellules, de l'ensemble des feuilles. Je pensais le réaliser avec
le code suivant:
Sub TotalFeuilles()
Dim nbFeuilles As Integer
Dim FeuilDébut As String, FeuilFin As String
nbFeuilles = Worksheets.Count
Sheets(1).Copy After:=Sheets(nbFeuilles)
ActiveSheet.Name = "Cumul"
Range("E18").Select
FeuilDébut = Sheets(1).Name
FeuilFin = Sheets(nbFeuilles).Name
ActiveCell.FormulaR1C1 = "=SUM(FeuilDébut:FeuilFin!RC)"
End Sub

mais ça ne marche pas. Pourqoui ?

Qui peut trouver la faille ?

Merci d'avance

Max

4 réponses

Avatar
LSteph
Bonbjour Max,
Voici un exemple adaptable
si cumul existe sera supprimé avant création:

'*****
Sub cumf()

Dim mtxt As String
'***suppression pour création de la feuille cumul On Error Resume Next
Sheets("cumul").Delete
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = "cumul"
'***

mtxt = "=SUM(" & _
Worksheets(1).Name & ":" & _
Worksheets(Worksheets.Count - 1).Name & "!RC)"
Range("a1:k50").FormulaR1C1 = mtxt

End Sub

'lSteph

"Max du Vuache" <nospam du a écrit dans le message de
news: %
Bonjour,

J'ai une classeur de plusieurs feuilles de structure identiques, mais le
nombre de feuilles peut varier, dans lesquelles je fais diverses
opérations. A la fin, je voudrais ajouter une feuille "Cumul" avec la
somme, sur certaines cellules, de l'ensemble des feuilles. Je pensais le
réaliser avec le code suivant:
Sub TotalFeuilles()
Dim nbFeuilles As Integer
Dim FeuilDébut As String, FeuilFin As String
nbFeuilles = Worksheets.Count
Sheets(1).Copy After:=Sheets(nbFeuilles)
ActiveSheet.Name = "Cumul"
Range("E18").Select
FeuilDébut = Sheets(1).Name
FeuilFin = Sheets(nbFeuilles).Name
ActiveCell.FormulaR1C1 = "=SUM(FeuilDébut:FeuilFin!RC)"
End Sub

mais ça ne marche pas. Pourqoui ?

Qui peut trouver la faille ?

Merci d'avance

Max



Avatar
LSteph
Sub cumf()

Dim mtxt As String
'***suppression pour création de la feuille résumé
On Error Resume Next
Sheets("cumul").Delete
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = "cumul"
'***

mtxt = "=SUM(" & _
Worksheets(1).Name & ":" & _
Worksheets(Worksheets.Count - 1).Name & "!RC)"
Range("a1:k50").FormulaR1C1 = mtxt

End Sub
'***
'lSteph

"LSteph" a écrit dans le message de news:

Bonbjour Max,
Voici un exemple adaptable
si cumul existe sera supprimé avant création:

'*****
Sub cumf()

Dim mtxt As String
'***suppression pour création de la feuille cumul On Error Resume Next
Sheets("cumul").Delete
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = "cumul"
'***

mtxt = "=SUM(" & _
Worksheets(1).Name & ":" & _
Worksheets(Worksheets.Count - 1).Name & "!RC)"
Range("a1:k50").FormulaR1C1 = mtxt

End Sub

'lSteph

"Max du Vuache" <nospam du a écrit dans le message de
news: %
Bonjour,

J'ai une classeur de plusieurs feuilles de structure identiques, mais le
nombre de feuilles peut varier, dans lesquelles je fais diverses
opérations. A la fin, je voudrais ajouter une feuille "Cumul" avec la
somme, sur certaines cellules, de l'ensemble des feuilles. Je pensais le
réaliser avec le code suivant:
Sub TotalFeuilles()
Dim nbFeuilles As Integer
Dim FeuilDébut As String, FeuilFin As String
nbFeuilles = Worksheets.Count
Sheets(1).Copy After:=Sheets(nbFeuilles)
ActiveSheet.Name = "Cumul"
Range("E18").Select
FeuilDébut = Sheets(1).Name
FeuilFin = Sheets(nbFeuilles).Name
ActiveCell.FormulaR1C1 = "=SUM(FeuilDébut:FeuilFin!RC)"
End Sub

mais ça ne marche pas. Pourqoui ?

Qui peut trouver la faille ?

Merci d'avance

Max







Avatar
Max du Vuache
Bonjour Steph,

Merci beaucoup, ça marche tout-à-fait.
J'ai adapté ta solution à mon cas, c.-à-d. que je copie d'abord la première
des feuilles existantes derrière toutes les autres (pour les libellées et la
présentation) que je nomme "Cumul", et ensuite j'applique la variable "mtxt"
aux cellules qui contiennent une valeur.
Encore merci.
Max
"LSteph" a écrit dans le message de news:

Bonbjour Max,
Voici un exemple adaptable
si cumul existe sera supprimé avant création:

'*****
Sub cumf()

Dim mtxt As String
'***suppression pour création de la feuille cumul On Error Resume Next
Sheets("cumul").Delete
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = "cumul"
'***

mtxt = "=SUM(" & _
Worksheets(1).Name & ":" & _
Worksheets(Worksheets.Count - 1).Name & "!RC)"
Range("a1:k50").FormulaR1C1 = mtxt

End Sub

'lSteph

"Max du Vuache" <nospam du a écrit dans le message de
news: %
Bonjour,

J'ai une classeur de plusieurs feuilles de structure identiques, mais le
nombre de feuilles peut varier, dans lesquelles je fais diverses
opérations. A la fin, je voudrais ajouter une feuille "Cumul" avec la
somme, sur certaines cellules, de l'ensemble des feuilles. Je pensais le
réaliser avec le code suivant:
Sub TotalFeuilles()
Dim nbFeuilles As Integer
Dim FeuilDébut As String, FeuilFin As String
nbFeuilles = Worksheets.Count
Sheets(1).Copy After:=Sheets(nbFeuilles)
ActiveSheet.Name = "Cumul"
Range("E18").Select
FeuilDébut = Sheets(1).Name
FeuilFin = Sheets(nbFeuilles).Name
ActiveCell.FormulaR1C1 = "=SUM(FeuilDébut:FeuilFin!RC)"
End Sub

mais ça ne marche pas. Pourqoui ?

Qui peut trouver la faille ?

Merci d'avance

Max







Avatar
LSteph
..le passage par une variable n'est pas forcé c'est juste pour plus de
clarté
dans la composition de la chaine transmise dans .formular1c1
& pour concaténer
" guillemets pour chaines "
pas besoin de guillemets pour les expression retournant une chaine

;-)

"Max du Vuache" <nospam du a écrit dans le message de
news:
Bonjour Steph,

Merci beaucoup, ça marche tout-à-fait.
J'ai adapté ta solution à mon cas, c.-à-d. que je copie d'abord la
première des feuilles existantes derrière toutes les autres (pour les
libellées et la présentation) que je nomme "Cumul", et ensuite j'applique
la variable "mtxt" aux cellules qui contiennent une valeur.
Encore merci.
Max
"LSteph" a écrit dans le message de news:

Bonbjour Max,
Voici un exemple adaptable
si cumul existe sera supprimé avant création:

'*****
Sub cumf()

Dim mtxt As String
'***suppression pour création de la feuille cumul On Error Resume Next
Sheets("cumul").Delete
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = "cumul"
'***

mtxt = "=SUM(" & _
Worksheets(1).Name & ":" & _
Worksheets(Worksheets.Count - 1).Name & "!RC)"
Range("a1:k50").FormulaR1C1 = mtxt

End Sub

'lSteph

"Max du Vuache" <nospam du a écrit dans le message de
news: %
Bonjour,

J'ai une classeur de plusieurs feuilles de structure identiques, mais le
nombre de feuilles peut varier, dans lesquelles je fais diverses
opérations. A la fin, je voudrais ajouter une feuille "Cumul" avec la
somme, sur certaines cellules, de l'ensemble des feuilles. Je pensais le
réaliser avec le code suivant:
Sub TotalFeuilles()
Dim nbFeuilles As Integer
Dim FeuilDébut As String, FeuilFin As String
nbFeuilles = Worksheets.Count
Sheets(1).Copy After:=Sheets(nbFeuilles)
ActiveSheet.Name = "Cumul"
Range("E18").Select
FeuilDébut = Sheets(1).Name
FeuilFin = Sheets(nbFeuilles).Name
ActiveCell.FormulaR1C1 = "=SUM(FeuilDébut:FeuilFin!RC)"
End Sub

mais ça ne marche pas. Pourqoui ?

Qui peut trouver la faille ?

Merci d'avance

Max