> 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
Gratuit3 mois d'abonnement à Amazon Music Unlimited gratuits
Valable jusqu'au 07 Avril

Amazon vous permet d'essayer son service de streaming musical pendant 3 mois gratuitement. Avec Amazon Music Unlimited, accédez à plus de 50 millions de titres, sans publicité et en illimité sur tous vos appareils : smartphone, tablette, PC/Mac, Fire, Alexa. Vous avez même la possibilité de télécharger vos playlists pour des écoutes hors connexion. A la fin de ces 3 mois, vous pourrez basculer vers l'offre payante à 9,99 € / mois ou bien arrêter sans frais le service. A noter l'existence d'une offre famille à 14,99 € / mois qui permet jusqu'à 6 utilisateurs d'écouter leur musique à tout moment et sur leurs appareils préférés. Vous pouvez annuler l'abonnement à tout moment.


> Voir l'offre
89,99 €Caméra de surveillance additionnelle Netgear Arlo HD à 89,99 €
Valable jusqu'au 06 Avril

Amazon propose actuellement la caméra additionnelle Netgear Arlo HD VMC3030-100EUS à 89,99 € livrée gratuitement au lieu de 148 € . Elle est compatible avec les systèmes Arlo, Arlo Pro et Arlo Pro 2. Elle est étanche IP65.


> Voir l'offre
33,90 €Caméra de surveillance TP-Link Tapo C200 à 33,90 €
Valable jusqu'au 08 Avril

Amazon fait une promotion sur la caméra de surveillance TP-Link Tapo C200 qui passe à 33,90 € livrée gratuitement au lieu d'une quarantaine d'euros ailleurs. Cette caméra se connecte à votre réseau en WiFi et peut ensuite être contrôlée à distance. Elle offre une définition FullHD 1080p, la vision nocturne, la détection de mouvements (recevez une notification si quelque chose est détecté), une alarme sonore et visuelle. Le stockage se fait en local sur une carte MicroSD.


> 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