OVH Cloud OVH Cloud

Sommation de colonnes partielles

5 réponses
Avatar
Alain
Bonsoir,

Je ne sais pas si quelqu'un pourrait m'aider à écrire une ligne de code pour
additionner des cellules.

J'élabore...

Je désire, avec l'aide d'une ligne qui sera inséré dans mon code, faire la
somme des cellules A1:A7 et A9:15. Le problème est que qu'à certaines
occasion ce sont les cellules A1:A9, A11:A20. Donc un changement de la plage
de cellule. La fonction SUM ne m'est pas utile sauf s'il est possible de
changer les références (R[-7]C:R[-1]C), etc.

Merci de votre aide.

Alain

5 réponses

Avatar
isabelle
bonjour Alain,

sans plus de détail sur le terme "certaines occasion " je dirais,

Sub Macro1()
'faite la sélection des plages non adjacente à l'aide de la touche ctrl
Set plage = Application.InputBox(prompt:="Faite votre sélection",
Type:=8)
ActiveCell.Formula = "=SUM(" & plage.Address & ")"
End Sub

isabelle


Bonsoir,

Je ne sais pas si quelqu'un pourrait m'aider à écrire une ligne de code pour
additionner des cellules.

J'élabore...

Je désire, avec l'aide d'une ligne qui sera inséré dans mon code, faire la
somme des cellules A1:A7 et A9:15. Le problème est que qu'à certaines
occasion ce sont les cellules A1:A9, A11:A20. Donc un changement de la plage
de cellule. La fonction SUM ne m'est pas utile sauf s'il est possible de
changer les références (R[-7]C:R[-1]C), etc.

Merci de votre aide.

Alain


Avatar
isabelle
pour obtenir une référence relative faite la modification suivante:

plage.Address(0, 0)

isabelle


bonjour Alain,

sans plus de détail sur le terme "certaines occasion " je dirais,

Sub Macro1()
'faite la sélection des plages non adjacente à l'aide de la touche ctrl
Set plage = Application.InputBox(prompt:="Faite votre sélection",
Type:=8)
ActiveCell.Formula = "=SUM(" & plage.Address & ")"
End Sub

isabelle


Bonsoir,

Je ne sais pas si quelqu'un pourrait m'aider à écrire une ligne de code pour
additionner des cellules.

J'élabore...

Je désire, avec l'aide d'une ligne qui sera inséré dans mon code, faire la
somme des cellules A1:A7 et A9:15. Le problème est que qu'à certaines
occasion ce sont les cellules A1:A9, A11:A20. Donc un changement de la plage
de cellule. La fonction SUM ne m'est pas utile sauf s'il est possible de
changer les références (R[-7]C:R[-1]C), etc.

Merci de votre aide.

Alain




Avatar
docm
Bonsoir Alain.

Tu pourrais utiliser la fonction Evaluate qui peut évaluer une variable de
type String.

t = "SUM(A1:A7,A9:A15)"
a = Application.Evaluate(t)

Tu peux faire varier les références ainsi:
plage1 = Range(Cells(1, 1), Cells(7, 1)).Address
plage2 = Range(Cells(9, 1), Cells(15, 1)).Address

t = "SUM(" & plage1 & "," & plage2 & ")"
A = Application.Evaluate(t)

Amicalement

"Alain" wrote in message
news:jSM2d.11952$
Bonsoir,

Je ne sais pas si quelqu'un pourrait m'aider à écrire une ligne de code
pour

additionner des cellules.

J'élabore...

Je désire, avec l'aide d'une ligne qui sera inséré dans mon code, faire la
somme des cellules A1:A7 et A9:15. Le problème est que qu'à certaines
occasion ce sont les cellules A1:A9, A11:A20. Donc un changement de la
plage

de cellule. La fonction SUM ne m'est pas utile sauf s'il est possible de
changer les références (R[-7]C:R[-1]C), etc.

Merci de votre aide.

Alain




Avatar
Alain
Bonjour Isabelle,

Dans mon exemple j'avais indiqué seulement deux plage de données mais dans
les fait j'en ai environ 50. Donc j'aimerais que la sélection se fasse
automatiquement.

Voici mon code:

Acier:
Do Until ActiveCell = ""
If ActiveCell.Offset(0, 0) = ActiveCell.Offset(1, 0) Then
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.Offset(1, 0).Select
ActiveCell.EntireRow.Select
Selection.Insert Shift:=x1Down
Selection.Interior.ColorIndex = xlNone
Selection.Insert Shift:=x1Down
Selection.Interior.ColorIndex = xlNone
ActiveCell.Offset(0, 6).Select
ActiveCell.FormulaR1C1 = "Total :"
ActiveCell.Offset(0, 1).Select
With Selection.Interior
.ColorIndex = 38
.Pattern = xlSolid
End With
' Set plage = Application.InputBox(prompt:="Faite votre
sélection", Type:=8) 'Ici la sélection doitt être automatique
' ActiveCell.Formula = "=SUM(plage.Address(0, 0))" 'Ici le
total doit s'afficher
ActiveCell.Offset(2, -3).Select
End If
GoTo Acier
Loop


Merci de ton aide

Alain
Avatar
Alain
Bonjour Alain,

Comme j'ai répondu à Isabelle, dans les faits j'ai 50 plage à additionner et
ces plages peuvent varier en longueur (de A1:A7 le lendemain sera A1:A10),
donc elles ne peuvent être fixes (t = "SUM(A1:A7,A9:A15)".

Merci de ton aide.

Alain


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

Bonsoir Alain.

Tu pourrais utiliser la fonction Evaluate qui peut évaluer une variable de
type String.

t = "SUM(A1:A7,A9:A15)"
a = Application.Evaluate(t)

Tu peux faire varier les références ainsi:
plage1 = Range(Cells(1, 1), Cells(7, 1)).Address
plage2 = Range(Cells(9, 1), Cells(15, 1)).Address

t = "SUM(" & plage1 & "," & plage2 & ")"
A = Application.Evaluate(t)

Amicalement

"Alain" wrote in message
news:jSM2d.11952$
Bonsoir,

Je ne sais pas si quelqu'un pourrait m'aider à écrire une ligne de code
pour

additionner des cellules.

J'élabore...

Je désire, avec l'aide d'une ligne qui sera inséré dans mon code, faire
la
somme des cellules A1:A7 et A9:15. Le problème est que qu'à certaines
occasion ce sont les cellules A1:A9, A11:A20. Donc un changement de la
plage

de cellule. La fonction SUM ne m'est pas utile sauf s'il est possible de
changer les références (R[-7]C:R[-1]C), etc.

Merci de votre aide.

Alain