Excel VBA validation de données

Bonjour,

J'essaie via l'enregistreur de macro d'excel de faire une liste de validation de données
j'obtiens une erreur 1004

ma formule =decaler(NOM;;;nb.si(NOM;"><")) fonctionne pourtant bien avec excel ...

voici la modeste macro
----------------------------------
Sub menu_auto()

With Range("O13").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=DECALER(NOM;;;NB.SI(NOM;""><""))"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
-----------------------------------
J'ai également essayer de traduire ma formule en anglais qui donne
=offset(NOM;;;countif(NOM;"><"))
et sa fonctionne pas non plus.

merci de votre aide.

3 réponses

  1. J'ai trouvé ...

    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=OFFSET(NOM,,,COUNTIF(NOM,""><""))"
    0
    1. Contributeur
      Content pour toi mais si tu pouvais donner le lien d'un fichier exemple ce serait parfait car (Jusqu'à preuve du contraire !) je le vois mal fonctionnel...
      0
  2. Contributeur
    Bonjour,

    ma formule =decaler(NOM;;;nb.si(NOM;"><")) fonctionne pourtant bien avec excel ...
    Là je demande à voir ....
    Ceci fonctionne :
    =DECALER(NOM;;;NBVAL(NOM);1)

    Et en macro cela donne :
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="=offset(NOM,,,counta(NOM),1)"
    

    0
    1. Contributeur
      Bonjour,

      Je tiens vraiment à ce qui est donné comme solution fonctionnelle le soit vraiment et la solution fournie par shoret2 ne me semble pas fonctionner car j'obtiens une erreur 1004 comme dans la question initiale.

      Voilà le résultat qui se produit et il me semble que j'ai bien copié la ligne de code
      Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=OFFSET(NOM,,,COUNTIF(NOM,""><""))" 

      Peux-tu nous confirmer ta solution en me disant ce qui cloche chez moi pour pouvoir valider la discussion ?
      0
      1. Chez moi ce bout de code fonctionne parfaitement maintenant.
        Il créé une liste déroulante de choix si la condition est vrai, si non il la supprime pour redevenir une cellule normale

        cette formule supprime les blanc dans la liste =DECALER(_Détaillant_liste;;;NB.SI(_Détaillant_liste;"><"))

        Sub menu_auto()

        Application.ScreenUpdating = False

        If Range("_Main_type") = "Dépence" Then

        With Range("O13").Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=OFFSET(_Détaillant_liste,,,COUNTIF(_Détaillant_liste,""><""))"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
        End With
        Else
        If Range("_Main_type") = "Revenu" Then

        With Range("O13").Validation
        .Delete
        .Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator _
        :=xlBetween
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
        End With
        End If
        End If

        End Sub

        merci de m'avoir répondu.
        0
      2. et ensuite dans ma feuille excel j'y ai mis ce code

        Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Call menu_auto
        End Sub
        0
      3. J'ai exactement le même problème : erreur 1004
        0