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

execution automatique d'une macro

15 réponses
Avatar
vladtepes
Bonjour,
J'ai cette macro dans un classeur excel:
Sub Faire_La_Somme()

With Worksheets("Gwen")
For a = 11 To 1031 Step 20
If IsNumeric(.Range("B" & a)) Then
somme = somme + .Range("B" & a)
End If
Next
End With
Worksheets("synthese").Range("I4").value = Somme

End Sub
et je voudrais que quand je change la valeur d'une des cellules concerné par la macro le calcul se fasse automatiquement. Faut t'il rajouter une commande dans la macro ou faut t'il faire une combinaison de touche a chaque fois que je rentre une valeur dans une de ces cases?
Je vous remercie d'avance pour reponses.

10 réponses

1 2
Avatar
Charabeuh
Bonsoir,

Mettre cette formule dans la cellule "I4"

=SOMME(SI(MODE(LIGNE($B$11:$B$1031)-11;20)=0;$B$11:$B$1031;""))

Validez cette formule par les touches Ctrl+Shift+Entrée (formule
matricielle)
La somme se mettra automatiquement à jour.

Salut



"vladtepes" a écrit dans le message de
news:
Bonjour,
J'ai cette macro dans un classeur excel:
Sub Faire_La_Somme()

With Worksheets("Gwen")
For a = 11 To 1031 Step 20
If IsNumeric(.Range("B" & a)) Then
somme = somme + .Range("B" & a)
End If
Next
End With
Worksheets("synthese").Range("I4").value = Somme

End Sub
et je voudrais que quand je change la valeur d'une des cellules concerné
par la
macro le calcul se fasse automatiquement. Faut t'il rajouter une commande
dans
la macro ou faut t'il faire une combinaison de touche a chaque fois que je
rentre une valeur dans une de ces cases?
Je vous remercie d'avance pour reponses.


Avatar
Charabeuh
Correction !!!!

je n'avais pas vu qu'il y avait deux feuilles.

Mettre cette formule dans la cellule "I4" de la feuille "synthese"

=SOMME(SI(MOD(LIGNE(Gwen!$B$11:$B$1031)-11;20)=0;Gwen!$B$11:$B$1031;""))

Validez cette formule par les touches Ctrl+Shift+Entrée (formule
matricielle)
La somme se mettra automatiquement à jour.

Salut





"Charabeuh" a écrit dans le message de
news:
Bonsoir,

Mettre cette formule dans la cellule "I4"

=SOMME(SI(MODE(LIGNE($B$11:$B$1031)-11;20)=0;$B$11:$B$1031;""))

Validez cette formule par les touches Ctrl+Shift+Entrée (formule
matricielle)
La somme se mettra automatiquement à jour.

Salut



"vladtepes" a écrit dans le message de
news:
Bonjour,
J'ai cette macro dans un classeur excel:
Sub Faire_La_Somme()

With Worksheets("Gwen")
For a = 11 To 1031 Step 20
If IsNumeric(.Range("B" & a)) Then
somme = somme + .Range("B" & a)
End If
Next
End With
Worksheets("synthese").Range("I4").value = Somme

End Sub
et je voudrais que quand je change la valeur d'une des cellules concerné
par la
macro le calcul se fasse automatiquement. Faut t'il rajouter une commande
dans
la macro ou faut t'il faire une combinaison de touche a chaque fois que
je
rentre une valeur dans une de ces cases?
Je vous remercie d'avance pour reponses.





Avatar
Daniel.C
Bonjour.
Mets le code suivant dans le module de la feuille :

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B11:B1031]) Is Nothing Then Exit Sub
For a = 11 To 1031 Step 20
If IsNumeric(Range("B" & a)) Then
Somme = Somme + Range("B" & a)
End If
Next
Worksheets("synthese").Range("I4").Value = Somme
End Sub

Daniel

Bonjour,
J'ai cette macro dans un classeur excel:
Sub Faire_La_Somme()

With Worksheets("Gwen")
For a = 11 To 1031 Step 20
If IsNumeric(.Range("B" & a)) Then
somme = somme + .Range("B" & a)
End If
Next
End With
Worksheets("synthese").Range("I4").value = Somme

End Sub
elle fonctionne bien mais quand je change la valeur d'une des cellules
calculées la valeur de la macro ne change pas.
Je voudrais savoir comment faire pour que la macro calcule automatiquement le
total quand je change la valeur d'une des cellules.
Je vous remercie d'avance pour vos reponses


Avatar
Mishell
Bonjour.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Call Faire_La_Somme
End Sub

Mishell

"vladtepes" wrote in message
news:
Bonjour,
J'ai cette macro dans un classeur excel:
Sub Faire_La_Somme()

With Worksheets("Gwen")
For a = 11 To 1031 Step 20
If IsNumeric(.Range("B" & a)) Then
somme = somme + .Range("B" & a)
End If
Next
End With
Worksheets("synthese").Range("I4").value = Somme

End Sub
et je voudrais que quand je change la valeur d'une des cellules concerné
par la
macro le calcul se fasse automatiquement. Faut t'il rajouter une commande
dans
la macro ou faut t'il faire une combinaison de touche a chaque fois que je
rentre une valeur dans une de ces cases?
Je vous remercie d'avance pour reponses.


Avatar
Jacky
Bonsoir,

Sans VBA
En feuille synthese cellule I4
=SOMMEPROD((MOD(LIGNE(Gwen!B11:B1031);20)-10=1)*Gwen!B11:B1031)
--
Salutations
JJ


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

Bonjour,
J'ai cette macro dans un classeur excel:
Sub Faire_La_Somme()

With Worksheets("Gwen")
For a = 11 To 1031 Step 20
If IsNumeric(.Range("B" & a)) Then
somme = somme + .Range("B" & a)
End If
Next
End With
Worksheets("synthese").Range("I4").value = Somme

End Sub
et je voudrais que quand je change la valeur d'une des cellules concerné
par la
macro le calcul se fasse automatiquement. Faut t'il rajouter une commande
dans
la macro ou faut t'il faire une combinaison de touche a chaque fois que je
rentre une valeur dans une de ces cases?
Je vous remercie d'avance pour reponses.


Avatar
Mishell
Cette formule
=SOMMEPROD((MOD(LIGNE(Gwen!B11:B1031);20)-10=1)*Gwen!B11:B1031)
peut être simplifiée ainsi et aussi permettre l'insertion et la suppression
de lignes sur la feuille sans devoir modifier la formule:
=SOMMEPROD((MOD(LIGNE(Gwen!B11:B1031);20)=LIGNE(B11))*Gwen!B11:B1031)

Salutatins

Mishell


"Jacky" wrote in message
news:
Bonsoir,

Sans VBA
En feuille synthese cellule I4
=SOMMEPROD((MOD(LIGNE(Gwen!B11:B1031);20)-10=1)*Gwen!B11:B1031)
--
Salutations
JJ


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

Bonjour,
J'ai cette macro dans un classeur excel:
Sub Faire_La_Somme()

With Worksheets("Gwen")
For a = 11 To 1031 Step 20
If IsNumeric(.Range("B" & a)) Then
somme = somme + .Range("B" & a)
End If
Next
End With
Worksheets("synthese").Range("I4").value = Somme

End Sub
et je voudrais que quand je change la valeur d'une des cellules concerné
par la
macro le calcul se fasse automatiquement. Faut t'il rajouter une commande
dans
la macro ou faut t'il faire une combinaison de touche a chaque fois que
je
rentre une valeur dans une de ces cases?
Je vous remercie d'avance pour reponses.






Avatar
Charabeuh
Bjr,

Il me semble que sommeprod renvoie une erreur si un des termes de la somme
est de type caractère...
ex [B11] = "AAA" (d'où le "If IsNumeric...." dans le code VBA)

Je me suis "fait eu" plusieurs fois suite à des importations de fichier .CSV
avec des lignes parasites.

N'est-il pas ?

Slt



"Mishell" a écrit dans le message de
news:%
Cette formule
=SOMMEPROD((MOD(LIGNE(Gwen!B11:B1031);20)-10=1)*Gwen!B11:B1031)
peut être simplifiée ainsi et aussi permettre l'insertion et la
suppression de lignes sur la feuille sans devoir modifier la formule:
=SOMMEPROD((MOD(LIGNE(Gwen!B11:B1031);20)=LIGNE(B11))*Gwen!B11:B1031)

Salutatins

Mishell


"Jacky" wrote in message
news:
Bonsoir,

Sans VBA
En feuille synthese cellule I4
=SOMMEPROD((MOD(LIGNE(Gwen!B11:B1031);20)-10=1)*Gwen!B11:B1031)
--
Salutations
JJ


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

Bonjour,
J'ai cette macro dans un classeur excel:
Sub Faire_La_Somme()

With Worksheets("Gwen")
For a = 11 To 1031 Step 20
If IsNumeric(.Range("B" & a)) Then
somme = somme + .Range("B" & a)
End If
Next
End With
Worksheets("synthese").Range("I4").value = Somme

End Sub
et je voudrais que quand je change la valeur d'une des cellules concerné
par la
macro le calcul se fasse automatiquement. Faut t'il rajouter une
commande dans
la macro ou faut t'il faire une combinaison de touche a chaque fois que
je
rentre une valeur dans une de ces cases?
Je vous remercie d'avance pour reponses.










Avatar
Modeste
Bonsour® Charabeuh avec ferveur ;o))) vous nous disiez :

Il *me semble* que sommeprod renvoie une erreur si un des termes de la
somme est de type caractère...



c'est qu'un des termes de la matrice renvoie déja une erreur !!!!

;o)))
a.. SOMMEPROD affecte aux entrées de matrice non numériques la valeur zéro.
Avatar
Jacky
Bonjour,
Il me semble que sommeprod renvoie une erreur si un des termes de la somme
est de type caractère...


L'erreur peut-être annulée par cette modif .
=SOMMEPROD((MOD(LIGNE(Gwen!B11:B1031);20)-10=1)*1;(Gwen!B11:B1031))
--
Salutations
JJ


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

Bjr,

Il me semble que sommeprod renvoie une erreur si un des termes de la somme
est de type caractère...
ex [B11] = "AAA" (d'où le "If IsNumeric...." dans le code VBA)

Je me suis "fait eu" plusieurs fois suite à des importations de fichier
.CSV avec des lignes parasites.

N'est-il pas ?

Slt



"Mishell" a écrit dans le message de
news:%
Cette formule
=SOMMEPROD((MOD(LIGNE(Gwen!B11:B1031);20)-10=1)*Gwen!B11:B1031)
peut être simplifiée ainsi et aussi permettre l'insertion et la
suppression de lignes sur la feuille sans devoir modifier la formule:
=SOMMEPROD((MOD(LIGNE(Gwen!B11:B1031);20)=LIGNE(B11))*Gwen!B11:B1031)

Salutatins

Mishell


"Jacky" wrote in message
news:
Bonsoir,

Sans VBA
En feuille synthese cellule I4
=SOMMEPROD((MOD(LIGNE(Gwen!B11:B1031);20)-10=1)*Gwen!B11:B1031)
--
Salutations
JJ


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

Bonjour,
J'ai cette macro dans un classeur excel:
Sub Faire_La_Somme()

With Worksheets("Gwen")
For a = 11 To 1031 Step 20
If IsNumeric(.Range("B" & a)) Then
somme = somme + .Range("B" & a)
End If
Next
End With
Worksheets("synthese").Range("I4").value = Somme

End Sub
et je voudrais que quand je change la valeur d'une des cellules
concerné par la
macro le calcul se fasse automatiquement. Faut t'il rajouter une
commande dans
la macro ou faut t'il faire une combinaison de touche a chaque fois que
je
rentre une valeur dans une de ces cases?
Je vous remercie d'avance pour reponses.













Avatar
Charabeuh
Bonjoir Modeste !

J'ai testé (sous Excel 2007):

Soit le tableau de deux colonne A,B :
a 1
b 1
a aaa
b 1
c 1
a 1

I) la formule : =SOMMEPROD((A1:A6="a")*B1:B6)
me donne l'erreur #VALEUR!

II) la formule : =SOMMEPROD(--(A1:A6="a");B1:B6)
me donne la valeur 2

Il semblerait que les valeurs texte ne soient pas pris en compte uniquement
dans la forme II de sommeprod.

Confirmes-tu ? (je n'ai pas testé sous 2003)

A+



"Modeste" a écrit dans le message de
news:%
Bonsour® Charabeuh avec ferveur ;o))) vous nous disiez :

Il *me semble* que sommeprod renvoie une erreur si un des termes de la
somme est de type caractère...



c'est qu'un des termes de la matrice renvoie déja une erreur !!!!

;o)))
a.. SOMMEPROD affecte aux entrées de matrice non numériques la valeur zéro.
1 2