Je suis nouveau à VBA et n'ai que récemment développé mes compétences Excel.En utilisant le code VBA pour copier la valeur spécifique d'une cellule lorsque la liste déroulante change cette valeur
J'ai créé 3 scénarios différents pour une situation de projet d'investissement, ces scénarios apparaissent dans la cellule "h13" comme une liste déroulante avec trois options disponibles, meilleur cas/pire cas/scénario de base.
Lorsque vous sélectionnez chaque scénario, les différentes sorties changeront sur la feuille et j'ai mis en place le code suivant pour modifier les sorties et afficher celles qui sont pertinentes selon le scénario:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$H$13" Then
ActiveSheet.Scenarios(Target.Value).Show
End If
Maintenant, ce que je vouloir atteindre est la suivante:
Dans la cellule E13 j'ai une valeur numérique qui est ma principale préoccupation (je devrais noter qu'il s'agit d'une formule NPV). Chaque fois que nous changeons de scénario, cette valeur change évidemment. Je voudrais pour créer un tableau récapitulatif qui est simplement quelque chose comme ceci: Scénario 1 = x Scénario 2 = y Scénario 3 = z Donc, Idéalement, ce que je veux à faire est, lorsque nous sélectionnons le scénario 1, nous copions la valeur de E13 pour indiquer B21. Lorsque nous sélectionnons le scénario suivant E13 changera évidemment, mais je voudrais que la valeur copiée de B21 reste la même, et maintenant la nouvelle valeur du scénario 2 à afficher dans B22.
Je ne sais pas comment s'y prendre? Je l'ai essayé d'ajouter cela sur le fond, mais les valeurs que je pense pas rester « statique »
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("h13")) Is Nothing Then
Range("E13").Copy
Range("B21:B23").PasteSpecial xlPasteValues
End If
End Sub
Maintenant, je sais que je dois créer une référence pour qu'il se lise comme suit quelque chose comme quand e13 = y puis copiez, suivant e13 = x copie et boucle? jusqu'à ce que tous les résultats ont eu lieu. Je ne sais pas comment le faire quand même.
Toute aide serait appréciée, je l'ai essayé de lire sur cela autant que possible, mais je ne peux pas vraiment le point d'épingle exactement ce que je dois en termes de code que je suis très nouveau à cette
Merci à l'avance.
Salut, Merci pour cela, le processus logique du code est logique mais j'obtiens l'erreur suivante: Erreur d'exécution 1004 Impossible d'obtenir la propriété de match de la classe WorksheetFunction lRow = WorksheetFunction.Match (Target.Value, .Columns (1), False) Maintenant, je me dis que Columns (1) est le problème, mais je ne sais pas exactement pourquoi? – abrk23
Cette erreur vous indique qu'il n'y a pas de correspondance (c'est-à-dire 'Cible.La valeur »n'a pas été trouvée dans la« colonne 1 du tableau », pas dans la colonne 1 de la feuille de calcul). Vous devez vous assurer que les valeurs de la première colonne de la table sont exactement les mêmes que les valeurs de 'DataValidation'. – EEM
Vérifiez également que cette ligne a été mise à jour en fonction de l'emplacement de la table: 'Set rTbl = Range (" B21 "). Resize (3, 3)'. Notez que '" B21 "' fait référence à la première ligne de la table et non à l'en-tête. – EEM