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

formule en vba

22 réponses
Avatar
magic-dd
bonsoir
j'ai un classeur avec 18 feuilles structur=E9es de la meme facon

dans des memes cellules de x6 =E0 x38 j'ai cette formule

=3DSI(NBCAR(B6)=3D0;"";(SOMME(D6:H6)*20)/25)

en changeant le b6 par "b" & i, d6 par "d" & i et "h" & i

ensuite j'ai une matricielle

de z6 =E0 z38

{=3DSI(OU(NBCAR(B6)=3D0;NB(N6:T6)=3D0);"";SOMME(SI(ESTNUM(N6:T6);N6:T6*$N
$5:$T$5))/SOMME.SI(N6:T6;">=3D0";$N$5:$T$5))}

la aussi tout ce qui n'est pas entre les $ peut etre fais avec la
valeur "b" & i etc.....

merci de votre aide ca permettra de rendre plus rapide mon programme
et surtout moins lourd.


@bientot

10 réponses

1 2 3
Avatar
isabelle
bonjour magic,

c'est une formule sur la feuille ou c'est en vba ?

isabelle

bonsoir
j'ai un classeur avec 18 feuilles structurées de la meme facon

dans des memes cellules de x6 à x38 j'ai cette formule

=SI(NBCAR(B6)=0;"";(SOMME(D6:H6)*20)/25)

en changeant le b6 par "b" & i, d6 par "d" & i et "h" & i

ensuite j'ai une matricielle

de z6 à z38

{=SI(OU(NBCAR(B6)=0;NB(N6:T6)=0);"";SOMME(SI(ESTNUM(N6:T6);N6:T6*$N
$5:$T$5))/SOMME.SI(N6:T6;">=0";$N$5:$T$5))}

la aussi tout ce qui n'est pas entre les $ peut etre fais avec la
valeur "b" & i etc.....

merci de votre aide ca permettra de rendre plus rapide mon programme
et surtout moins lourd.


@bientot


Avatar
magic-dd
bonjour isabelle

cette formule est sur ma feuille

en fait je ne voudrais plus de formule sur la feuille mais a chaque
changement dans ma feuille avoir la macro qui se declenche

merci
Avatar
isabelle
bonjour magic,

Private Sub Worksheet_Change(ByVal Target As Range)
lig = Target.Row
Range("X" & lig).Formula = "=SI(NBCAR(" & Cells(lig, 2).Address & ")=0,"""",(SOMME(" & Range(Cells(lig, 4), Cells(lig, 7)).Address & ")*20)/25)"
End Sub

isabelle

bonjour isabelle

cette formule est sur ma feuille

en fait je ne voudrais plus de formule sur la feuille mais a chaque
changement dans ma feuille avoir la macro qui se declenche

merci


Avatar
isabelle
correction :

Private Sub Worksheet_Change(ByVal Target As Range)
lig = Target.Row
Range("X" & lig).Formula = "=IF(LEN(" & Cells(lig, "B").Address & ")=0,"""",(SUM(" & Range(Cells(lig, "D"), Cells(lig, "H")).Address & ")*20)/25)"
End Sub
isabelle

bonjour isabelle

cette formule est sur ma feuille

en fait je ne voudrais plus de formule sur la feuille mais a chaque
changement dans ma feuille avoir la macro qui se declenche

merci


Avatar
magic-dd
merci isabelle mais j'ai une erreur 1004

erreur definie par l'application ou l'objet


je ne comprends pas car d'habitude tout ce que tu me depanne
fonctionne parfaitemement.

j'attends donc à nouveau ton aide
Avatar
isabelle
bonjour magic,

cette erreur en est une assez général, difficile à cerner
si tu peut, dépose ton fichier ici :

http://www.cjoint.com

et reviens donner ici le lien de téléchargement que le site va générer.
je pourrai alors le télécharger et regarder de plus pret.

isabelle

merci isabelle mais j'ai une erreur 1004

erreur definie par l'application ou l'objet


je ne comprends pas car d'habitude tout ce que tu me depanne
fonctionne parfaitemement.

j'attends donc à nouveau ton aide




Avatar
magic-dd
salut

je te joint le fichier enfin une partie car celui ci pese 2 mo

mes autres feuilles ont exactement la meme structure que celle ci donc
j'adapterai.

merci encore par avance

http://cjoint.com/?dvhF68yyNS
Avatar
isabelle
bonjour magic,

j'ai fais un premier essai pour la transformation des formules des colonnes X, Y, Z, AA, AB , AC
dit moi si ça va bien comme ça,
http://cjoint.com/?dvnMpxA4zO

Sub Macro1()
lig = 7 'choix du numéro de ligne
Range("X" & lig) = Evaluate("(IF(LEN(B" & lig & ")=0,"""",SUM(D" & lig & ":H" & lig & ") * 20) / 25)")

Range("Y" & lig) = Evaluate("(IF(LEN(B" & lig & ")=0,"""",SUM(I" & lig & ":M" & lig & ") * 20) / 25)")

p1 = Range("N" & lig & ":T" & lig).Address
p2 = Range("N5:T5").Address
Range("Z" & lig) = Evaluate("IF(OR(LEN(B" & lig & ")=0,COUNT(" & p1 & ")=0),"""",SUM(IF(ISNUMBER(" & p1 & ")," & p1 & "*" & p2 & "))/SUMIF(" & p1 & ","">=0""," & p2 & "))")

p3 = Range("U" & lig & ":V" & lig).Address
p4 = Range("U5:V5").Address
Range("AA" & lig) = Evaluate("IF(OR(LEN(B" & lig & ")=0,COUNT(" & p3 & ")=0),"""",SUM(IF(ISNUMBER(" & p3 & ")," & p3 & "*" & p4 & "))/SUMIF(" & p3 & ","">=0""," & p4 & "))")

p5 = Range("W" & lig & ":AA" & lig).Address
p6 = Range("W5:AA5").Address
Range("AB" & lig) = Evaluate("IF(OR(LEN(B" & lig & ")=0,COUNT(" & p5 & ")=0),"""",SUM(IF(ISNUMBER(" & p5 & ")," & p5 & "*" & p6 & "))/SUMIF(" & p5 & ","">=0""," & p6 & "))")

Range("AC" & lig) = Evaluate("IF(OR(LEN(B" & lig & ")=0,COUNT(" & Range("D" & lig & ":AA" & lig).Address & ")=0),"""",RANK(AD" & lig & ",AD6:AD38))")

End Sub


isabelle

salut

je te joint le fichier enfin une partie car celui ci pese 2 mo

mes autres feuilles ont exactement la meme structure que celle ci donc
j'adapterai.

merci encore par avance

http://cjoint.com/?dvhF68yyNS


Avatar
magic-dd
Bonsoir isabelle

un grand merci car cela correspond dans un premier temps à ce que je
voulais.

cependant tu as écris lig = 7 pour la ligne 7 ok

j'ai fais une boucle genre for lig =6 to 38 etc etc

je trouve que la procédure est longue

pour les autres formules a traduire, ça sera en colonne AD,
AF ,AG ,AH ,AI ,AK

Sinon déjà un très grand bravo

merci tout plein
Avatar
isabelle
bonjour magic,

voici les autres formules :

http://cjoint.com/?dvw7JXQg5H

isabelle

Bonsoir isabelle

un grand merci car cela correspond dans un premier temps à ce que je
voulais.

cependant tu as écris lig = 7 pour la ligne 7 ok

j'ai fais une boucle genre for lig =6 to 38 etc etc

je trouve que la procédure est longue

pour les autres formules a traduire, ça sera en colonne AD,
AF ,AG ,AH ,AI ,AK

Sinon déjà un très grand bravo

merci tout plein






1 2 3