Bonjour
Je cherche à vérifier qu’une chaîne de caractères, disons en A2, respecte des critères de présence de caractères qui doivent être contenus : minuscule, majuscule, chiffre, signe (dans une liste). Le problème c’est que l’expression régulière ".*[a-z].*"
accepte “A2”. Je m’explique.
Via Internet j’ai trouvé qu’il fallait passer par NB.SI ou CHERCHE et une expression régulière. J’ai également trouvé qu’il fallait dans outils/options/calc/calcul cocher “respecter la casse” et “autoriser les expressions régulières dans les formules” ce qui est fait.
=NB.SI(A2;"[a-z]")
est 0, =NB.SI(A2;"[A-Z]")
est aussi 0,
erreur due au fait que le texte complet de la cellule est différent du motif cherché, il faut chercher ".*[…].*"
=NB.SI(A2;".*[a-z].*")
est 1, inattendu car le texte est “A2”
NB : =NB.SI(A2;".*[A-Z].*")
est 1 aussi mais c’est normal
voyant que ma série de signes a fonctionné convenablement, j’ai essayé :
=NB.SI(A2;".*[abcdefghijklmnopqrstuvwxyz].*")
… qui retourne 1 au lieu de 0
Même chose pour la fonction CHERCHE au lieu de NB.SI, =CHERCHE("[a-z]";A2)
et =CHERCHE(".*[a-z].*";A2)
retourne 1 pour le texte à vérifier “A2”)… je préfère NB.SI qui retourne 1 ou 0 à CHERCHE qui part en erreur en cas d’absence.
option 1 : il existe une solution que je n’ai pas de préférence ensembliste, et qui doit être applicable aux chiffres et à une liste définie de signes.
option 2 : c’est un bug autour de “respecter la casse”
Je vous remercie de l’aide que vous pourrez m’apporter.
Librement, Éric
[edit] j’oubliais : LibreOffice Version: 6.1.6.3 (x64)