Macro pour validation de données

Bonjour à tous,

Dans le cadre d'un projet, je dois ajouter une validation de données sur plusieurs lignes dans des feuilles excel...

Le tout étant fastidieux, j'ai utilisé l'enregistreur de macro excel et regardé l'aide en ligne pour comprendre comment réaliser cela ...

J'aboutis au code suivant :

Sub Macro1()
Dim cellule As String, formule  As String

For i = 5 To 16
j = i - 1
cellule = "G" & i & ":J" & i
'MsgBox cellule
formule = "=ET(ESTNUM($G$" & j & ");ESTNUM($H$" & j & ");ESTNUM($I$" & j & ");ESTNUM($J$" & j & "))"
'MsgBox formule
    Range(cellule).Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, _
        Formula1:=formule
        .IgnoreBlank = False
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = "Blocage de saisie"
        .InputMessage = ""
        .ErrorMessage = _
        "Vous ne pouvez pas encoder sur cette ligne, la ligne précédente n'est pas remplie ! "
        .ShowInput = True
        .ShowError = True
    End With
Next
End Sub

Mais malheureusement à l’exécution, il me sort une erreur 1004 : "Erreur définie par l'application ou par l'objet" au niveau de la ligne ".Add ..."

Est ce que quelqu'un aurait une solution ou verrait mon erreur ?

A noter que j'ai essayé de mettre la formule directement après "Formula1" mais cela ne fonctionne pas non plus

Bonjour,

Bonjour,

Voici un fichier avec un tableau et la macro

194testvalidation.xlsm (18.61 Ko)

Re,

Veux-tu m'expliquer ce que veux faire avec la validation de données ?

En fait je veux empêcher l'encodage d'une ligne si la ligne précédente n'est pas remplie.

Ca fonctionne déjà si je le fais manuelle avec la formule présente dans la macro.

En soit je pourrais en rester là mais je n'ai pas qu'un seul tableau du genre donc je voulais passer par une macro pour automatiser cet encodage fastidieux....

Je ne sais pas si j'ai été plus claire ?!

Re,

OK on va simplifier. Teste le code suivant et dis-nous si ça te va :

Sub Validation()
    Dim i%, j%
    i = 3
    j = 16
    With Range("G" & i & ":J" & j).Validation
        .Delete
        .Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Formula1:="=COUNTA(G2:J2)=4"
        .ErrorTitle = "Blocage de saisie"
        .ErrorMessage = "Vous ne pouvez pas encoder sur cette ligne, la ligne précédente n'est pas remplie ! "
    End With
End Sub

Ca fonctionne nikel !

Un tout grand merci !

Rechercher des sujets similaires à "macro validation donnees"