Validation de données

Vieupot

XLDnaute Occasionnel
Bonjour

j'ai en C12 une liste de données avec choix "recette" "dépense"
en d12 j'entre par exemple 1000
je voudrais trouver une validation de données qui dise
si C12 = "dépense" il faut entrer une donnée négative , si ce n'est pas le cas un message d'erreur qui dirait attention la somme doit être négative
Avez vous une idée je coince sur la formule "si"
Merci par avance
Bernard
 

JBARBE

XLDnaute Barbatruc
Bonjour à tous,
Si j'ai bien compris en C12 ( par contre je ne comprends pas le message d'erreurs) :
=SI(D12>0;"recette";SI(D12<0;"dépense";""))

Pour le message en E12 :
=SI(D12<0; "Attention la somme doit être négative";"")
Bonne journée
 
Dernière édition:

Vieupot

XLDnaute Occasionnel
Bonjour
tout d'abord merci à JBARBE et Chris pour vos réponses

JBARBE: j'ai du mal m'exprimer et je joins un nouvel exemple...pas facile d'exprimer à des pros ce que j'ai dans la tête
'attention voir feuille 1 et 2 dans le nouveau fichier joint
Pour Chris : en fait ta formule que j'ai intégré dans validations de données personnalisée ne fonctionne pas.
si je saisi une somme supérieure à "0" alors que dépense est sélectionné j'ai bien le message d'alerte c'est ok
mais si je saisi une somme précédée du signe moins j'ai également le message d'erreur
cordialement
Bernard
 

Pièces jointes

  • somme négative.xlsx
    18.3 KB · Affichages: 39

chris

XLDnaute Barbatruc
Bonjour

Tu as mal lu mon message : je n'ai pas marqué Personnalisé mais "Autoriser décimal, Inférieur ou égale"

Edit : voir fichier joint pour MFC et autres validations

J'ai défusionné une cellule afin d'avoir une seule ligne de titre pour simplifier un peu
 

Pièces jointes

  • somme négative_chris.xlsx
    20.1 KB · Affichages: 45
Dernière édition:

Vieupot

XLDnaute Occasionnel
ok Chris ça fonctionne,mais je n'avais pas prévu que si je sélectionne "recette" il m'est possible cette fois d'entrer une valeur négative. Une recette ne peut être négative. y a t-il une solution pour que sélection "dépense " oblige à entrer un montant négatif et sélection "recette oblige montant positif ?
D'autre part au risque de paraitre nul je n'aime pas ne pas comprendre... et j'ai du mal avec ta formule ci dessous qui fonctionne
avec mes petites connaissances j'interprète: siB12 = Recette, si vrai "0" sinon "1000000000" et la j'avoue ne pas comprendre
=SI($B12="dépense";0;1000000000)
je sais que de telles questions doivent être agaçantes mais recopier bêtement sans oser dire ne pas avoir compris ne permets pas de progresser et ça je ne le souhaite pas
Merci encore de ton aide
Bernard
 

chris

XLDnaute Barbatruc
Re

J'en ai tenu compte des recettes obligatoirement positives dans ma pièce jointe pour l'onglet 2 : tu peux donc adapter pour le 1er.

Pour la formule : si dépense (et non recette en C12) la valeur à laquelle doit être inférieure la cellule est 0 sinon un nombre énorme.

Pour la formule de l'onglet 2, le compris entre fixe aussi les limites entre
- 1 000 000 000 et 0 pour négatif
0 à 1 000 000 000 pour positif
 

cathodique

XLDnaute Barbatruc
Bonjour Vieupot, Le Forum,

un essai, copie ce code dans le module de la feuille.
Clic Droit sur l'onglet Feuil1, ensuite clique sur VISUALISER LE CODE, un module de code s'ouvre, c'est là que tu dois mettre le code.
VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Range("C12")) Is Nothing Then
        Application.EnableEvents = False
        On Error Resume Next
       
If Target.Offset(0, -1) = "dépense" Then
        If IsNumeric(Target) = True Then
            Target.Value = Target.Value * -1
                    End If
                    End If

        Application.EnableEvents = True
    End If
End Sub
si j'ai bien compris, tu veux saisir un montant en C12 et si en B12 il y a dépense le montant devient négatif.
N'oublie pas de supprimer la validation que tu as mis en place en C12.
 

Vieupot

XLDnaute Occasionnel
Merci Chris pour ton explication détaillée, merci de m'apprendre à pêcher.....j'ai faim de savoir et j'aime ça donc ça viendra!

Pour cathodique: ok le code fonctionne sauf que si je sélectionne "recette" dans la liste de données en B12...l'utilisateur peut entrer une somme négative par erreur et ça c'est un problème pour moi. Je suppose que le code peut-être adapté..
que j'aimerai pouvoir faire ça facilement
je n'y connais rien en code VBA mais je pense lire que si la colonne sélectionnée à gauche de la cellule active (0, -1) est "dépense" tu multiplie la cellule sélectionnée par -1
j'aurai tendance à dire que si la cellule à gauche de la cellule sélectionnée est" recette" le chiffre doit être supérieure à 1....mais bon c'est une connerie car le fait de vouloir dire ça ne corrigera pas l'erreur...
peut-être adapter le code..
s'il existe une solution j'aimerai la connaitre

Merci encore à vous de m'aider à progresser
cordialement
Bernard
 

cathodique

XLDnaute Barbatruc
Re, J'ai pris en compte ton post #9.

Je pense qu'avec ce dernier, toutes les recettes seront positives et les dépenses négatives et ce, même si on insère par inadvertance le signe - (moins).
VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Range("C12")) Is Nothing Then
        Application.EnableEvents = False
        On Error Resume Next

        If Target.Offset(0, -1).Value = "Dépense" Then
            If IsNumeric(Target) = True Then
                Target.Value = (Abs(Target.Value)) * -1 ' dépense négative même avec le signe moins devant
            End If
        End If
        If Target.Offset(0, -1).Value = "Recette" Then
            If IsNumeric(Target) = True Then
                Target.Value = Abs(Target.Value)  'recette positive même avec le signe moins devant
            End If
        End If

        Application.EnableEvents = True
    End If
End Sub
à tester. Bonne soirée.
 

Vieupot

XLDnaute Occasionnel
Chris
En un premier temps: explication claire de la décomposition de la formule
je suis un peu coincé avec ton post.... je tiens à savoir pourquoi j'ai encore un problème..
En fait ça fonctionne partiellement
Rassure moi Le fichier que tu as mis en exemple ne peut-être modifié qu'après un téléchargement car il se trouve qu'il m'arrive avec " données corrompues " dés l'ouverture et ne fonctionne pas pour la feuille 2
pris par le temps je reviens vers toi Dimanche soir ou lundi car je vais être absent demain . je n'aime pas laisser les choses en attente sans réponse considérant que celui qui passe du temps pour moi mérite réponse
La solution validation de données m'intéresse autant qu'un code aussi je ne laisse pas tomber
A bientôt

Cathodique
Merci de ta deuxième proposition de code mais comme dit a Chris pour ce week end je n'ai plus de temps...
j'e ferai des essais prochainement et te tiendrai informé

Merci à vous deux, merci de votre aide précieuse et bon week end

Bernard
 

chris

XLDnaute Barbatruc
Re

Quand j'ouvre le fichier joint au # 7 depuis ce site je n'ai pas d'erreur.

Peut-être un problème avec 2007 par rapport à 2010...

Je te remet le fichier où j'ai modifié la validation en Feuil1.

Les 2 feuilles fonctionnent chez moi... y compris la copie du bloc de lignes 11 à 20
 

Pièces jointes

  • somme négative_chris.xlsx
    18.3 KB · Affichages: 43

Vieupot

XLDnaute Occasionnel
Bonsoir Chris et Cathodique

comme promis des réponses

Chris:
message reçu à l'ouverture;: voulez vous récupérer le contenu de ce classeur si vous le jugez fiable cliquez sur oui
j'ai donc récupéré le classeur mais il reste des problèmes
au niveau de la mise en forme des couleurs dans la feuille 2 pas de problème sauf sur deux cellules sur la recopie et uniquement sur la sélection de recette il me semble D,E ne changent pas....
par contre sur le premier enregistrement en C2 ça fonctionne pour les couleurs
en ce qui concerne les signes négatifs , rien ne fonctionne chez moi, et le message indique de saisir du négatif, et même si je le fais ça coince. j'ai le message
je ne vais donc pas t'importuner plus à ce sujet, tu as fait au mieux et je vais essayer de faire plus simple et je te remercie beaucoup
De toute façon je n'abandonne pas et j'aurai certainement l'occasion de te revoir....

Pour Cathodique
ton nouveau code ne fonctionne pas du tout alors que ta première proposition fonctionne parfaitement sauf pour les recettes mais ça nous l'avions vu et c'est pour cela que tu m'a adressé le second code qui tenait compte de ma remarque.
Par sécurité j'ai crée une nouvelle feuille de calcul et j'ai intégré le premier code qui fonctionne pour les dépenses.
Je l'ai effacé et remplacé par le second code et la rien......et aucun message d'erreur
Voila...c'est tout ce que je peux dire à mon faible niveau, sinon que je n'avais pas oublié d'effacer tes explications de couleur verte.
J'ai vu que en différence il y avait des parenthèses j'ai modifié mais rien ne change
Petite précision...tu dis : Clic Droit sur l'onglet Feuil1, ensuite clique sur VISUALISER LE CODE, un module de code s'ouvre, c'est là que tu dois mettre le code.
Chez moi, vers 2007, clic droit sur la feuil1, n'ouvre pas d'option visualiser le code.... j'ai donc copié le code dans la partie droite de l'écran par copié collé... Le premier code fonctionne donc ce doit être le bon emplacement

Merci quand même et ne t'embête pas trop avec ça...ce n'est pas grave
Cordialement à vous deux et à bientôt
Bernard
 

Discussions similaires