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.

5 réponses

1 2
Avatar
Charabeuh
Bonsoir,

C'est justement ce que je testais !

(vu votre post après coup)

:-)




"Jacky" a écrit dans le message de
news:OqM$
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
Mishell
Donc
=SOMMEPROD((MOD(LIGNE(B11:B1031);20)=LIGNE(B11))*1;(B11:B1031))

fonctionne bien.

Salutations.

Mishell


"Jacky" wrote in message
news:OqM$
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
Jacky
Donc....comme qui dirait ;o)
Sans aucun doute !
Reste à convaincre le demandeur.
;o))

--
Salutations
JJ


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

Donc
=SOMMEPROD((MOD(LIGNE(B11:B1031);20)=LIGNE(B11))*1;(B11:B1031))

fonctionne bien.

Salutations.

Mishell


"Jacky" wrote in message
news:OqM$
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
Modeste
Bonsour® Charabeuh avec ferveur ;o))) vous nous disiez :

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)



les matrices doivent produire un résultat numerique ou texte
tout résultat contenant une erreur sera restitué par SOMMEPROD

dans la forme 1 : il n'y a qu'une seule matrice
la multiplication d'un boléen avec un texte (VRAI * "aaa") génére une erreur (#VALEUR!)
SOMMEPROD restitue cette erreur

dans la forme 2 il y a deux matrices
dont un matrice boléenne numerisée (--(A1:A6="a")
dans la seconde matrice SOMMEPROD affecte aux entrées non numériques la valeur zéro
la somme de deux matrices entierement numérique ne peut provoquer d'erreur

pour t'en convaincre :
remplace A6 par =NA()
=SOMMEPROD(--(A1:A6="a");B1:B6) restitue #NA

remplace A6 par =1/0
=SOMMEPROD(--(A1:A6="a");B1:B6) restitue #DIV/0!

remplace A6 par ™9^999
=SOMMEPROD(--(A1:A6="a");B1:B6) restitue #Nombre!

remplace A6 par =2*coucou
=SOMMEPROD(--(A1:A6="a");B1:B6) restitue #NOM?

le fait de choisir la methode 1 ou 2 ne change rien à l'affaire
Avatar
Charabeuh
reBonsoir,

J'en suis maintenant convaincu.

(j'ai certes été long à la détente...)

Merci

Bonnet de nuit






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

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)



les matrices doivent produire un résultat numerique ou texte
tout résultat contenant une erreur sera restitué par SOMMEPROD

dans la forme 1 : il n'y a qu'une seule matrice
la multiplication d'un boléen avec un texte (VRAI * "aaa") génére une erreur
(#VALEUR!)
SOMMEPROD restitue cette erreur

dans la forme 2 il y a deux matrices
dont un matrice boléenne numerisée (--(A1:A6="a")
dans la seconde matrice SOMMEPROD affecte aux entrées non numériques la
valeur zéro
la somme de deux matrices entierement numérique ne peut provoquer d'erreur

pour t'en convaincre :
remplace A6 par =NA()
=SOMMEPROD(--(A1:A6="a");B1:B6) restitue #NA

remplace A6 par =1/0
=SOMMEPROD(--(A1:A6="a");B1:B6) restitue #DIV/0!

remplace A6 par ™9^999
=SOMMEPROD(--(A1:A6="a");B1:B6) restitue #Nombre!

remplace A6 par =2*coucou
=SOMMEPROD(--(A1:A6="a");B1:B6) restitue #NOM?

le fait de choisir la methode 1 ou 2 ne change rien à l'affaire
1 2