Formule dans cellule avec des données de validation

Résolu
skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   -  
skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   -
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

--
*Pensez mettre vos messages en [Résolu] et cliquer sur le + des conseil qui vous ont été utils"

1 réponse

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
    1. skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   55
       
      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
    2. skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   55
       
      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
    3. skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   55
       
      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
    4. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      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
      1. skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   55 > gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention  
         
        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