Formule dans cellule avec des données de validation

Résolu/Fermé
skk201 Messages postés 938 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 16 octobre 2016 - 15 mars 2014 à 20:47
skk201 Messages postés 938 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 16 octobre 2016 - 16 mars 2014 à 10:06
Bonjour,

J'essaye depuis un moment d'insérer une formule dans une cellule qui est "protégée" par des données de validation. Ce qui me renvoie vers une erreur 1004 (normal, la valeur n'est pas dans la liste de validation)

Est-ce que qqun a une idée de comment forcer la cellule a prendre cette formule ?

Le principe c'est que si on change la valeur de la cellule à 0, elle prend cette formule.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Q As String
Q = """"
'[...du texte]
If Not Application.Intersect(Target, Range("B12")) Is Nothing Then
If Cells(12, "B") = "" Then
Cells(12, "B").Formula = "=IF(OR(Système!AO3=0;Système!AO3=" & Q & Q & ");" & Q & Q & ";Système!AO3)"
Else
Application.Run "Model"
End If
End If
End sub

1 réponse

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 709
15 mars 2014 à 23:13
Bonjour,

En supprimant la validation :
    If Cells(12, "B") = "" Then
On Error Resume Next
Q = Target.Validation.Formula1
If Err.Number = 0 Then
Target.Validation.Delete
Else
Err.Clear
End If
On Error GoTo 0
Cells(12, "B").Formula = "=IF(OR(Système!AO3=0;Système!AO3=" & Q & Q & ");" & Q & Q & ";Système!AO3)"
1
skk201 Messages postés 938 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 16 octobre 2016 54
16 mars 2014 à 07:28
Merci pour ta réponse !

J'ai du mal a comprendre la raison de :
[code] Q = Target.Validation.Formula1 [/code]

et je ne suis pas sur du resultat. Je vais essayer je vaus voir si ca marche comme je veux.

car je voudrais que la validation reste, je voudrait juste pouvoir écrire une valeur quj ne soit pas dans la validation.
0
skk201 Messages postés 938 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 16 octobre 2016 54
16 mars 2014 à 08:32
Le problème vient vraiment de cette ligne :
        Cells(12, "B").Formula = "=IF(OR(Système!AO3=0;Système!AO3=" & Q & Q & ");" & Q & Q & ";Système!AO3)"
Si j'enlève le = devant le if ça marche (ça affiche le texte dans la case).

Q représente un guimmet est-ce que le problèmes viendra de la ?
0
skk201 Messages postés 938 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 16 octobre 2016 54
16 mars 2014 à 08:39
Si je met FormulaLocal et "=Aujourdhui()" ça marche

Et si je sort le formule "=IF(OR(Système!AO3=0;Système!AO3=" & Q & Q & ");" & Q & Q & ";Système!AO3)" dans une msgbox ça me sort :

https://www.casimages.com/i/140316084627451709.png.html

Donc je vois pas où est l'erreur ^^'
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 709
16 mars 2014 à 09:49
Bonjour,

Effectivement, j'avais suivi ton raisonnement mais ce n'est pas la validation qui bloque.
Tu peux essayer comme ceci :
        Cells(12, "B").FormulaLocal = "=SI(OU(Système!AO3=0;Système!AO3="""");"""";Système!AO3)"
0
skk201 Messages postés 938 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 16 octobre 2016 54 > gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020
16 mars 2014 à 10:06
Deja essayer, et ce qui bloquait c'est que dans cette case il se peut que la liste de validation soit vide, ce qui etait le cas voila pourquoi ca me bloquait

merci quand meme :)
0