OVH Cloud OVH Cloud

Calculs

14 réponses
Avatar
Apitos
Bonsoir,

J'ai fait cet exemple, dans lequel j'ai le prix unitaire, quantit=E9 et
total par prix unitaire.

Mais j'=E9prouve des difficult=E9s pour la formule en B qui me donne des
z=E9ros dans B si la condition n'est pas remplie, or j'aimerai avoir une
cellule vide =E0 la place.

Un deuxi=E8me probl=E8me, je le rencontre pour totaliser la colonne B
ainsi que la colonne C.

Pourtant tout parait normal.

http://cjoint.com/?khwfOgTcVg

Merci.

4 réponses

1 2
Avatar
Philippe.R
Bonjour,

Comme ceci ?

Private Sub Worksheet_Change(ByVal Target As Range)
'MPFE le 21/10/2007
If Target.Count > 1 Then Exit Sub
li = Target.Row
If li > 9 Or li = 1 Then Exit Sub
' MsgBox "A=" & Range("A" & li) & " B=" & Range("B" & li) & " C=" &
Range("C" & li)

' C & B renseignées, A?
If Range("B" & li) <> "" And Range("C" & li) <> "" Then
Application.EnableEvents = False
Range("A" & li) = Range("C" & li) / Range("B" & li)
Application.EnableEvents = True
End If

' A & C renseignées, B?
If Range("A" & li) <> "" And Range("C" & li) <> "" Then
Application.EnableEvents = False
Range("B" & li) = Range("C" & li) / Range("A" & li)
If Range("B" & li) - Int(Range("B" & li)) > 0 Then
Range("B" & li).NumberFormat = "0.0#"
Else
Range("B" & li).NumberFormat = "General"

End If
Application.EnableEvents = True
End If

' A & B renseignées, C?
If Range("A" & li) <> "" And Range("B" & li) <> "" Then
Application.EnableEvents = False
Range("C" & li) = Range("A" & li) * Range("B" & li)
' coul
Application.EnableEvents = True
End If

'A, B & C renseignées
'> Lorsque tu reviens pour corriger une saisie, par exemple en C,
'> que faut il considérer, qu'on recherchait A ou B par calcul ?
'
'C'est pour calculer B, bien sur si A est connue
'Si on veut calculer A il faut effacer egalement B
'
'Si on veut calculer A on doit effacer B et C
'
'Quand on rectifie A, les deux autres cellules B & C s'effaceront
'automatiquement. On devra ressaisir ensuite B et C

If Range("A" & li) <> "" And Range("B" & li) <> "" _
And Range("C" & li) <> "" Then
Application.EnableEvents = False
If Target.Column = 1 Then
Union(Range("B" & li), Range("C" & li)).ClearContents
MsgBox "Merci de resaisir l'autre bonne valeur connue", _
vbInformation, "MPFE"
ElseIf Target.Column = 3 Then
Range("B" & li) = Range("C" & li) / Range("A" & li)
If Range("B" & li) - Int(Range("B" & li)) > 0 Then
Range("B" & li).NumberFormat = "0.0#"
Else
Range("B" & li).NumberFormat = "General"
End If
ElseIf Target.Column = 2 Then
Application.EnableEvents = False
Range("C" & li) = Range("A" & li) * Range("B" & li)
End If
Application.EnableEvents = True
End If

End Sub

--
http://www.excelabo.net/mpfe/connexion.php
http://dj.joss.free.fr/trombine.htm
Avec plaisir
Philippe.R
"Apitos" a écrit dans le message de
news:
Bonjour,

Lorsque tu reviens pour corriger une saisie, par exemple en C, que faut il
considérer, qu'on recherchait A ou B par calcul ?


C'est pour calculer B, bien sur si A est connue

Si on veut calculer A il faut effacer egalement B

Le plus simple avec le code que tu publies serait d'effacer au moins deux
valeurs (dont celle à calculer) avant de ressaisir la bonne valeur.


Si on veut calculer A on doit effacer B et C

Quand on rectifie A, les deux autres cellules B & C s'effaceront
automatiquement. On devra ressaisir ensuite B et C

Merci.

Avatar
Apitos
Bonsoir Phillipe,

Comme ceci ?


A premiere vue, oui ça marche.

Une petite demande : Peut-on reduire le code ?

Merci infiniment Phillipe.

Avatar
Philippe.R
Bonsoir,
A part retirer les lignes de commentaire correspondant à l'échange fait ici
et que j'avais reprises ainsi dans le code, je ne vois pas trop.
--
http://www.excelabo.net/mpfe/connexion.php
http://dj.joss.free.fr/trombine.htm
Avec plaisir
Philippe.R
"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de
news:
Bonjour,

Comme ceci ?

Private Sub Worksheet_Change(ByVal Target As Range)
'MPFE le 21/10/2007
If Target.Count > 1 Then Exit Sub
li = Target.Row
If li > 9 Or li = 1 Then Exit Sub
' MsgBox "A=" & Range("A" & li) & " B=" & Range("B" & li) & " C=" &
Range("C" & li)

' C & B renseignées, A?
If Range("B" & li) <> "" And Range("C" & li) <> "" Then
Application.EnableEvents = False
Range("A" & li) = Range("C" & li) / Range("B" & li)
Application.EnableEvents = True
End If

' A & C renseignées, B?
If Range("A" & li) <> "" And Range("C" & li) <> "" Then
Application.EnableEvents = False
Range("B" & li) = Range("C" & li) / Range("A" & li)
If Range("B" & li) - Int(Range("B" & li)) > 0 Then
Range("B" & li).NumberFormat = "0.0#"
Else
Range("B" & li).NumberFormat = "General"

End If
Application.EnableEvents = True
End If

' A & B renseignées, C?
If Range("A" & li) <> "" And Range("B" & li) <> "" Then
Application.EnableEvents = False
Range("C" & li) = Range("A" & li) * Range("B" & li)
' coul
Application.EnableEvents = True
End If

'A, B & C renseignées
'> Lorsque tu reviens pour corriger une saisie, par exemple en C,
'> que faut il considérer, qu'on recherchait A ou B par calcul ?
'
'C'est pour calculer B, bien sur si A est connue
'Si on veut calculer A il faut effacer egalement B
'
'Si on veut calculer A on doit effacer B et C
'
'Quand on rectifie A, les deux autres cellules B & C s'effaceront
'automatiquement. On devra ressaisir ensuite B et C

If Range("A" & li) <> "" And Range("B" & li) <> "" _
And Range("C" & li) <> "" Then
Application.EnableEvents = False
If Target.Column = 1 Then
Union(Range("B" & li), Range("C" & li)).ClearContents
MsgBox "Merci de resaisir l'autre bonne valeur connue", _
vbInformation, "MPFE"
ElseIf Target.Column = 3 Then
Range("B" & li) = Range("C" & li) / Range("A" & li)
If Range("B" & li) - Int(Range("B" & li)) > 0 Then
Range("B" & li).NumberFormat = "0.0#"
Else
Range("B" & li).NumberFormat = "General"
End If
ElseIf Target.Column = 2 Then
Application.EnableEvents = False
Range("C" & li) = Range("A" & li) * Range("B" & li)
End If
Application.EnableEvents = True
End If

End Sub

--
http://www.excelabo.net/mpfe/connexion.php
http://dj.joss.free.fr/trombine.htm
Avec plaisir
Philippe.R
"Apitos" a écrit dans le message de
news:
Bonjour,

Lorsque tu reviens pour corriger une saisie, par exemple en C, que faut
il
considérer, qu'on recherchait A ou B par calcul ?


C'est pour calculer B, bien sur si A est connue

Si on veut calculer A il faut effacer egalement B

Le plus simple avec le code que tu publies serait d'effacer au moins deux
valeurs (dont celle à calculer) avant de ressaisir la bonne valeur.


Si on veut calculer A on doit effacer B et C

Quand on rectifie A, les deux autres cellules B & C s'effaceront
automatiquement. On devra ressaisir ensuite B et C

Merci.




Avatar
Apitos
Bonsoir Philippe,

Pas grave ...

Merci de suivre ce fil et d'être présent tous ces jours.
1 2