EXCEL – Comment avoir une sortie de formule et une entrée d'utilisateur sur la même cellule?

J'aimerais avoir l'aide de quelqu'un car je crois que ce problème nécessite VB. J'ai essentiellement une CELL (A4) où les gens entreront des valeurs pour découvrir les calculs correspondants affichés ci-dessous.

Cependant, je souhaite ajouter une fonction supplémentaire où les valeurs populaires sont automatiquement entrées dans cette même cellule (A4).

Les cellules E7 et E8 recevront une entrée et la multiplieront par 960 (E7) ou 765 (E8) et transféreront cette valeur à la cellule (A4) de sorte que le reste des formules se mette à jour correctement.

En principe, l'utilisateur saisit les sacs directement en A4 ou entrez le nombre de conteneurs dans E7 ou E8.

** C'est là que j'ai le problème car lorsque je saisis une formule sur A4, il est supprimé une fois que vous entrez une valeur directement sur celui-ci.

** Notez également que le résultat de E7 et E8 doit être affiché (en A4), car je l'ai également besoin.

Ma feuille:

Entrez la description de l'image ici

Vous pouvez utiliser une fonction de modification de feuille de calcul dans vba. Quelque chose comme

Private Sub Worksheet_Change(ByVal target As Range) If Intersect(target, Range("e7:e8")) Is Nothing Then Exit sub Application.enableevents = False ActiveSheet.range("A4").formula="=if(e7="""",e8*765,e7*960)" Application.enableevents = True End Sub 

Chaque fois que la feuille change, elle vérifie si la cellule a changé était e7 ou e8. Si c'était le cas, la formule

 =if(e7="",e8*765,e7*960) 

Dans la cellule A4. Si vous placez une valeur dans la cellule A4, elle restera jusqu'à ce que vous modifiez à nouveau e7 ou e8. Vous devrez peut-être vous ajuster pour l'obtenir pour faire exactement ce que vous voulez, mais l'idée est là.

Cela ira dans l'objet de la feuille de calcul sous les objets Microsoft Excel dans vba.

MODIFIER:

Pour correspondre aux commentaires.

Nouveau code, celui-ci ne fera que quelque chose si la cellule a une valeur ajoutée ou modifiée, elle ne fonctionnera pas si vous supprimez une valeur.

Ensuite, il vérifie si e7 a été édité. Si c'est e8 est supprimé. Si ce n'était pas, nous savons que e8 a été édité afin que e7 soit supprimé. La formule reste la même.

 Private Sub Worksheet_Change(ByVal target As Range) If Intersect(target, Range("e7:e8")) Is Nothing Or target.Value = "" Then Exit Sub Application.EnableEvents = False ActiveSheet.Range("A4").Formula = "=if(e7="""",e8*765,e7*960)" If Intersect(target, Range("e7")) Is Nothing Then ActiveSheet.Range("e7").ClearContents Else ActiveSheet.Range("e8").ClearContents End If Application.EnableEvents = True End Sub 

En entreprise, il est courant de vouloir utiliser une formule pour calculer une valeur, mais permet encore à l'utilisateur de remplacer cette formule pour des cas particuliers.

Dit A4 représente le coût total et contient:

 =D8*G8 

D8 est le coût unitaire et G8 est la quantité.

Mais pour les clients spéciaux, nous voulons pouvoir citer un coût actualisé. Nous mettons le coût actualisé dans H8 et modifions la formule ainsi:

 =IF(H8<>"",H8,F8*G8) 

Donc, si nous voulons la priorité, ça va dans H8; Sinon nous laissons H8 en blanc.

Vous pouvez utiliser VB pour modifier n'importe quelle valeur pendant l'étape de calcul.

Mais ce faisant, cela signifie que la macro va changer la valeur en A4, et vous devrez ajouter quelque chose pour savoir que la valeur ne doit pas être mise à jour sur une seconde étape.

Donc, en théorie, il est possible, mais il est très peu pratique de le faire.

Si vous voulez simplement avoir une liste déroulante avec des valeurs populaires, vous n'avez pas besoin d'être VB chic. Excel a intégré cette fonction. Vous pouvez le faire via data validation .

La solution que j'utilise où vous avez seulement quelques cellules, je veux que les deux calculs et l'aptitude à entrer des valeurs pour remplacer la formule ou supprimer ce qu'ils ont entré et ont la formule fonctionne.

Configurez votre feuille de calcul comme vous le souhaitez .. Ensuite, pour la cellule, vous souhaitez remplacer la configuration d'une cellule identique dans une colonne hors écran, c'est-à-dire la colonne az et couper et coller votre élu. Dans cette entrée spéciale, modifiez votre formule mais avec un si pour tester Si une valeur a été saisie dans la cellule originale.

Ensuite, copiez cette cellule, sélectionnez votre cellule originale et collez spécial une image liée.

Maintenant, sélectionnez l'image et ajoutez un lien hypertexte vers la cellule directement au-dessous, utilisez un nom de destination si vous pensez qu'il peut se déplacer en raison de l'insertion de lignes.

Maintenant, vous devriez trouver la cellule comme si elle affiche une valeur à partir de la formule, lorsque vous cliquez sur la cellule, l'hyperlien saute vers la cellule en dessous, entrez la valeur et l'affichage change, supprimez-le et la valeur de la formule s'affiche.

Considérez également l'ajout d'un format conditionnel sur la cellule de formule qui change s'il existe une valeur dans la cellule affichée, cela vous rappelle qu'une valeur manuelle a été saisie.

J'espère que cela aide les formulaires d'installation qui semblent simples et fonctionnent sans macros.

Terry