OVH Cloud OVH Cloud

Envoie de formule (VBA)

9 réponses
Avatar
Jacques
Salut a toutes et tous

J'ai un ti souci pour envoyer une fomule dans ma feuille , voici le code
pour l'envoie :

Private Sub cmdValider_Click()
Dim informer, nbligne, nbligne2
If QtBox.Value = "" Then
informer = MsgBox("Qté obligatoire !", vbOKOnly, "Ajout
impossible...")
Exit Sub
End If
With ActiveSheet
.Unprotect
nbligne = ActiveSheet.Range("G4")
nbligne = nbligne + 1
.Range("G4") = nbligne
nbligne2 = nbligne + 12

If OptionButton1 = True Then .Range("B" & nbligne2) = "Entrée"
If OptionButton2 = True Then .Range("B" & nbligne2) = "Sortie"
.Range("C" & nbligne2) = CDate(DateBox.Value)
.Range("D" & nbligne2) = FournisseurBox.Value
.Range("E" & nbligne2) = RefBox.Value
.Range("F" & nbligne2) = QtBox.Value
.Range("G" & nbligne2) = ActiveCell.FormulaR1C1 = _

"=IF(R[-1]C[-5]="""","""",SUMPRODUCT((R13C[-5]:R[-1]C[-5]=R[-1]C[-5])*((R13C
[-8]:R[-1]C[-8]=R2C[-5])*R13C[-4]:R[-1]C[-4]-(R13C[-8]:R[-1]C[-8]=R2C[-4])*R
13C[-4]:R[-1]C[-4])))"
.Range("H" & nbligne2) = txtN°_CI.Value
.Range("I" & nbligne2) = cbxOpérateur.Value
'.Range("G" & nbligne2) = txtCommande.Value 'A déplacer si besoin
'.Range("I" & nbligne2) = txtReferenceProduit 'A déplacer si besoin
.Range("B" & nbligne2).Select
With Range(Cells(nbligne2, 2), Cells(nbligne2, 9))
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:="=$B" &
CStr(nbligne2) & "=""Entrée"""
.FormatConditions(1).Interior.ColorIndex = 36
End With
.Protect
End With
Unload AjoutLigne

End Sub

Sur cette partie :

.Range("G" & nbligne2) = ActiveCell.FormulaR1C1 = _

"=IF(R[-1]C[-5]="""","""",SUMPRODUCT((R13C[-5]:R[-1]C[-5]=R[-1]C[-5])*((R13C
[-8]:R[-1]C[-8]=R2C[-5])*R13C[-4]:R[-1]C[-4]-(R13C[-8]:R[-1]C[-8]=R2C[-4])*R
13C[-4]:R[-1]C[-4])))"


Cela m'indique FAUX, dans la celulle.

Merci pour votre aide, Ouille

9 réponses

Avatar
AV
"=IF(R[-1]C[-5]="""","""",SUMPRODUCT((R13C[-5]:R[-1]C[-5]=R[-1]C[-5])*((R13C
[-8]:R[-1]C[-8]=R2C[-5])*R13C[-4]:R[-1]C[-4]-(R13C[-8]:R[-1]C[-8]=R2C[-4])*R
13C[-4]:R[-1]C[-4])))"


Il est impossible de "décrypter" ce type de syntaxe avec des références de type
R1C1 et de plus relatives !
Il est "urgent" de passer aux références de type A1.....

AV

Avatar
Modeste
Bonsour ®,
Bien d'accord avec AV.....
et pourtant !!!
si "Mr Evaluate Formule Président SPA" a des difficultés
à interpréter ta formule..XXXXXXXXX???? ...
qui le pourra ?

;o)))

à mon avis la ligne :
.Range("G" & nbligne2) = ActiveCell.FormulaR1C1 =
XXXXXXXX???
te renvoie FAUX parce tu effectues une comparaison de
formules !!!!
la formule dans la cellule active est-elle egale à la
formule XXXXXXXXX???
c'est systématiquement FAUX parce que la formule
XXXXXXX??? est en adresses relatives

soit tu écris
' ----une formule XXXXXXXX??? >> valeur num
.Range("G" & nbligne2).FormulaR1C1="XXXXXXXXX???"
ou
' ----la formule qui est en cellule active >> valeur num
.Range("G" & nbligne2).FormulaR1C1= Activecell.FormulaR1C1
ou bien
' ----la valeur de la cellule active est-elle égale à la
valeur de la formule XXXXXXXX???) >> valeur logique
.Range("G" & nbligne2).Value = _
(ActiveCell.Value=Evaluate("XXXXXXXXX???"))

@+


-----Message d'origine-----
Salut a toutes et tous

J'ai un ti souci pour envoyer une fomule dans ma
feuille , voici le code

pour l'envoie :

Private Sub cmdValider_Click()
Dim informer, nbligne, nbligne2
If QtBox.Value = "" Then
informer = MsgBox("Qté obligatoire !",
vbOKOnly, "Ajout

impossible...")
Exit Sub
End If
With ActiveSheet
.Unprotect
nbligne = ActiveSheet.Range("G4")
nbligne = nbligne + 1
.Range("G4") = nbligne
nbligne2 = nbligne + 12

If OptionButton1 = True Then .Range("B" &
nbligne2) = "Entrée"

If OptionButton2 = True Then .Range("B" &
nbligne2) = "Sortie"

.Range("C" & nbligne2) = CDate(DateBox.Value)
.Range("D" & nbligne2) = FournisseurBox.Value
.Range("E" & nbligne2) = RefBox.Value
.Range("F" & nbligne2) = QtBox.Value
.Range("G" & nbligne2) = ActiveCell.FormulaR1C1
= _


"=IF(R[-1]C[-5]="""","""",SUMPRODUCT((R13C[-5]:R[-1]C[-5]
=R[-1]C[-5])*((R13C

[-8]:R[-1]C[-8]=R2C[-5])*R13C[-4]:R[-1]C[-4]-(R13C[-8]:R
[-1]C[-8]=R2C[-4])*R

13C[-4]:R[-1]C[-4])))"
.Range("H" & nbligne2) = txtN°_CI.Value
.Range("I" & nbligne2) = cbxOpérateur.Value
'.Range("G" & nbligne2) = txtCommande.Value 'A
déplacer si besoin

'.Range("I" & nbligne2) = txtReferenceProduit 'A
déplacer si besoin

.Range("B" & nbligne2).Select
With Range(Cells(nbligne2, 2), Cells
(nbligne2, 9))

.FormatConditions.Delete
.FormatConditions.Add
Type:=xlExpression, Formula1:="=$B" &

CStr(nbligne2) & "=""Entrée"""
.FormatConditions(1).Interior.ColorIndex
= 36

End With
.Protect
End With
Unload AjoutLigne

End Sub

Sur cette partie :

..Range("G" & nbligne2) = ActiveCell.FormulaR1C1 = _

"=IF(R[-1]C[-5]="""","""",SUMPRODUCT((R13C[-5]:R[-1]C[-5]
=R[-1]C[-5])*((R13C

[-8]:R[-1]C[-8]=R2C[-5])*R13C[-4]:R[-1]C[-4]-(R13C[-8]:R
[-1]C[-8]=R2C[-4])*R

13C[-4]:R[-1]C[-4])))"


Cela m'indique FAUX, dans la celulle.

Merci pour votre aide, Ouille


.



Avatar
Jacques
Alain, Modeste, le groupe

Pour moi c'est du chinois cette formule, mais c'est ce qui a été généré par
l'enregistreur de macro, sinon ma formule est :

=SI(E13="";"";SOMMEPROD((E$13:E13á3)*((B$13:B13=E$2)*F$13:F13-(B$13:B13=F$
2)*F$13:F13)))

Mon principale souci, c'est de la modifier lors de l'envoi, car la pour le
moment elle correspond a la ligne 13, alors que cela va aller plus bas au
fur et a mesure des enregistrement.

J'ai bien tenté ceci, mais rien :

.Range("G" & nbligne2).FormulaR1C1 = "=SI(E & nbligne2
="";"";SOMMEPROD((E$ & nbligne2 :E & nbligne2 =E & nbligne2 )*((B$ &
nbligne2 :B & nbligne2 =E$2)*F$ & nbligne2 :F & nbligne2 -(B$ & nbligne2
:B & nbligne2 =F$2)*F$ & nbligne2 :F & nbligne2 )))"

Merci a vous ,Ouille

Voila, merci, Ouille
"Modeste" a écrit dans le message de
news:280701c4bd8e$f8ed1830$
Bonsour ®,
Bien d'accord avec AV.....
et pourtant !!!
si "Mr Evaluate Formule Président SPA" a des difficultés
à interpréter ta formule..XXXXXXXXX???? ...
qui le pourra ?

;o)))

à mon avis la ligne :
.Range("G" & nbligne2) = ActiveCell.FormulaR1C1 XXXXXXXX???
te renvoie FAUX parce tu effectues une comparaison de
formules !!!!
la formule dans la cellule active est-elle egale à la
formule XXXXXXXXX???
c'est systématiquement FAUX parce que la formule
XXXXXXX??? est en adresses relatives

soit tu écris
' ----une formule XXXXXXXX??? >> valeur num
.Range("G" & nbligne2).FormulaR1C1="XXXXXXXXX???"
ou
' ----la formule qui est en cellule active >> valeur num
.Range("G" & nbligne2).FormulaR1C1= Activecell.FormulaR1C1
ou bien
' ----la valeur de la cellule active est-elle égale à la
valeur de la formule XXXXXXXX???) >> valeur logique
.Range("G" & nbligne2).Value = _
(ActiveCell.Value=Evaluate("XXXXXXXXX???"))

@+


-----Message d'origine-----
Salut a toutes et tous

J'ai un ti souci pour envoyer une fomule dans ma
feuille , voici le code

pour l'envoie :

Private Sub cmdValider_Click()
Dim informer, nbligne, nbligne2
If QtBox.Value = "" Then
informer = MsgBox("Qté obligatoire !",
vbOKOnly, "Ajout

impossible...")
Exit Sub
End If
With ActiveSheet
.Unprotect
nbligne = ActiveSheet.Range("G4")
nbligne = nbligne + 1
.Range("G4") = nbligne
nbligne2 = nbligne + 12

If OptionButton1 = True Then .Range("B" &
nbligne2) = "Entrée"

If OptionButton2 = True Then .Range("B" &
nbligne2) = "Sortie"

.Range("C" & nbligne2) = CDate(DateBox.Value)
.Range("D" & nbligne2) = FournisseurBox.Value
.Range("E" & nbligne2) = RefBox.Value
.Range("F" & nbligne2) = QtBox.Value
.Range("G" & nbligne2) = ActiveCell.FormulaR1C1
= _


"=IF(R[-1]C[-5]="""","""",SUMPRODUCT((R13C[-5]:R[-1]C[-5]
=R[-1]C[-5])*((R13C

[-8]:R[-1]C[-8]=R2C[-5])*R13C[-4]:R[-1]C[-4]-(R13C[-8]:R
[-1]C[-8]=R2C[-4])*R

13C[-4]:R[-1]C[-4])))"
.Range("H" & nbligne2) = txtN°_CI.Value
.Range("I" & nbligne2) = cbxOpérateur.Value
'.Range("G" & nbligne2) = txtCommande.Value 'A
déplacer si besoin

'.Range("I" & nbligne2) = txtReferenceProduit 'A
déplacer si besoin

.Range("B" & nbligne2).Select
With Range(Cells(nbligne2, 2), Cells
(nbligne2, 9))

.FormatConditions.Delete
.FormatConditions.Add
Type:=xlExpression, Formula1:="=$B" &

CStr(nbligne2) & "=""Entrée"""
.FormatConditions(1).Interior.ColorIndex
= 36

End With
.Protect
End With
Unload AjoutLigne

End Sub

Sur cette partie :

..Range("G" & nbligne2) = ActiveCell.FormulaR1C1 = _

"=IF(R[-1]C[-5]="""","""",SUMPRODUCT((R13C[-5]:R[-1]C[-5]
=R[-1]C[-5])*((R13C

[-8]:R[-1]C[-8]=R2C[-5])*R13C[-4]:R[-1]C[-4]-(R13C[-8]:R
[-1]C[-8]=R2C[-4])*R

13C[-4]:R[-1]C[-4])))"


Cela m'indique FAUX, dans la celulle.

Merci pour votre aide, Ouille


.



Avatar
Modeste
bonsour ®,
pour peu que j'ai compris .... ???
la plage s'étend toujours de la ligne 13 (R13 (absolu))
à la ligne qui précédent nbligne2 (R[-1] (relatif))
et un coeff se trouvant en ligne 2 colonne C
???
alors :
tu supprimes la partie :
" ¬tivecell"

soit :
.Range("G" & nbligne2).FormulaR1C1 = _
"=IF(R[-1]C[-5]="""","""",SUMPRODUCT((R13C[-5]:R[-1]C[-5]
=R[-1]C[-5])*((R13C[-8]:R[-1]C[-8]=R2C[-5])*R13C[-4]:R[-1]
C[-4]-(R13C[-8]:R[-1]C[-8]=R2C[-4])*R13C[-4]:R[-1]C[-
4])))"

@+

-----Message d'origine-----
Alain, Modeste, le groupe

Pour moi c'est du chinois cette formule, mais c'est ce
qui a été généré par

l'enregistreur de macro, sinon ma formule est :

=SI(E13="";"";SOMMEPROD((E$13:E13á3)*((B$13:B13=E$2)
*F$13:F13-(B$13:B13=F$

2)*F$13:F13)))

Mon principale souci, c'est de la modifier lors de
l'envoi, car la pour le

moment elle correspond a la ligne 13, alors que cela va
aller plus bas au

fur et a mesure des enregistrement.

J'ai bien tenté ceci, mais rien :

.Range("G" & nbligne2).FormulaR1C1 = "=SI(E &
nbligne2

="";"";SOMMEPROD((E$ & nbligne2 :E & nbligne2 =E &
nbligne2 )*((B$ &

nbligne2 :B & nbligne2 =E$2)*F$ & nbligne2 :F &
nbligne2 -(B$ & nbligne2

:B & nbligne2 =F$2)*F$ & nbligne2 :F & nbligne2 )))"

Merci a vous ,Ouille

Voila, merci, Ouille
"Modeste" a écrit
dans le message de

news:280701c4bd8e$f8ed1830$
Bonsour ®,
Bien d'accord avec AV.....
et pourtant !!!
si "Mr Evaluate Formule Président SPA" a des difficultés
à interpréter ta formule..XXXXXXXXX???? ...
qui le pourra ?

;o)))

à mon avis la ligne :
.Range("G" & nbligne2) = ActiveCell.FormulaR1C1 =
XXXXXXXX???
te renvoie FAUX parce tu effectues une comparaison de
formules !!!!
la formule dans la cellule active est-elle egale à la
formule XXXXXXXXX???
c'est systématiquement FAUX parce que la formule
XXXXXXX??? est en adresses relatives

soit tu écris
' ----une formule XXXXXXXX??? >> valeur num
..Range("G" & nbligne2).FormulaR1C1="XXXXXXXXX???"
ou
' ----la formule qui est en cellule active >> valeur num
..Range("G" & nbligne2).FormulaR1C1=
Activecell.FormulaR1C1

ou bien
' ----la valeur de la cellule active est-elle égale à la
valeur de la formule XXXXXXXX???) >> valeur logique
..Range("G" & nbligne2).Value = _
(ActiveCell.Value=Evaluate("XXXXXXXXX???"))

@+


-----Message d'origine-----
Salut a toutes et tous

J'ai un ti souci pour envoyer une fomule dans ma
feuille , voici le code

pour l'envoie :

Private Sub cmdValider_Click()
Dim informer, nbligne, nbligne2
If QtBox.Value = "" Then
informer = MsgBox("Qté obligatoire !",
vbOKOnly, "Ajout

impossible...")
Exit Sub
End If
With ActiveSheet
.Unprotect
nbligne = ActiveSheet.Range("G4")
nbligne = nbligne + 1
.Range("G4") = nbligne
nbligne2 = nbligne + 12

If OptionButton1 = True Then .Range("B" &
nbligne2) = "Entrée"

If OptionButton2 = True Then .Range("B" &
nbligne2) = "Sortie"

.Range("C" & nbligne2) = CDate(DateBox.Value)
.Range("D" & nbligne2) = FournisseurBox.Value
.Range("E" & nbligne2) = RefBox.Value
.Range("F" & nbligne2) = QtBox.Value
.Range("G" & nbligne2) = ActiveCell.FormulaR1C1
= _


"=IF(R[-1]C[-5]="""","""",SUMPRODUCT((R13C[-5]:R[-1]C[-
5]


=R[-1]C[-5])*((R13C
[-8]:R[-1]C[-8]=R2C[-5])*R13C[-4]:R[-1]C[-4]-(R13C[-8]:R
[-1]C[-8]=R2C[-4])*R

13C[-4]:R[-1]C[-4])))"
.Range("H" & nbligne2) = txtN°_CI.Value
.Range("I" & nbligne2) = cbxOpérateur.Value
'.Range("G" & nbligne2) = txtCommande.Value 'A
déplacer si besoin

'.Range("I" & nbligne2) = txtReferenceProduit 'A
déplacer si besoin

.Range("B" & nbligne2).Select
With Range(Cells(nbligne2, 2), Cells
(nbligne2, 9))

.FormatConditions.Delete
.FormatConditions.Add
Type:=xlExpression, Formula1:="=$B" &

CStr(nbligne2) & "=""Entrée"""
.FormatConditions(1).Interior.ColorIndex
= 36

End With
.Protect
End With
Unload AjoutLigne

End Sub

Sur cette partie :

..Range("G" & nbligne2) = ActiveCell.FormulaR1C1 = _

"=IF(R[-1]C[-5]="""","""",SUMPRODUCT((R13C[-5]:R[-1]C[-
5]


=R[-1]C[-5])*((R13C
[-8]:R[-1]C[-8]=R2C[-5])*R13C[-4]:R[-1]C[-4]-(R13C[-8]:R
[-1]C[-8]=R2C[-4])*R

13C[-4]:R[-1]C[-4])))"


Cela m'indique FAUX, dans la celulle.

Merci pour votre aide, Ouille


.




.




Avatar
Jacques
Modeste, le groupe

J'ai essayé ce que tu m'as écrit cela me donnait une erreur : Erreur de
compilation. Attendue : Fin d'instruction
Ton code :

.Range("G" & nbligne2).FormulaR1C1 = .Range("G" & nbligne2).FormulaR1C1 = _
"=IF(R[-1]C[-5]="""","""",SUMPRODUCT((R13C[-5]:R[-1]C[-5]"=R[-1]C[-5])*((R13
C[-8]:R[-1]C[-8]=R2C[-5])*R13C[-4]:R[-1]C[-4]-(R13C[-8]:R[-1]C[-8]=R2C[-4])*
R13C[-4]:R[-1]C[-4])))"


Cela s'arrète : SUMPRODUCT((R13C[-5]:R[-1]C[-5]"=R[-1]

et cela met en bleu [-1] les dernières accolades de la partie ci dessus.

Voila merci, ouille



=SI(J12="";"";SOMMEPROD((J12:J$13=J12)*((G12:G$13=J$2)*K12:K$13-(G12:G$13=K$
2)*K12:K$13)))
"Modeste" a écrit dans le message de
news:194201c4bdc1$1d4e8740$
bonsour ®,
pour peu que j'ai compris .... ???
la plage s'étend toujours de la ligne 13 (R13 (absolu))
à la ligne qui précédent nbligne2 (R[-1] (relatif))
et un coeff se trouvant en ligne 2 colonne C
???
alors :
tu supprimes la partie :
" ¬tivecell"

soit :
.Range("G" & nbligne2).FormulaR1C1 = _
"=IF(R[-1]C[-5]="""","""",SUMPRODUCT((R13C[-5]:R[-1]C[-5]
=R[-1]C[-5])*((R13C[-8]:R[-1]C[-8]=R2C[-5])*R13C[-4]:R[-1]
C[-4]-(R13C[-8]:R[-1]C[-8]=R2C[-4])*R13C[-4]:R[-1]C[-
4])))"

@+

-----Message d'origine-----
Alain, Modeste, le groupe

Pour moi c'est du chinois cette formule, mais c'est ce
qui a été généré par

l'enregistreur de macro, sinon ma formule est :

=SI(E13="";"";SOMMEPROD((E$13:E13á3)*((B$13:B13=E$2)
*F$13:F13-(B$13:B13=F$

2)*F$13:F13)))

Mon principale souci, c'est de la modifier lors de
l'envoi, car la pour le

moment elle correspond a la ligne 13, alors que cela va
aller plus bas au

fur et a mesure des enregistrement.

J'ai bien tenté ceci, mais rien :

.Range("G" & nbligne2).FormulaR1C1 = "=SI(E &
nbligne2

="";"";SOMMEPROD((E$ & nbligne2 :E & nbligne2 =E &
nbligne2 )*((B$ &

nbligne2 :B & nbligne2 =E$2)*F$ & nbligne2 :F &
nbligne2 -(B$ & nbligne2

:B & nbligne2 =F$2)*F$ & nbligne2 :F & nbligne2 )))"

Merci a vous ,Ouille

Voila, merci, Ouille
"Modeste" a écrit
dans le message de

news:280701c4bd8e$f8ed1830$
Bonsour ®,
Bien d'accord avec AV.....
et pourtant !!!
si "Mr Evaluate Formule Président SPA" a des difficultés
à interpréter ta formule..XXXXXXXXX???? ...
qui le pourra ?

;o)))

à mon avis la ligne :
.Range("G" & nbligne2) = ActiveCell.FormulaR1C1 >XXXXXXXX???
te renvoie FAUX parce tu effectues une comparaison de
formules !!!!
la formule dans la cellule active est-elle egale à la
formule XXXXXXXXX???
c'est systématiquement FAUX parce que la formule
XXXXXXX??? est en adresses relatives

soit tu écris
' ----une formule XXXXXXXX??? >> valeur num
..Range("G" & nbligne2).FormulaR1C1="XXXXXXXXX???"
ou
' ----la formule qui est en cellule active >> valeur num
..Range("G" & nbligne2).FormulaR1C1 Activecell.FormulaR1C1
ou bien
' ----la valeur de la cellule active est-elle égale à la
valeur de la formule XXXXXXXX???) >> valeur logique
..Range("G" & nbligne2).Value = _
(ActiveCell.Value=Evaluate("XXXXXXXXX???"))

@+


-----Message d'origine-----
Salut a toutes et tous

J'ai un ti souci pour envoyer une fomule dans ma
feuille , voici le code

pour l'envoie :

Private Sub cmdValider_Click()
Dim informer, nbligne, nbligne2
If QtBox.Value = "" Then
informer = MsgBox("Qté obligatoire !",
vbOKOnly, "Ajout

impossible...")
Exit Sub
End If
With ActiveSheet
.Unprotect
nbligne = ActiveSheet.Range("G4")
nbligne = nbligne + 1
.Range("G4") = nbligne
nbligne2 = nbligne + 12

If OptionButton1 = True Then .Range("B" &
nbligne2) = "Entrée"

If OptionButton2 = True Then .Range("B" &
nbligne2) = "Sortie"

.Range("C" & nbligne2) = CDate(DateBox.Value)
.Range("D" & nbligne2) = FournisseurBox.Value
.Range("E" & nbligne2) = RefBox.Value
.Range("F" & nbligne2) = QtBox.Value
.Range("G" & nbligne2) = ActiveCell.FormulaR1C1
= _


"=IF(R[-1]C[-5]="""","""",SUMPRODUCT((R13C[-5]:R[-1]C[-
5]


=R[-1]C[-5])*((R13C
[-8]:R[-1]C[-8]=R2C[-5])*R13C[-4]:R[-1]C[-4]-(R13C[-8]:R
[-1]C[-8]=R2C[-4])*R

13C[-4]:R[-1]C[-4])))"
.Range("H" & nbligne2) = txtN°_CI.Value
.Range("I" & nbligne2) = cbxOpérateur.Value
'.Range("G" & nbligne2) = txtCommande.Value 'A
déplacer si besoin

'.Range("I" & nbligne2) = txtReferenceProduit 'A
déplacer si besoin

.Range("B" & nbligne2).Select
With Range(Cells(nbligne2, 2), Cells
(nbligne2, 9))

.FormatConditions.Delete
.FormatConditions.Add
Type:=xlExpression, Formula1:="=$B" &

CStr(nbligne2) & "=""Entrée"""
.FormatConditions(1).Interior.ColorIndex
= 36

End With
.Protect
End With
Unload AjoutLigne

End Sub

Sur cette partie :

..Range("G" & nbligne2) = ActiveCell.FormulaR1C1 = _

"=IF(R[-1]C[-5]="""","""",SUMPRODUCT((R13C[-5]:R[-1]C[-
5]


=R[-1]C[-5])*((R13C
[-8]:R[-1]C[-8]=R2C[-5])*R13C[-4]:R[-1]C[-4]-(R13C[-8]:R
[-1]C[-8]=R2C[-4])*R

13C[-4]:R[-1]C[-4])))"


Cela m'indique FAUX, dans la celulle.

Merci pour votre aide, Ouille


.




.




Avatar
GD
Bonsour ® Ouille,
ce que je t'avais proposé c'est :
.Range("G" & nbligne2).FormulaR1C1 "=IF(R[-1]C[-5]="""","""",SUMPRODUCT(etc...))

par contre quant à t'expliquer le développement de la formule elle même....
notament :
*R13C[-4]:R[-1]C[-4] -
(R13C[-8]:R[-1]C[-8]=R2C[-4])* ---différence entre une matrice nombres ??
et une matrice logique

comme l'a dit AV : il faudrait que tu fournisses plus d'explications !!!
qu'est ce que c'est sensé faire ???? ainsi que des données ....
éventuellement un exemple xls sommaire via http://www.cjoint.com
mais c'est le week-end... n'espère plus trop de réponses avant mardi !!!!
@+

@+
"Modeste" a écrit dans le
alors :
tu supprimes la partie :
" ¬tivecell"

soit :
.Range("G" & nbligne2).FormulaR1C1 = _
"=IF(R[-1]C[-5]="""","""",SUMPRODUCT((R13C[-5]:R[-1]C[-5]...........


Avatar
Jacques
Salut a toutes et tous
A partire de la ligne 13:

Donc en B : j'ai des mouvements (Entrées et sorties)
En C : La date
En D : Fournisseur
En E : N° de lot
En F : Qté saisie
En G : Qté restant par lot
En H : N° De Code interne
En I : N° de l'opérateur

En E1 et F1 : Mouvements
En E2 : Entrée
En F2 : Sortie

A partire de G13: La formule :

"=SI(E13="";"";SOMMEPROD((E$13:E13á3)*((B$13:B13=E$2)*F$13:F13-(B$13:B13=F
$2)*F$13:F13)))"

Et pour éviter de faire une copie incrémentée, jusqu'en ligne G65536 (Qui
gonflerai mon fichier), j'aurais aimé pouvoir l'envoyer n même temps que mes
autre donnée et quelle s'incrémente toute seule.

Et le bout de code que tu m'as donnée, me met une erreur déjà dans VBA.
Attendue : Fin d'instruction

.Range("G" & nbligne2).FormulaR1C1
="=IF(R[-1]C[-5]="""","""",SUMPRODUCT((R13C[-5]:R[-1]C[-5]"=R[-1]C[-5])*((R1
3C[-8]:R[-1]C[-8]=R2C[-5])*R13C[-4]:R[-1]C[-4]-(R13C[-8]:R[-1]C[-8]=R2C[-4])
*R13C[-4]:R[-1]C[-4])))"

En espérant être plus claire, merci, Ouille


"GD" a écrit dans le message de
news:%23r%
Bonsour ® Ouille,
ce que je t'avais proposé c'est :
.Range("G" & nbligne2).FormulaR1C1 > "=IF(R[-1]C[-5]="""","""",SUMPRODUCT(etc...))

par contre quant à t'expliquer le développement de la formule elle
même....

notament :
*R13C[-4]:R[-1]C[-4] -
(R13C[-8]:R[-1]C[-8]=R2C[-4])* ---différence entre une matrice nombres ??
et une matrice logique

comme l'a dit AV : il faudrait que tu fournisses plus d'explications !!!
qu'est ce que c'est sensé faire ???? ainsi que des données ....
éventuellement un exemple xls sommaire via http://www.cjoint.com
mais c'est le week-end... n'espère plus trop de réponses avant mardi !!!!
@+

@+
"Modeste" a écrit dans le
alors :
tu supprimes la partie :
" ¬tivecell"

soit :
.Range("G" & nbligne2).FormulaR1C1 = _
"=IF(R[-1]C[-5]="""","""",SUMPRODUCT((R13C[-5]:R[-1]C[-5]...........






Avatar
Daniel.M
Salut Jacques,

En lieu et place de :

.Range("G" & nbligne2).FormulaR1C1
="=IF(R[-1]C[-5]="""","""",SUMPRODUCT((R13C[-5]:R[-1]C[-5]"
=R[-1]C[-5])*((R13C[-8]:R[-1]C[-8]=R2C[-5])*R13C[-4]:R[-1]
C[-4]-(R13C[-8]:R[-1]C[-8]=R2C[-4])
*R13C[-4]:R[-1]C[-4])))"


Utilise ceci:

With Range("C13:C" & Range("C65536").End(xlUp).Row)
If .Row = 13 Then ' si on revient avant la 13e ligne ==> rien
Range("G13").Resize(.Rows.Count, 1).Formula = _
"=IF(E13="""","""",SUMPRODUCT((E$13:E13á3)*" & _
"((B$13:B13=E$2)*F$13:F13-(B$13:B13=F$2)*F$13:F13)))"
End If
End With

Salutations,

Daniel M.

Avatar
Jacques
Daniel, le groupe

Merci, cela fonctionne trés bien.
Et merci a GD, Modeste et Alain.
Bon Week-End, Ouille
"Daniel.M" a écrit dans le message de
news:%
Salut Jacques,

En lieu et place de :

.Range("G" & nbligne2).FormulaR1C1
="=IF(R[-1]C[-5]="""","""",SUMPRODUCT((R13C[-5]:R[-1]C[-5]"
=R[-1]C[-5])*((R13C[-8]:R[-1]C[-8]=R2C[-5])*R13C[-4]:R[-1]
C[-4]-(R13C[-8]:R[-1]C[-8]=R2C[-4])
*R13C[-4]:R[-1]C[-4])))"


Utilise ceci:

With Range("C13:C" & Range("C65536").End(xlUp).Row)
If .Row = 13 Then ' si on revient avant la 13e ligne ==> rien
Range("G13").Resize(.Rows.Count, 1).Formula = _
"=IF(E13="""","""",SUMPRODUCT((E$13:E13á3)*" & _
"((B$13:B13=E$2)*F$13:F13-(B$13:B13=F$2)*F$13:F13)))"
End If
End With

Salutations,

Daniel M.