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 :

Macro Validation des données + Union


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Macro Validation des données + Union
    Bonjour à tous,

    Je sais faire une validation sur une plage continue (toutes les cellules de B1 à B4):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Range("A1").Validation.Add _
    Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
    Formula1:="=" & Range("B1:B4").Address
    Ca me crée une validation (liste déroulante) dans la cellule A1. Tout va bien.

    Mais j'aimerais faire quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Range("A1").Validation.Add _
    Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
    Formula1:="=" & Union(Range("C1"), Range("C2"), Range("C4")).Address
    C'est-à-dire mettre dans la liste déroulante des cellules se trouvant à différents endroits dans un tableau.

    Existe-t-il un moyen d'arriver à mes fins ?

    Merci mille fois d'avance !

    Jerem

  2. #2
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Slt,
    j'ai lu qu'on ne pouvait utiliser d'union dans une liste de validation.

    une solution consiste à utiliser une colonne dont tu n'as pas besoin de faire un lien dans cette colonne avec les cellules qui t'intéresse afin de les regrouper et de faire ta liste de validation et de masquer la colonne.

    c'est pas top mais en tout cas ça marche
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  3. #3
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    j'ai lu qu'on ne pouvait utiliser d'union dans une liste de validation
    C'est d'ailleurs le message qui apparait si on tente de le faire manuellement :

    "vous ne devez pas utiliser les unions,intersections, ni les constantes matricielles pour les critères de validation des données"

  4. #4
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 696
    Points
    6 696
    Par défaut
    Bonjour,

    Mets un String

    Tu "Union" les plages voulues et tu donnes à la Range obtenue un nom, par exemple strMaString, ensuite, tu appliques ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub ValidOk()
    Dim strMaString As String
    Dim cell As Range
     
    Range("A1").Clear
    For Each cell In Range("AllZone")
       strMaString = strMaString & "," & cell.Value
    Next cell
    Range("A1").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=strMaString
    End Sub
    rajout :

    Ce code est bien meilleur si on n'a pas le besoin d'une plage nommée au par ailleurs...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub ValidOk()
    Dim strMaString As String
    Dim objPlagesCibles As Range
    Dim cell As Range
     
    Set objPlagesCibles = Union(Range("B1:B4"), Range("C6:C9"))
     
    Range("A1").Clear
    For Each cell In objPlagesCibles
       strMaString = strMaString & "," & cell.Value
    Next cell
    Range("A1").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=strMaString
    End Sub

    Attention Danger : vois ici des fois que...


    cordialement,

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    Cours et tutoriels pour apprendre Excel
    N'oubliez pas de mettre : ..quand c'est le cas !

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/02/2007, 08h14
  2. [EXCEL] Validation des données saisies - nouvelle Question :-)
    Par Paloma dans le forum Macros et VBA Excel
    Réponses: 39
    Dernier message: 29/11/2006, 13h28
  3. Réponses: 5
    Dernier message: 01/10/2006, 13h48
  4. [PHP-JS] validation des données
    Par emma des bois dans le forum Langage
    Réponses: 6
    Dernier message: 10/02/2006, 15h28
  5. dbgrid AND validation des données
    Par samlerouge dans le forum Bases de données
    Réponses: 10
    Dernier message: 11/06/2004, 23h08

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