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.
Bonsoir Apitos, Tu as surtout un problème de référence circulaire entre les colonnes B et C ; l'affichage d'un zéro en B malgré la formule : =SI(ET(C3>0;A3>0);CNUM(TEXTE(C3/A3;"0,00"));"") viens de là Cette formule pourrait être, me semble t il remplacée par : =SI(OU(C3="";A3="");"";C3/A3) sans vraiment résoudre la référence circulaire ; là faudrait que tu expliques ce que tu cherches à calculer exactement, avec quelles données en entrée. -- 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: Bonsoir,
J'ai fait cet exemple, dans lequel j'ai le prix unitaire, quantité et total par prix unitaire.
Mais j'éprouve des difficultés pour la formule en B qui me donne des zéros dans B si la condition n'est pas remplie, or j'aimerai avoir une cellule vide à la place.
Un deuxième problème, je le rencontre pour totaliser la colonne B ainsi que la colonne C.
Pourtant tout parait normal.
http://cjoint.com/?khwfOgTcVg
Merci.
Bonsoir Apitos,
Tu as surtout un problème de référence circulaire entre les colonnes B et C
; l'affichage d'un zéro en B malgré la formule :
=SI(ET(C3>0;A3>0);CNUM(TEXTE(C3/A3;"0,00"));"")
viens de là
Cette formule pourrait être, me semble t il remplacée par :
=SI(OU(C3="";A3="");"";C3/A3)
sans vraiment résoudre la référence circulaire ; là faudrait que tu
expliques ce que tu cherches à calculer exactement, avec quelles données en
entrée.
--
http://www.excelabo.net/mpfe/connexion.php
http://dj.joss.free.fr/trombine.htm
Avec plaisir
Philippe.R
"Apitos" <apitos@gmail.com> a écrit dans le message de
news:1191787583.324357.176270@v3g2000hsg.googlegroups.com...
Bonsoir,
J'ai fait cet exemple, dans lequel j'ai le prix unitaire, quantité et
total par prix unitaire.
Mais j'éprouve des difficultés pour la formule en B qui me donne des
zéros dans B si la condition n'est pas remplie, or j'aimerai avoir une
cellule vide à la place.
Un deuxième problème, je le rencontre pour totaliser la colonne B
ainsi que la colonne C.
Bonsoir Apitos, Tu as surtout un problème de référence circulaire entre les colonnes B et C ; l'affichage d'un zéro en B malgré la formule : =SI(ET(C3>0;A3>0);CNUM(TEXTE(C3/A3;"0,00"));"") viens de là Cette formule pourrait être, me semble t il remplacée par : =SI(OU(C3="";A3="");"";C3/A3) sans vraiment résoudre la référence circulaire ; là faudrait que tu expliques ce que tu cherches à calculer exactement, avec quelles données en entrée. -- 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: Bonsoir,
J'ai fait cet exemple, dans lequel j'ai le prix unitaire, quantité et total par prix unitaire.
Mais j'éprouve des difficultés pour la formule en B qui me donne des zéros dans B si la condition n'est pas remplie, or j'aimerai avoir une cellule vide à la place.
Un deuxième problème, je le rencontre pour totaliser la colonne B ainsi que la colonne C.
Pourtant tout parait normal.
http://cjoint.com/?khwfOgTcVg
Merci.
Apitos
Voila la procedure :
- Si je saisi le PrixU + Qté le total par produit et calculé par C1 = A1 * B1 - Si je saisi le PrixU + Total par produit la Qté est calculée par =SI(ET(C1>0;A1>0);CNUM(TEXTE(C1/A1;"0.00"));"")
Voilà !
Voila la procedure :
- Si je saisi le PrixU + Qté le total par produit et calculé par C1 =
A1 * B1
- Si je saisi le PrixU + Total par produit la Qté est calculée par
=SI(ET(C1>0;A1>0);CNUM(TEXTE(C1/A1;"0.00"));"")
- Si je saisi le PrixU + Qté le total par produit et calculé par C1 = A1 * B1 - Si je saisi le PrixU + Total par produit la Qté est calculée par =SI(ET(C1>0;A1>0);CNUM(TEXTE(C1/A1;"0.00"));"")
Voilà !
Apitos
Voilà une solution d'un autre forum (Merci fred), mais elle a besoin de quelques retouches.
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Selection.Cells.Count > 1 Then End Set isect = Application.Intersect(Target, Range("B2:C9")) If Not isect Is Nothing Then Select Case Target.Column Case 2: If IsEmpty(Target(1, 2)) Then Target(1, 2).FormulaR1C1 = "=RC[-2]*RC[-1]" If Target(1, 2) - Int(Target(1, 2)) = 0 Then Target(1, 2).NumberFormat = "General" End If Case 3: If IsEmpty(Target(1, 0)) Then Target(1, 0).FormulaR1C1 = "=RC[1]/RC[-1]" If Target(1, 0) - Int(Target(1, 0)) = 0 Then Target(1, 0).NumberFormat = "General" End If End Select End If End Sub
********* Alors j'aimerais formater les nombres decimaux dans la colonne B avec deux chiffres apres la virgule.
Si le nombre est entier il n'y aura pas de virgule.
ainsi j'aimerais remplacer les [RC] par du code purement vba.
Merci.
Voilà une solution d'un autre forum (Merci fred), mais elle a besoin
de quelques retouches.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Selection.Cells.Count > 1 Then End
Set isect = Application.Intersect(Target, Range("B2:C9"))
If Not isect Is Nothing Then
Select Case Target.Column
Case 2:
If IsEmpty(Target(1, 2)) Then
Target(1, 2).FormulaR1C1 = "=RC[-2]*RC[-1]"
If Target(1, 2) - Int(Target(1, 2)) = 0 Then Target(1,
2).NumberFormat = "General"
End If
Case 3:
If IsEmpty(Target(1, 0)) Then
Target(1, 0).FormulaR1C1 = "=RC[1]/RC[-1]"
If Target(1, 0) - Int(Target(1, 0)) = 0 Then Target(1,
0).NumberFormat = "General"
End If
End Select
End If
End Sub
*********
Alors j'aimerais formater les nombres decimaux dans la colonne B avec
deux chiffres apres la virgule.
Si le nombre est entier il n'y aura pas de virgule.
ainsi j'aimerais remplacer les [RC] par du code purement vba.
Voilà une solution d'un autre forum (Merci fred), mais elle a besoin de quelques retouches.
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Selection.Cells.Count > 1 Then End Set isect = Application.Intersect(Target, Range("B2:C9")) If Not isect Is Nothing Then Select Case Target.Column Case 2: If IsEmpty(Target(1, 2)) Then Target(1, 2).FormulaR1C1 = "=RC[-2]*RC[-1]" If Target(1, 2) - Int(Target(1, 2)) = 0 Then Target(1, 2).NumberFormat = "General" End If Case 3: If IsEmpty(Target(1, 0)) Then Target(1, 0).FormulaR1C1 = "=RC[1]/RC[-1]" If Target(1, 0) - Int(Target(1, 0)) = 0 Then Target(1, 0).NumberFormat = "General" End If End Select End If End Sub
********* Alors j'aimerais formater les nombres decimaux dans la colonne B avec deux chiffres apres la virgule.
Si le nombre est entier il n'y aura pas de virgule.
ainsi j'aimerais remplacer les [RC] par du code purement vba.
Une piste pour le format de nombre, avec la copie de cet échange d'il y a déjà quelques années ici même : "======================================================================" de : Nicolas B. Groupes de discussion : microsoft.public.fr.excel Envoyé : samedi 1 mai 2004 16:19 Objet : Re: Format de nombre pour avoir 2 décimales...ou pas!
Salut Philippe, J'ai cherché dans les archives, et apparemment, il n'y a pas de solution par un format personnalisé de nombre.
Voici par contre une solution macro donnée par AV il y a quelques années : Private Sub Worksheet_Change(ByVal zzz As Range) If Intersect(zzz, [A1:A10]) Is Nothing Then Exit Sub If Not IsNumeric(zzz.Value) Then Exit Sub If zzz - Int(zzz) > 0 Then zzz.NumberFormat = "0.0#" Else: zzz.NumberFormat = "General" End If End Sub
A+ -- Nicolas B. "======================================================================="
Une autre piste, pour remplacer les [RC] par du code et en même temps supprimer les références circulaires :
-- 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:
Voilà une solution d'un autre forum (Merci fred), mais elle a besoin de quelques retouches.
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Selection.Cells.Count > 1 Then End Set isect = Application.Intersect(Target, Range("B2:C9")) If Not isect Is Nothing Then Select Case Target.Column Case 2: If IsEmpty(Target(1, 2)) Then Target(1, 2).FormulaR1C1 = "=RC[-2]*RC[-1]" If Target(1, 2) - Int(Target(1, 2)) = 0 Then Target(1, 2).NumberFormat = "General" End If Case 3: If IsEmpty(Target(1, 0)) Then Target(1, 0).FormulaR1C1 = "=RC[1]/RC[-1]" If Target(1, 0) - Int(Target(1, 0)) = 0 Then Target(1, 0).NumberFormat = "General" End If End Select End If End Sub
********* Alors j'aimerais formater les nombres decimaux dans la colonne B avec deux chiffres apres la virgule.
Si le nombre est entier il n'y aura pas de virgule.
ainsi j'aimerais remplacer les [RC] par du code purement vba.
Merci.
Bonsoir,
Une piste pour le format de nombre, avec la copie de cet échange d'il y a
déjà quelques années ici même :
"======================================================================"
de : Nicolas B.
Groupes de discussion : microsoft.public.fr.excel
Envoyé : samedi 1 mai 2004 16:19
Objet : Re: Format de nombre pour avoir 2 décimales...ou pas!
Salut Philippe,
J'ai cherché dans les archives, et apparemment, il n'y a pas de solution par
un format personnalisé de nombre.
Voici par contre une solution macro donnée par AV il y a quelques années :
Private Sub Worksheet_Change(ByVal zzz As Range)
If Intersect(zzz, [A1:A10]) Is Nothing Then Exit Sub
If Not IsNumeric(zzz.Value) Then Exit Sub
If zzz - Int(zzz) > 0 Then
zzz.NumberFormat = "0.0#"
Else: zzz.NumberFormat = "General"
End If
End Sub
A+
--
Nicolas B.
"======================================================================="
Une autre piste, pour remplacer les [RC] par du code et en même temps
supprimer les références circulaires :
--
http://www.excelabo.net/mpfe/connexion.php
http://dj.joss.free.fr/trombine.htm
Avec plaisir
Philippe.R
"Apitos" <apitos@gmail.com> a écrit dans le message de
news:1191802354.114557.91420@g4g2000hsf.googlegroups.com...
Voilà une solution d'un autre forum (Merci fred), mais elle a besoin
de quelques retouches.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Selection.Cells.Count > 1 Then End
Set isect = Application.Intersect(Target, Range("B2:C9"))
If Not isect Is Nothing Then
Select Case Target.Column
Case 2:
If IsEmpty(Target(1, 2)) Then
Target(1, 2).FormulaR1C1 = "=RC[-2]*RC[-1]"
If Target(1, 2) - Int(Target(1, 2)) = 0 Then Target(1,
2).NumberFormat = "General"
End If
Case 3:
If IsEmpty(Target(1, 0)) Then
Target(1, 0).FormulaR1C1 = "=RC[1]/RC[-1]"
If Target(1, 0) - Int(Target(1, 0)) = 0 Then Target(1,
0).NumberFormat = "General"
End If
End Select
End If
End Sub
*********
Alors j'aimerais formater les nombres decimaux dans la colonne B avec
deux chiffres apres la virgule.
Si le nombre est entier il n'y aura pas de virgule.
ainsi j'aimerais remplacer les [RC] par du code purement vba.
Une piste pour le format de nombre, avec la copie de cet échange d'il y a déjà quelques années ici même : "======================================================================" de : Nicolas B. Groupes de discussion : microsoft.public.fr.excel Envoyé : samedi 1 mai 2004 16:19 Objet : Re: Format de nombre pour avoir 2 décimales...ou pas!
Salut Philippe, J'ai cherché dans les archives, et apparemment, il n'y a pas de solution par un format personnalisé de nombre.
Voici par contre une solution macro donnée par AV il y a quelques années : Private Sub Worksheet_Change(ByVal zzz As Range) If Intersect(zzz, [A1:A10]) Is Nothing Then Exit Sub If Not IsNumeric(zzz.Value) Then Exit Sub If zzz - Int(zzz) > 0 Then zzz.NumberFormat = "0.0#" Else: zzz.NumberFormat = "General" End If End Sub
A+ -- Nicolas B. "======================================================================="
Une autre piste, pour remplacer les [RC] par du code et en même temps supprimer les références circulaires :
-- 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:
Voilà une solution d'un autre forum (Merci fred), mais elle a besoin de quelques retouches.
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Selection.Cells.Count > 1 Then End Set isect = Application.Intersect(Target, Range("B2:C9")) If Not isect Is Nothing Then Select Case Target.Column Case 2: If IsEmpty(Target(1, 2)) Then Target(1, 2).FormulaR1C1 = "=RC[-2]*RC[-1]" If Target(1, 2) - Int(Target(1, 2)) = 0 Then Target(1, 2).NumberFormat = "General" End If Case 3: If IsEmpty(Target(1, 0)) Then Target(1, 0).FormulaR1C1 = "=RC[1]/RC[-1]" If Target(1, 0) - Int(Target(1, 0)) = 0 Then Target(1, 0).NumberFormat = "General" End If End Select End If End Sub
********* Alors j'aimerais formater les nombres decimaux dans la colonne B avec deux chiffres apres la virgule.
Si le nombre est entier il n'y aura pas de virgule.
ainsi j'aimerais remplacer les [RC] par du code purement vba.
Merci.
Apitos
J'ai egalement inspirer cette ligne du code de AV :
If Target(1, 2) - Int(Target(1, 2)) = 0 Then Target(1, 2).NumberFormat = "General".
Bon je vais appliquer la totalite de l'idée et ensuite on verra.
Je vais egalement remplacer les [RC].
A suivre ...
Merci PHILLIPE.
J'ai egalement inspirer cette ligne du code de AV :
If Target(1, 2) - Int(Target(1, 2)) = 0 Then Target(1, 2).NumberFormat
= "General".
Bon je vais appliquer la totalite de l'idée et ensuite on verra.
J'ai egalement inspirer cette ligne du code de AV :
If Target(1, 2) - Int(Target(1, 2)) = 0 Then Target(1, 2).NumberFormat = "General".
Bon je vais appliquer la totalite de l'idée et ensuite on verra.
Je vais egalement remplacer les [RC].
A suivre ...
Merci PHILLIPE.
Apitos
J'ai ce code :
Option Explicit Dim li&
Private Sub Worksheet_Change(ByVal Target As Range) 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
End Sub
Mais le calcul reste encore à paufiner.
Par exempe, si je veux corriger une erreur et revenir sur une fausse sasie, ca se fige, et il ne fait rien.
Quelqu'un peut m'aider ?
Merci d'avance.
J'ai ce code :
Option Explicit
Dim li&
Private Sub Worksheet_Change(ByVal Target As Range)
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
End Sub
Mais le calcul reste encore à paufiner.
Par exempe, si je veux corriger une erreur et revenir sur une fausse
sasie, ca se fige, et il ne fait rien.
Private Sub Worksheet_Change(ByVal Target As Range) 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
End Sub
Mais le calcul reste encore à paufiner.
Par exempe, si je veux corriger une erreur et revenir sur une fausse sasie, ca se fige, et il ne fait rien.
Quelqu'un peut m'aider ?
Merci d'avance.
Apitos
J'ai ce code :
Option Explicit Dim li&
Private Sub Worksheet_Change(ByVal Target As Range) 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
End Sub
Mais le calcul reste encore à paufiner.
Par exempe, si je veux corriger une erreur et revenir sur une fausse sasie, ca se fige, et il ne fait rien.
Quelqu'un peut m'aider ?
Merci d'avance.
J'ai ce code :
Option Explicit
Dim li&
Private Sub Worksheet_Change(ByVal Target As Range)
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
End Sub
Mais le calcul reste encore à paufiner.
Par exempe, si je veux corriger une erreur et revenir sur une fausse
sasie, ca se fige, et il ne fait rien.
Private Sub Worksheet_Change(ByVal Target As Range) 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
End Sub
Mais le calcul reste encore à paufiner.
Par exempe, si je veux corriger une erreur et revenir sur une fausse sasie, ca se fige, et il ne fait rien.
Quelqu'un peut m'aider ?
Merci d'avance.
Philippe.R
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 ? 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. -- 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: J'ai ce code :
Option Explicit Dim li&
Private Sub Worksheet_Change(ByVal Target As Range) 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
End Sub
Mais le calcul reste encore à paufiner.
Par exempe, si je veux corriger une erreur et revenir sur une fausse sasie, ca se fige, et il ne fait rien.
Quelqu'un peut m'aider ?
Merci d'avance.
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 ?
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.
--
http://www.excelabo.net/mpfe/connexion.php
http://dj.joss.free.fr/trombine.htm
Avec plaisir
Philippe.R
"Apitos" <apitos@gmail.com> a écrit dans le message de
news:1192047431.996658.205260@50g2000hsm.googlegroups.com...
J'ai ce code :
Option Explicit
Dim li&
Private Sub Worksheet_Change(ByVal Target As Range)
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
End Sub
Mais le calcul reste encore à paufiner.
Par exempe, si je veux corriger une erreur et revenir sur une fausse
sasie, ca se fige, et il ne fait rien.
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 ? 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. -- 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: J'ai ce code :
Option Explicit Dim li&
Private Sub Worksheet_Change(ByVal Target As Range) 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
End Sub
Mais le calcul reste encore à paufiner.
Par exempe, si je veux corriger une erreur et revenir sur une fausse sasie, ca se fige, et il ne fait rien.
Quelqu'un peut m'aider ?
Merci d'avance.
Apitos
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.
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