Menu

Excel VBA validation de données

Messages postés
4
Date d'inscription
jeudi 14 juin 2018
Dernière intervention
14 juin 2018
- - Dernière réponse :  PEB - 27 déc. 2018 à 23:22
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.
Afficher la suite 

Votre réponse

3 réponses

Messages postés
4
Date d'inscription
jeudi 14 juin 2018
Dernière intervention
14 juin 2018
0
Merci
J'ai trouvé ...

.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=OFFSET(NOM,,,COUNTIF(NOM,""><""))"
gbinforme
Messages postés
15081
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
23 juin 2018
4720 -
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...
Commenter la réponse de schoret2
Messages postés
15081
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
23 juin 2018
4720
0
Merci
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)"

Toujours zen
La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer.  Antoine de Saint-Exupéry
Commenter la réponse de gbinforme
Messages postés
15081
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
23 juin 2018
4720
0
Merci
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 ?
schoret2
Messages postés
4
Date d'inscription
jeudi 14 juin 2018
Dernière intervention
14 juin 2018
-
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.
schoret2
Messages postés
4
Date d'inscription
jeudi 14 juin 2018
Dernière intervention
14 juin 2018
-
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
J'ai exactement le même problème : erreur 1004
Commenter la réponse de gbinforme