Bonjour le forum,
Pour les besoins d'une macro j'ai mis en place des validations de données obligeant l'utilisateur à respecter certaines conditions.
Le problème c'est que si on supprime des lignes sur le tableau, ma formule de validation devient erronée. Du coup, je veux créer une macro qui remet cette formule. J'en ai fait une avec l'enregistrement de macro.
Voici mon code :
Sub ValidationDonnées()
Application.Goto Reference:="ListeCas"
With Selection.Validation
.Delete
.Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:= _
"=ET(A2>0;NB.SI($A$2:$A$1048576;A2)>0;NB.SI($A$2:$A$1048576;A2)=1;ENT(A2)=A2;$A1>0)"
.IgnoreBlank = False
.InCellDropdown = True
.InputTitle = "Conditions"
.ErrorTitle = "Conditions non respectées"
.InputMessage = _
"Nombre entier, supérieur à zéro, unique et pas de saut de ligne."
.ErrorMessage = _
"Les conditions ne sont pas respectées." & Chr(10) & "" & Chr(10) & "- Nombre entier" & Chr(10) & "- Supérieur à zéro" & Chr(10) & "- Unique (dans la colonne)" & Chr(10) & "- Directement à la suite (pas de saut de ligne)" & Chr(10) & ""
.ShowInput = True
.ShowError = True
End With
C'est au niveau de la formule que ça plante, j'ai fait quelque recherche et il se peut que ça soit à cause de la langue, j'ai donc remplacé ma formule par
"=AND(A2>0;COUNTIF($A$2:$A$1048576;A2)>0;COUNTIF($A$2:$A$1048576;A2)=1;INT(A2)=A2;$A1>0)"
Mais si je suis là c'est que cette méthode ne marche pas non plus
Ma formule fonctionne et sert à :
- Imposer les nombres entier
- Imposer un nombre supérieur à zéro
- Imposer le fait qu'il soit unique
- Empêcher les sauts de ligne
Auriez-vous une ou des solutions à mon problème ?
Merci d'avance,
Skiinck