Formule dans VBA ? [Résolu]

Villette54 279 Messages postés vendredi 15 mars 2013Date d'inscription 11 décembre 2017 Dernière intervention - 20 févr. 2017 à 11:50 - Dernière réponse : Villette54 279 Messages postés vendredi 15 mars 2013Date d'inscription 11 décembre 2017 Dernière intervention
- 21 févr. 2017 à 16:57
Bonjour à tous,

J'ai un petit soucis et j'aimerais savoir s'il est possible de résoudre avec VBA et si oui comment.

J'aimerais savoir s'il est possible de faire s'executer des formules via VBA sans que celle-ci soit afficher dans les cellules Excel.
La formule en question est un simple Vlookup(), qui pour une valeur entre 1 et 5 renvoi une info. Le problème se situe au niveau de la valeur 5 qui signifie "Autre" à ce moment là, l'utilisateur doit alors préciser la nature de ce "Autre", sauf qu'il ne peut pas le faire dans la case en question car il y a déjà une formule.
D'où ma demande pour ne pas afficher la formule, afin que l'utilisateur puisse écrire à sa guise dans la cellule lorsque la valeur "5" est selectionnée.

Même si pour moi le plus simple serait de rajouter une colonne et de préciser dans la colonne en question, ce n'est pas possible dans mon fichier en question.

J'ai pensé à utiliser VBA, mais je suis ouvert à toute proposition

Ma demande n'étant pas clair, je vous joint un petit fichier qui j'espère aidera à la compréhension.

http://www.cjoint.com/c/GBukXcGksaV

Merci d'avance pour votre aide.
Bonne journée,
Afficher la suite 

3 réponses

Répondre au sujet
HugoHerbomez 57 Messages postés dimanche 15 juillet 2012Date d'inscription 2 mars 2017 Dernière intervention - Modifié par HugoHerbomez le 20/02/2017 à 13:29
0
Utile
Bonjour Villette,

Tu sais comment utiliser du code VBA? Sinon tu peux essayer ça :

Private formule As String

'Il faut remplacer i et j avec tes valeurs
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row = i And Target.Column = j Then
    formule = Cells(i,j).Formula
    Cells(i,j).Clear
Else
    If Cells(i,j) = "" Then
        Cells(i,j) = "Autre, précisez"
    End If
    'Le problème avec ça c'est que l'opération se fera souvent, je vois pas comment faire autrement
    Cells(i,j).Formula = formule
End If



Après il faut que tu me décrives un peu plus comment tu veux faire. Avec ça tu pourras faire un petit truc je pense :p
La personne n'aura le droit que à un seul essai, après la formule reviendra.
(je pourrai t'améliorer un peu le code si tu veux, sur le même principe)

Bien cordialement,
Hugo
Commenter la réponse de HugoHerbomez
michel_m 14942 Messages postés lundi 12 septembre 2005Date d'inscriptionContributeurStatut 14 décembre 2017 Dernière intervention - Modifié par michel_m le 21/02/2017 à 08:47
0
Utile
Bonjour Vilette

En VBA, on n'utilise généralement pas des copies de formules pour inscrire des valeurs en résultat

la procédure ci dessous se déclenche lorsqu'on entre une valeur en colonne A de la feuille "report". Une mauvaise saisie est signalée (par ex: 6 ou toto...)
Option Explicit
'------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Texto As String
'zone d'action procédure
If Not Intersect(Target, Range("A2:A10000")) Is Nothing Then
With Sheets("Data")
On Error GoTo inconnu 'détection saisie erronée
'description donnée feuille data
Texto = .Columns("A").Find(Target, .Range("A1"), xlValues).Offset(0, 1)
End With
'report description feuille "report"
Target.Offset(0, 1) = Texto
End If
Exit Sub

'gestionnaire erreurs
inconnu:
MsgBox "la valeur saisie, " & Target & ", est erronée.", vbCritical
End Sub


j'ai mis une zone d'action jusqu'à la ligne 10000 mais à toi d'adapter à ton classeur réel

Procédure à installer dans le module feuille "report" et non dans un module standard



 Michel
Commenter la réponse de michel_m
Villette54 279 Messages postés vendredi 15 mars 2013Date d'inscription 11 décembre 2017 Dernière intervention - 21 févr. 2017 à 16:57
0
Utile
Bonjour,

Merci à tous les deux pour vos réponses.

Je test ça au plus vite et je reviendrais pour vous tenir au courant (et enventuellement, encore demander de l'aide).

Encore merci.

Bonne fin de journée,
Commenter la réponse de Villette54