× Aidez la recherche contre le COVID-19 avec votre ordi ! Rejoignez l'équipe PC Astuces Folding@home
 > Tous les forums > Forum Bureautique
 Formule dans ExcelSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
jaclam
  Posté le 25/02/2008 @ 14:44 
Aller en bas de la page 
Petit astucien

Bonjour à tous

J'ai un tableau Excel qui a 3 colonnes (parmi de nombreuses autres)

Imaginons :

Colonne A : Date - valeur autorisée format Date

Colonne B : Opérations - valeur autorisée "Entrée" ou "Sortie" (Données...validations...liste)

Colonne D : Quantité - Valeur autorisé nombre positif ou négatif

Je veux - à condition que la colonne date soit renseignée - autoriser en C une valeur uniquement positive si la collone B contient "Entrée" ou une valeur uniquement négative si "Sortie"

Je n'ai pas trouvé le truc et je ne sais pas si c'est possible (si c'est du VB très peu pour moi)

J'ai juste trouvé une parade de contrôle à postériori, pour vérifier que je n'ai pas une valeur négative avec "Entrée" ou inversement

Dans la colonne E j'ai rajouté une formule :

=SI(A2<>0;SI(OU(ET(B2="Entrée";D2>0);(ET(B2="Sortie";D2<0)));"OK";"Vérifier quantité !");"")

Résultat :

Si ligne 2 = Date à vide E2 sera vierge

Si ligne 2 : Date renseignée, B2 = "Entrée" et D 2 = 500 en E2 j'aurais "OK"

Si ligne 2 : Date renseignée, B2 = "Entrée" et D 2 = - 500 en E2 j'aurais "Vérifier quantité !"

Tout cela marche mais reste très complexe. Quelqu'un aurait mieux SVP ?

Merci d'avance pour vos tuyaux

Publicité
clbugnot
 Posté le 25/02/2008 à 14:57 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

Bonjour jaclam

Problème pour le forum Bureautique. Clique l'icone dans le bandeau au-dessus de ton premier post et dans la fenêtre qui s'affiche, demande au modérateur d'y déplacer ton sujet.

pcastuces
 Posté le 25/02/2008 à 18:33 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Equipe PC Astuces
Bonjour,

Le sujet a été déplacé par la modération dans un forum plus adéquat.


Vous pouvez continuer la discussion à la suite.

A bientôt.
ferrand
 Posté le 25/02/2008 à 20:03 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Salut,

Un petit exemple ICI (à affiner).

C'est quand même mieux avec une petite macro, en plus de contrôler ça rectifie les saisies non conformes (à tester). La macro se trouve dans le module de Feuil1 [clic droit sur l'onglet et Visualiser le code, pour y accéder]. A recopier dans le module de la feuille concernée par ce contrôle de conformité (à ajuster selon besoins s'il y a lieu).

qmike
 Posté le 25/02/2008 à 20:38 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

bonjour

ferrand bien joué

Bravo !

jaclam
 Posté le 25/02/2008 à 22:55 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Je n'ai qu'un seul mot, ou plutôt 2 : "Bravo , Merci" et je le crie très fort

Maintenant plus doucement car j'ai un peu honte, tu peux me confirmer ma bonne compréhension de chaque ligne ? (' cf mes commentaires et questions) Je suis nul en VB et je n'ai jamais trouvé un "prof" qui m'explique simplement.

==============

Private Sub Worksheet_Change(ByVal Target As Range) ' Explication de texte ?
If Target.Column = 4 Then ' Si on se trouve dans la colonne 4 (soit D)
If IsNumeric(Target.Value) Then ' Si il y a une valeur numérique
If Target.Offset(0, -3) > 0 Then 'Si en reculant de 3 colonnes valeur sup à 0 (donc date renseignée)
If Target > 0 And Target.Offset(0, -2) = "Sortie" Then 'Si valeur D sup à 0 alors que colonne - 2 = 'Sortie"
Target = -Target ' Valeur = - Valeur (on inverse le signe)
ElseIf Target < 0 And Target.Offset(0, -2) = "Entrée" Then 'Si val D inf à 0 alors que colonne - 2 = 'Entrée"
Target = -Target ' Valeur = - Valeur (inverser signe)-si au lieu de ça je veux refuser avec message ?
ElseIf Target.Offset(0, -2) = "" Then 'Si colonne - 2 non renseignée
Target.ClearContents ' Effacer Valeur- même question que ci-dessus
End If
Else
Target.ClearContents ' Effacer Valeur - je ne comprends pas pourquoi encore cette instruction
End If
End If
End If
End Sub

=================

Re-merci

jaclam
 Posté le 25/02/2008 à 23:21 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Je suis pas peu fier car j'ai trouvé :

If Target > 0 And Target.Offset(0, -2) = "Sortie" Then
Target.ClearContents
MsgBox "Vous avez saisi une quantité positive alors qu'il s'agit d'une sortie", vbOKOnly, "Erreur de saisie"
ElseIf Target < 0 And Target.Offset(0, -2) = "Entrée" Then
Target.ClearContents
MsgBox "Vous avez saisi une quantité négative alors qu'il s'agit d'une entrée", vbOKOnly, "Erreur de saisie"

En plus, en mettant en colonne D un contrôle de validation des données (Autoriser différent de 0) j'interdis également une saisie nulle.

Il reste donc mes 2 questions concernant début et fin de la macro

Merci

Bérylion
 Posté le 25/02/2008 à 23:57 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Salut

bien joué ferrand, mais pas besoin de tant pour si peu :
en D1: validation/personnalisée =SI(B1="entrée";D1=ABS(D1);-D1=ABS(D1))


ferrand
 Posté le 27/02/2008 à 08:30 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

jaclam a écrit :

Je suis pas peu fier car j'ai trouvé :

If Target > 0 And Target.Offset(0, -2) = "Sortie" Then
Target.ClearContents
MsgBox "Vous avez saisi une quantité positive alors qu'il s'agit d'une sortie", vbOKOnly, "Erreur de saisie"
ElseIf Target < 0 And Target.Offset(0, -2) = "Entrée" Then
Target.ClearContents
MsgBox "Vous avez saisi une quantité négative alors qu'il s'agit d'une entrée", vbOKOnly, "Erreur de saisie"

En plus, en mettant en colonne D un contrôle de validation des données (Autoriser différent de 0) j'interdis également une saisie nulle.

Il reste donc mes 2 questions concernant début et fin de la macro

Merci

Salut, excuses : je n'ai guère le temps de passer en ce moment ni de rester longtemps...

If Target.Offset(0, -3) > 0 Then 'Si en reculant de 3 colonnes valeur sup à 0 (donc date renseignée)
Else 'Sinon (= si date non renseignée)
Target.ClearContents ' Effacer Valeur

Private Sub Worksheet_Change(ByVal Target As Range) ' Explication de texte ?

il s'agit d'une macro évènementielle, attachée à la feuille de calcul dans le module de laquelle elle se trouve ; elle s'exécute lorsque la valeur d'une cellule de ladite feuille est modifiée (évènement déclencheur) ; et elle a la bonne idée de te fournit sous forme d'argument la cellule dont la valeur est modifiée (objet Range) ; la suite en découle...

Salut Bérylion, tu as tout à fait raison mais comme tu vois on part d'une macro tout à fait élémentaire et puis on se dit qu'on pourrait améliorer... le confort, l'esthétique, le rayon d'action, etc. et on rajoute de bribes de code au fur et à mesure...

Bonne journée. A plus tout le monde.

Publicité
jaclam
 Posté le 27/02/2008 à 09:45 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

En tout cas merci à vous deux de votre aide précieuse. Ce me donne envie d'en savoir encore plus.

Bonne maladie non ?

Bonne journnée

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
56,23 €SSD Samsung 860 EVO 500 Go à 56,23 € livré
Valable jusqu'au 30 Novembre

Amazon Allemagne fait une promotion sur le SSD Samsung 860 EVO 500 Go qui passe à 51,62 €. Comptez 4,61 € pour la livraison en France soit un total de 56,23 € livré alors qu'on le trouve ailleurs à partir de 70 €. Ce SSD offre des vitesses de 560 Mo/s en lecture et 520 Mo/s en écriture. Il est garanti 5 ans. Une bonne affaire.

Vous pouvez utiliser votre compte Amazon France sur Amazon Allemagne et il n'y a pas de douane. Si vous êtes perdu en allemand, vous pouvez traduire le site en anglais.


> Voir l'offre
279 €Smartphone 6,5 pouces Samsung Galaxy A51 (FullHD+, 8 coeurs, 4Go, 128Go, 2 SIM) à 279 €
Valable jusqu'au 28 Novembre

Amazon fait une promotion sur le smartphone 6,5 pouces Samsung Galaxy A51 (double SIM, 128 Go) qui passe à 279 € livré gratuitement au lieu de 320 €. Laissez-vous embarquer grâce à l'incroyable écran Super AMOLED de 6.5" à résolution Full HD+ de 1080 x 2400 pixels du Samsung Galaxy A51. Offrant une incroyable clarté lors de vos utilisations, il s'arme de toutes les dernières innovations pour vous simplifier la vie et vous permettre de laisser libre cours à toutes vos envies.

En effet, grâce à son processeur Exynos 9611 Octo-Core cadencé à 2.3 GHz, ses 4 Go de RAM et sa capacité de stockage de 128 Go (extensible via carte microSDXC), vous disposez de toute la puissance nécessaire pour une expérience fluide et sans compromis. Et pour briller au quotidien, il dispose également d'un appareil photo principal à quatre capteurs photo 48+12+5+5 MP, et d'une caméra frontale de 32 MP afin de vous en mettre plein la vue. 

Côté fonctionnalités, il est équipé d'un lecteur d'empreinte sous l'écran, du NFC, du Bluetooth 5.0, d'un port USB-C et d'Android 10.


> Voir l'offre
172,99 €SSD Crucial MX500 2 To à 172,99 €
Valable jusqu'au 28 Novembre

Amazon propose actuellement le SSD Crucial MX500 2 To à 172,99 € livré. On le trouve ailleurs à partir de 220 €. Ce SSD salué par la critique par son rapport qualité prix imbattable offre des débits de 560 Mo/s en lecture et 510 Mo/s en écriture. Il est garanti 5 ans.


> Voir l'offre

Sujets relatifs
Excel reporter détail de calcul dans formule
HELP => Formule conditionnelle dans Excel 2007
Excel 2007 résultat formule dans une autre cellule
Excel 2007 formule et saisie dans la même cellule
FORMULE EXCEL POUR RECHERCHE DANS UNE TABLE
formule modifiée dans excel donne pas résultat
Formule dans Excel
insérer un retour ligne dans une formule excel
une erreur dans la formule de calcul avec excel
formule pour excel et # dans excel
Recopier formule dans Excel
Plus de sujets relatifs à Formule dans Excel
 > Tous les forums > Forum Bureautique