Condition SI avec liste déroulante sur 2 colonnes
Bonjour,
Voilà après avoir introduit manuellement mes valeurs de quantités dans la colonne B je ne parvient pas à mettre ma colonne B en négative suite au choix de ma liste déroulante. (ici sur le tableau du B6:B9 les valeurs)
Càd quand je choisis NEGATIVE dans la liste déroulante ma colonne B devrait s'afficher en négative et j'aurai aussi mes Prix Total en négative. (ma colonne B devrait rester en négative après mon choix afin que la quantité puis être recalculer pour autre fonction).
Pourriez vous m'éclairer svp.
Merci d'avance
Bonjour ,
Si tu veux faire cela sans VBA il me semble qu'il te faut une autre colonne qui elle agira en fonction du choix.
Ex : =SI(F1="POSITIVE";+B6;-B6)
Sinon en VBA :
Dim i as long
For i = 6 to 9
If Range("F1").Value = "POSITIVE" then
Range("B" & i).Value = +Range("B" & i).Value
Else
Range("B" & i).Value = -Range("B" & i).Value
End if
Next iBonne journée
Bonjour,
J'ai essayé avec les deux méthodes mais cela ne fonctionne pas .
Pourrais tu le faire sur le fichier lui-même "ci-dessous" car moi de mon coté quand je choisis le négative de la liste déroulante, les valeurs de la colonne B restent toujours en positive càd si les valeurs devient négative du coup j'obtiendrai aussi une valeur négative pour la colonne D.
Merci et bonne journée
Bonjour Koko,
Je te remercie pour le temps que tu as consacrés c'est bien ça comme résultat, étant donné j'ai déjà une structure je ne peux ajouter une troisième colonne.
y aurai t-il une solution plus simple? càd comme dans mon ficher nommé AB.
Choisis B (liste déroulant) les valeurs devient négative.
PS= L'intérêt de cette manipulation 1) ne peux ajouter une colonne (toute la structure devrait changer) 2) les valeurs de cette colonne servent aussi pour d'autre calcule.
Merci d'avance
Thibet
Bonjour Thibet,
Sans pouvoir ajouter de colonne je passerais par VBA dans ce cas
Fichier ci-joint à adapter à ton fichier d'origine
Je me suis pas embêter à choisir la dernière ligne car je ne sais pas comment est construit ton fichier, je ne voudrais pas que la macro se déclenche sur toute la colonne si la plage est défini.
Le code est tout simple :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
If Not Intersect(Target, Range("F1")) Is Nothing Then 'se déclenche au changement de la valeur de la cellule F1
For i = 4 To 13 'boucle de la ligne 3 à 14
If Range("F1").Value = "A" Then 'Si la cellule "F1" est = à "A"
Range("D" & i).Value = Abs(Range("D" & i).Value) 'Alors la colonne D et la ligne i (de 4 à 13) positif
Else
Range("D" & i).Value = Range("D" & i).Value * -1 'sinon négatif
End If
Next i
End If
End Sub
Bonjour Koko,
Merci infiniment,
De mon côté j'ai utilisé ton macro précèdent et l'assigné à une zone de liste déroulante (contrôle de formulaire) ça fonctionne aussi impec voir le fichier f-ndc
ci-dessous.
Merci encore
Pour ce même fichier, à l'ouverture j'ai peu à mettre un login et mot de passe (excelformation.fr info via YouTube) y en a pas mal MAIS est-il possible d'ajouter un user forme de confirmation de demander un nom ou un numéro de mobile à l'ouverture avant le login est mot de passe qui se déclenche ? le fichier login et mot de passe ci-dessous
Bonjour Thibet,
Tout d'abord, je t'invite à marquer ce sujet comme résolu et à en créer un nouveau, de cette façon les personnes intéressé par le sujet du login passeront par là
Ensuite je ne suis pas sûr d'avoir tout compris ...
Tu souhaite créer un nouvel useform qui se déclenche à l'ouverture avant celui de connexion ?
Si c'est bien cela, alors :
- Créer un nouveau usf, normalement tu as sur la droite le Projet - VBAPROJECT avec :
-> Microsoft Excel Objet (tes feuilles excel)
-> Feuilles (les usf)
-> Modules (les modules)
Pour créer un usf il te suffit de faire un clic droit dans la partie Projet, puis insertion, usf. Sinon directement depuis insertion dans la barre de l'éditeur.
- Ensuite tu créer une nouvelle macro dans la partie "module" comme celle nommé connecter dans ton fichier. Mais à la place de "connexion.show" tu remplace par le nom de ton nouveau usf, ex : "usf.show"
- Une fois la macro créé, dans ThisWorkbook, modifier la macro situé dans la procédure : "Private Sub Workbook_Open()" afin d'appeler ton nouveau usf via la macro précédemment créé . Actuellement il déclenche la macro nommé "connecter" qui elle enclenche l'ouverture de l'usf "connexion".
- Enfin à la validation de ton nouveau formulaire (tel mail), bien penser à déclencher la macro "connecter" pour enchaîner sur la suite de la connexion.
Espérant t'avoir aider, je te laisse faire les test (et créer un nouveau sujet si nécessaire)
Bonne fin de journée !
Bonjour Koko,
Voilà jusqu'à vos explications je pense que je l'ai fais mais après pour le macro plus d'explication.
Si vous pourriez m'éclairer étant très novice merci d'avance.
login: Alexandre
Mdp; aaaa
Quelques chose dans le genre, je te préconise de bien nommer les macros par leurs utilités, dans l'exemple j'ai mis "connecter2" mais il faut trouver un autre nom plus parlant sinon tu peux vite t'y perdre
Koko un tout grand merci!
Une question bête;
j'ai deux feuilles (Feuille A "là où j'insère les informations de 5 lignes et Feuille B 'la c'est un tableau avec tous ce que j'insère) de ce fait on peut visualiser (juste en lecture seule) est protégé par protéger la feuille et les contenues des cellules verrouillés avec un mot de passe "123"
sur ma feuille A j'ai l'instruction (le macro) un bouton qui exécute mon macro sur la feuille B mais ne fonctionne pas ....
J'ai essayé ;
Sub MacroavecfeuilleProtect()
ActiveSheet.Unprotect "lemotdepasse"
'Placez ici vos instructions
ActiveSheet.Protect "lemotdepasse", True, True, True
End Sub
aussi testé Me.Unprotect "mon mot de passe"
mais je ne sais pas comment faire, si tu pourrais me montrer ou placer exactement mes instruction de macro
Merci d'avance
Bonjour Koko,
Je viens de tester le fichier ci-dessous à 2 logins ça fonctionne parfaitement les 2 USF se suivent l'un après l'autre.
Mais au niveau de la première validation après avoir introduit le mot de passe "Connecter2" il s'ouvre sur le deuxième USF login et mot de passe jusqu'à OK.
Même si on laisse vide le textbox1 sans rien indiquer il laisse passer à la 2ieme USF ici l'objectif c'était de le bloquer.
Merci de m'éclairer.
Thibet
Bonjour Thibet,
Je ne suis pas sûr de comprendre, tu veux bloquer l'accès à la feuille B par un mot de passe et la déverrouiller si la saisie du mot de passe est correct ?
Peux tu me renvoyer ton fichier en question ?
Pour ta deuxième question, il faut donc que tu modifie la procédure valider de ton 1er usf. En effet, j'ai uniquement indiqué que lorsque l'utilisateur clic sur valider il appel la macro nommé connecter2 qui elle lance le 2ème usf.
Pour ce faire, double clic sur le bouton valider de ton 1er usf. Tu trouvera "connecter2", d'ailleurs je te préconise de plutôt mettre call connecter2 qui signifie appel la macro, le résultat sera le même mais c'est plus compréhensible et quand tu auras beaucoup de ligne de code tu sera bien content ;)
A la place de connecter2 tu veux :
'Si la textbox1 de l'userform en cours est vide alors
If Me.Textbox1.Value = "" then
'Envoie un message à l'utilisateur
Msgbox("Merci de renseigner une donnée !")
'Quitte la procédure
Exit Sub
'Sinon (si l'utilisateur à mis une donnée)
Else
'Appel la procédure pour ouvrir le 2ème usf
Call connecter2
' Fin de l'instruction si
End if Je te préconise également de changer la propriété name de ta textbox afin d'éviter d'avoir textbox1, 2, ... sinon tu va t'y perdre à force
Si tu change le nom alors la place de me.textbox1 il faudra écire me.nouveaunomtxtbox
Bonne journée :)
Bonjour Koko,
et Merci
Voila 1er cas ma "Feuille2" est protégé par un mot de passe qui est 1234, quand les données sont entrés je click sur le bouton pour insérer qui ce trouve sur ma (feuille 1) et me donne erreur code VBA. Mais si je vais ôter la protection là tout ça fonctionne mais je souhaite garder le mot de passe ou sans mot de passe ma protection afin que ma feuille 2 soit uniquement consultable par l'utilisateur et qu'il ne pourra pas modifier.
En ce qui concerne pour le bouton VALIDER j'ai appliqué tes commandes mais cela n'a rien changé chez moi, où dois-je ajouter le mot de passe exemple comme mot de passe : voiture rouge.
Private Sub VALIDER_Click()
If Me.TextBox1.Value = "" Then
MsgBox ("Merci de renseigner une donnée !")
Exit Sub
Else
Connecter2
End If
Unload Me
[_utilisateur] = "Invité"
Connecter2
End SubNote importante : si je click sur la croix rouge
PS : J'ai lu sur le NET, pour un premier log au classeur Excel créer un code : avant l'ouverture du fichier "un code VBA" va aller chercher une information de système du PC genre numéro de série du PC ou ID de périphérique ou ID du produit (sous info système) et si l'information demandée est correcte dans ce cas il va lancer phase 2 le login et mot de passe et que ce fichier sera attribuer au terminal indiquer, mais comme c'était en anglais je n'est pas tout compris.
Merci d'avance.