OVH Cloud OVH Cloud

Une fct SI compliquée!!

22 réponses
Avatar
Toan
Bonjour,

Je voudrais cr=E9e deux colonnes num=E9riques et tester l'une=20
d'entre-elle.

Je m'explique:
Dans la premi=E8re colonne qui contient le champ PRIX et=20
dans la deuxi=E8me le champ NOUVEAU_PRIX et je voudrais d=E8s=20
que l'on saisi le nouveau prix dans la deuxi=E8me colonne=20
on apllique un test:

Le nouveau prix ne doit pas descendre en dessous du prix=20
actuel(premi=E8re colonne), donc si saisit un nouveau prix=20
inf=E9rieur =E0 l'ancien dans la deuxi=E8me colonne, on=20
applique par d=E9faut le prix de la premi=E8re colonne, sinon=20
si c'est sup=E9rieur on le laisse.

Par exemple:
L'ancien prix est 45, dans le nouveau si c'est > 45(par=20
ex. 69), on ne fait rien, sinon si(on tape 12 par ex.),=20
on met l'ancien prix c'est-=E0-dire 45!

Une fonction SI du genre:
=3DSI(A2>B2;A2;B2), =E7a ne marche pas!!!

Pouvez-vous m'aider?

Merci

10 réponses

1 2 3
Avatar
Jacky
Bonjour Toan

En VBA clique droit sur l'onglet de la feuille>> Visualiser le code, copie
ceci:
'-----------
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If [b2] = "" Then Exit Sub
If [a2] > [b2] Then [b2] = [a2]
End Sub
'--------------

Salutations,
JJ

"Toan" a écrit dans le message de
news:2055c01c45922$bf6601b0$
Bonjour,

Je voudrais crée deux colonnes numériques et tester l'une
d'entre-elle.

Je m'explique:
Dans la première colonne qui contient le champ PRIX et
dans la deuxième le champ NOUVEAU_PRIX et je voudrais dès
que l'on saisi le nouveau prix dans la deuxième colonne
on apllique un test:

Le nouveau prix ne doit pas descendre en dessous du prix
actuel(première colonne), donc si saisit un nouveau prix
inférieur à l'ancien dans la deuxième colonne, on
applique par défaut le prix de la première colonne, sinon
si c'est supérieur on le laisse.

Par exemple:
L'ancien prix est 45, dans le nouveau si c'est > 45(par
ex. 69), on ne fait rien, sinon si(on tape 12 par ex.),
on met l'ancien prix c'est-à-dire 45!

Une fonction SI du genre:
=SI(A2>B2;A2;B2), ça ne marche pas!!!

Pouvez-vous m'aider?

Merci
Avatar
Lolote
Salut Toan,
Ceci n'est pas vraiment rationnel, mais tu peux utiliser Données,
Validation,
Dans Autoriser selectionner Nombre entier
Dans Données sélectionner Supérieur ou égale à
Dans Minimum sélectionner la cellule de l'ancien prix.

Le problème est qu'à chaque fois que le nombre saisi est inférieur, tu auras
un méssage t'invitant à saisir une autre donnée.

Cela convien-t-il ??

@+ Lolote


"Toan" a écrit dans le message de
news: 2055c01c45922$bf6601b0$
Bonjour,

Je voudrais crée deux colonnes numériques et tester l'une
d'entre-elle.

Je m'explique:
Dans la première colonne qui contient le champ PRIX et
dans la deuxième le champ NOUVEAU_PRIX et je voudrais dès
que l'on saisi le nouveau prix dans la deuxième colonne
on apllique un test:

Le nouveau prix ne doit pas descendre en dessous du prix
actuel(première colonne), donc si saisit un nouveau prix
inférieur à l'ancien dans la deuxième colonne, on
applique par défaut le prix de la première colonne, sinon
si c'est supérieur on le laisse.

Par exemple:
L'ancien prix est 45, dans le nouveau si c'est > 45(par
ex. 69), on ne fait rien, sinon si(on tape 12 par ex.),
on met l'ancien prix c'est-à-dire 45!

Une fonction SI du genre:
=SI(A2>B2;A2;B2), ça ne marche pas!!!

Pouvez-vous m'aider?

Merci
Avatar
Toan
Salut Lolote,

Peut-t'on faire cette manip pour toute la colonn?

Avec la poignée copié?

Merci de ta réponse

-----Message d'origine-----
Salut Toan,
Ceci n'est pas vraiment rationnel, mais tu peux utiliser
Données,

Validation,
Dans Autoriser selectionner Nombre entier
Dans Données sélectionner Supérieur ou égale à
Dans Minimum sélectionner la cellule de l'ancien prix.

Le problème est qu'à chaque fois que le nombre saisi est
inférieur, tu auras

un méssage t'invitant à saisir une autre donnée.

Cela convien-t-il ??

@+ Lolote


"Toan" a écrit
dans le message de

news: 2055c01c45922$bf6601b0$
Bonjour,

Je voudrais crée deux colonnes numériques et tester l'une
d'entre-elle.

Je m'explique:
Dans la première colonne qui contient le champ PRIX et
dans la deuxième le champ NOUVEAU_PRIX et je voudrais dès
que l'on saisi le nouveau prix dans la deuxième colonne
on apllique un test:

Le nouveau prix ne doit pas descendre en dessous du prix
actuel(première colonne), donc si saisit un nouveau prix
inférieur à l'ancien dans la deuxième colonne, on
applique par défaut le prix de la première colonne, sinon
si c'est supérieur on le laisse.

Par exemple:
L'ancien prix est 45, dans le nouveau si c'est > 45(par
ex. 69), on ne fait rien, sinon si(on tape 12 par ex.),
on met l'ancien prix c'est-à-dire 45!

Une fonction SI du genre:
=SI(A2>B2;A2;B2), ça ne marche pas!!!

Pouvez-vous m'aider?

Merci




.



Avatar
AV
En supposant A = ta colonne avec les anciens prix
Pour la saisie (telle que tu la souhaites) des nouveaux prix en colonne B :
Dans le module de la feuille :

Private Sub Worksheet_Change(ByVal zz As Excel.Range)
If zz.Column <> 2 Then Exit Sub
If Selection.Count > 1 Then Exit Sub
If zz.Value < zz.Offset(0, -1).Value Then
Application.EnableEvents = False
zz = zz.Offset(0, -1).Value
Application.EnableEvents = True
End If
End Sub

AV
Avatar
Lolote
Salut Toan,

Oui, c'est possible, mais utilise ta poignée de recopie avant même d'y avoir
inscrit des valeurs sinon elles seront recopiées.
De plus, parcours les différents onglets de la boite de dialogue, tu peux y
inscrires quelques trucs peronalisés.

@+ Lolote

"Toan" a écrit dans le message de
news: 2073001c4592f$89f50e10$
Salut Lolote,

Peut-t'on faire cette manip pour toute la colonn?

Avec la poignée copié?

Merci de ta réponse

-----Message d'origine-----
Salut Toan,
Ceci n'est pas vraiment rationnel, mais tu peux utiliser
Données,

Validation,
Dans Autoriser selectionner Nombre entier
Dans Données sélectionner Supérieur ou égale à
Dans Minimum sélectionner la cellule de l'ancien prix.

Le problème est qu'à chaque fois que le nombre saisi est
inférieur, tu auras

un méssage t'invitant à saisir une autre donnée.

Cela convien-t-il ??

@+ Lolote


"Toan" a écrit
dans le message de

news: 2055c01c45922$bf6601b0$
Bonjour,

Je voudrais crée deux colonnes numériques et tester l'une
d'entre-elle.

Je m'explique:
Dans la première colonne qui contient le champ PRIX et
dans la deuxième le champ NOUVEAU_PRIX et je voudrais dès
que l'on saisi le nouveau prix dans la deuxième colonne
on apllique un test:

Le nouveau prix ne doit pas descendre en dessous du prix
actuel(première colonne), donc si saisit un nouveau prix
inférieur à l'ancien dans la deuxième colonne, on
applique par défaut le prix de la première colonne, sinon
si c'est supérieur on le laisse.

Par exemple:
L'ancien prix est 45, dans le nouveau si c'est > 45(par
ex. 69), on ne fait rien, sinon si(on tape 12 par ex.),
on met l'ancien prix c'est-à-dire 45!

Une fonction SI du genre:
=SI(A2>B2;A2;B2), ça ne marche pas!!!

Pouvez-vous m'aider?

Merci




.



Avatar
Jacky
Bonjour Alain

Pourrais-tu expliquer:
If Selection.Count > 1 ??
STP
Merci
JJ

"AV" a écrit dans le message de
news:
En supposant A = ta colonne avec les anciens prix
Pour la saisie (telle que tu la souhaites) des nouveaux prix en colonne B
:

Dans le module de la feuille :

Private Sub Worksheet_Change(ByVal zz As Excel.Range)
If zz.Column <> 2 Then Exit Sub
If Selection.Count > 1 Then Exit Sub
If zz.Value < zz.Offset(0, -1).Value Then
Application.EnableEvents = False
zz = zz.Offset(0, -1).Value
Application.EnableEvents = True
End If
End Sub

AV





Avatar
Toan
Merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii!
;-)

Heuresement qu'il y a des gens comme vous pour aider des
gens comme moi!

@+

-----Message d'origine-----
Salut Toan,

Oui, c'est possible, mais utilise ta poignée de recopie
avant même d'y avoir

inscrit des valeurs sinon elles seront recopiées.
De plus, parcours les différents onglets de la boite de
dialogue, tu peux y

inscrires quelques trucs peronalisés.

@+ Lolote

"Toan" a écrit
dans le message de

news: 2073001c4592f$89f50e10$
Salut Lolote,

Peut-t'on faire cette manip pour toute la colonn?

Avec la poignée copié?

Merci de ta réponse

-----Message d'origine-----
Salut Toan,
Ceci n'est pas vraiment rationnel, mais tu peux utiliser
Données,

Validation,
Dans Autoriser selectionner Nombre entier
Dans Données sélectionner Supérieur ou égale à
Dans Minimum sélectionner la cellule de l'ancien prix.

Le problème est qu'à chaque fois que le nombre saisi est
inférieur, tu auras

un méssage t'invitant à saisir une autre donnée.

Cela convien-t-il ??

@+ Lolote


"Toan" a écrit
dans le message de

news: 2055c01c45922$bf6601b0$
Bonjour,

Je voudrais crée deux colonnes numériques et tester
l'une


d'entre-elle.

Je m'explique:
Dans la première colonne qui contient le champ PRIX et
dans la deuxième le champ NOUVEAU_PRIX et je voudrais
dès


que l'on saisi le nouveau prix dans la deuxième colonne
on apllique un test:

Le nouveau prix ne doit pas descendre en dessous du prix
actuel(première colonne), donc si saisit un nouveau prix
inférieur à l'ancien dans la deuxième colonne, on
applique par défaut le prix de la première colonne,
sinon


si c'est supérieur on le laisse.

Par exemple:
L'ancien prix est 45, dans le nouveau si c'est > 45(par
ex. 69), on ne fait rien, sinon si(on tape 12 par ex.),
on met l'ancien prix c'est-à-dire 45!

Une fonction SI du genre:
=SI(A2>B2;A2;B2), ça ne marche pas!!!

Pouvez-vous m'aider?

Merci




.




.




Avatar
AV
Merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii!


Fallait surtout pas te confondre en remerciements : C'était avec plaisir !

AV

Avatar
AV
Pourrais-tu expliquer:
If Selection.Count > 1 ??


C'est juste pour éviter un plantage en cas de sélection multiple qui serait
suivie d'effacement ou d'une saisie ou d'un déplacement

AV

Avatar
Jacky
Merci
Mais cela provoque quand même une erreur avec une sélection multiple avec
une validation par un clique sur une autre cellule.
Y a t'il moyen de contrôler cela ??

JJ

"AV" a écrit dans le message de
news:%
Pourrais-tu expliquer:
If Selection.Count > 1 ??


C'est juste pour éviter un plantage en cas de sélection multiple qui
serait

suivie d'effacement ou d'une saisie ou d'un déplacement

AV






1 2 3