Bonjour à tous,
Ce que je veux faire:
Je dois entrer en VBA une formule de validation des données dans une nouvelle colonne d'une Table (validation active sur toutes les cellules de la nouvelle colonne).
Donc lorsque l'utilisateur rentre une valeur dans une cellule de cette nouvelle colonne de cette table, cela vérifira le forma suivant:
Format accepté: nombre/0 ou nombre/1 ou */0 ou */1 et les nombres peuvent être des chiffres à virgule (125454.12) avec un point comme séparateur... là aussi je n'ai pas trouvé comment faire...
ex: 5454/0 ou 12/1 ou */0
Je veux rentrer cette formule de validation en VBA dans le code, sans passer par la validation des données d'Excel (la colonne étant ajoutée dynamiquement par l'utilisateur).
Ci-dessous la colonne "param_eceu/Cxx1_gear_rat_tgt" ajoutée avec sa validation des données (j'essaye de rentrer une valeur non permise)
Pièce jointe 433714
************************************************************************************
Concentrons-nous durant cette étude sur la détection du zéro à la fin, après le /
Voici mon soucis:
Ce code marche:
On vérifie ci-dessous la présence du "/" dans les données saisies (voir la ligne Formula1).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 ' Ajout d'une colonne de calibration If gnCols_1 < ncols Then Usfrm_CalibSelection.Show snewColName = gNameCalib Rheader(Target.Column - Rcsv.Column + 1) = snewColName Set RnewCol = Tab_CSV.ListColumns(snewColName).DataBodyRange ' On récupère l'addresse en format type $H11 par exemple (si les données de la nouvelles colonne commencent en H11). ' Il y a un $ devant le H mais pas devant le 11, de manière à ce que la validation soit récursive sur toute la colonne du tableau snewColAddress = "$" & wColNm(RnewCol.Column) & RnewCol.Row With RnewCol .NumberFormat = "@" ' On met au format texte sinon le format 4/3 sera pris comme une date ' Le format accepté sera: ' - nombre/nombre ou ' - */nombre With .Validation .Delete .Add _ Type:=xlValidateCustom, _ AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, _ Formula1:="=IF(ISNUMBER(SEARCH(""/"", " & snewColAddress & ")) ,true,false)" ' cette formule marche !!! End With End With End If
Cette formule marche:
Cette formule ne marche pas, apparemment c'est le Search dans la formule qui sème la pagaille, alors qu'il marche dans le premier exemple..... :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Formula1:="=IF(RIGHT(" & snewColAddress & ", 2)=""0"" ,true,false)"
Ne marche pas (erreur 1004):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Formula1:="=IF(RIGHT(" & snewColAddress & ", SEARCH(""/"", " & snewColAddress & "))=""0"" ,true,false)"
C'est pourtant ce que je souhaite faire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Formula1:="=IF(RIGHT(" & snewColAddress & ", LEN(" & snewColAddress & ")-SEARCH(""/""," & snewColAddress & "))=""0"" ,true,false)"
Pourquoi ?![]()
Partager