IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Condition de validation avec une formule [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2016
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Août 2016
    Messages : 27
    Par défaut Condition de validation avec une formule
    Bonjour,

    J'ai besoin d'ajouter une condition de validation par macro. J'ai donc lancé l'enregistreur de macro pendant que je faisais la manip manuellement pour obtenir la syntaxe de l'instruction.

    Le généré est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    With Selection.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, _
            Formula1:="=DECALER(RIBs;EQUIV(A2;Vendeurs;0)-1;0;NB.SI(Vendeurs;A2))"
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = ""
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = True
        End With
    Quand je cherche à rejouer la macro enregistrée qui bloque sur l'instruction ci dessous avec le code "Erreur d'exécution '1004' : Erreur définie par l'application ou par l'objet"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, _
            Formula1:="=DECALER(RIBs;EQUIV(A2;Vendeurs;0)-1;0;NB.SI(Vendeurs;A2))"
    J'ai essayé d'angliciser la formule en utilisant les fonctions OFFSET, MATCH et COUNTIF mais ça ne marche pas plus.

    Quelqu'un pourrait me dire comment faire ?

    Je précise au cas où, que la condition de validation placée pendant l'enregistrement de la macro fonctionne correctement

    D'avance merci.

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 416
    Par défaut
    Bonjour,
    Non testé: mettre la formule en anglais, et remplacer les ; par des ,
    Sinon, voir aussi cette page qui propose 2 fonctions de conversion:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    '--- Convert localized formula to English formula:
    Public Function TranslateFormula_LocalToGeneric(ByVal iFormula As String) As String
        Names.Add "temporaryFormula", RefersToLocal:=iFormula
        TranslateFormula_LocalToGeneric = Names("temporaryFormula").RefersTo
        Names("temporaryFormula").Delete
    End Function
     
    '--- Convert English formula to localized formula:
    Public Function TranslateFormula_GenericToLocal(ByVal iFormula As String) As String
        Names.Add "temporaryFormula", RefersTo:=iFormula
        TranslateFormula_GenericToLocal = Names("temporaryFormula").RefersToLocal
        Names("temporaryFormula").Delete
    End Function
    Cordialement.

  3. #3
    Membre confirmé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2016
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Août 2016
    Messages : 27
    Par défaut
    Bonjour Eric,

    Merci infiniment. Ca fonctionne bien avec ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:= _
            "=OFFSET(RIBs,MATCH(A2,Vendeurs,0)-1,0,COUNTIF(Vendeurs,A2))"
    Je clos le sujet.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Création de liste de validation de donnée avec une formule précise en VBA
    Par shakapouet dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 01/06/2016, 15h50
  2. verrouiller des cellules avec une formule
    Par tomy7 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/03/2008, 16h01
  3. Réponses: 3
    Dernier message: 26/12/2007, 01h08
  4. Souci avec une formule par une fonction Selection.validation
    Par mennix dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 02/08/2007, 22h45
  5. [VBA-E] problème avec une formule
    Par jamelie dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 25/04/2007, 11h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo