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 :

Exprimer la condition


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 85
    Par défaut Exprimer la condition
    Bonjour,

    J'ai créé un tableau Excel comprenant x colonnes dont 3 sont des listes déroulantes qui permettent de restreindre l'utilisateur à un certain nombre de champs.

    Appelons LD1, LD2 et LD3 ces 3 listes déroulantes.

    Je souhaite exprimer la condition à partir de l'exemple suivant :
    LD1 = animal
    LD2 = race
    LD3 = couleur pelage

    Si l'utlisateur choisit le champ "Chat" dans LD1, alors LD2 proposera une liste de races de chats. Si l'utilisateur choisit "Chat angora" dans LD2, alors LD3 proposera une liste des pelages possibles pour un chat angora.

    Si au contraire, l'utlisateur choisit le champ "Chien" dans LD1, alors LD2 proposera une liste de races de chiens. Si l'utilisateur choisit "Berger Allemand" dans LD2, alors LD3 proposera une liste des pelages possibles pour un Berger Allemand.

    En préalable à tout ça, j'ai créé des listes :
    - liste générale : "chat", "chien"
    - liste des races de chats : .....
    - liste des races de chiens : ....
    - listes des pelages de chats de race x : ....
    - listes des pelages de chats de race y : ....
    - listes des pelages de chats de race z : ....
    - listes des pelages de chiens de race x : ....
    - listes des pelages de chiens de race y : ....
    - listes des pelages de chiens de race z : ....

    Dans Données > Validation > Autoriser Liste, je choisis pour LD1, la liste générale chat chien, mais comme LD2 est dépendante de LD1 et LD3, de LD2, quelle liste dois-je choisir pour les autres colonnes ?

    En bref, comment exprimer cette conditionnalité ?

    J'espère avoir été suffisamment claire. Je vous remercie pour vos éclairages.

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Dans cette exemple ta liste 1 est en A1 et la liste 2 est en B1
    La liste des races de chats sont dans la plage nomée "chat" et chien dans "chien"

    Je suis partie en cosiderant que chaque type d'animaux a sa propre liste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
     
    Select Case UCase(Target.Value)
     
        Case "CHAT"
            Range("B1").Select
            With Selection.Validation
                .Delete
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                xlBetween, Formula1:="=chat"
                .IgnoreBlank = True
                .InCellDropdown = True
                .InputTitle = ""
                .ErrorTitle = ""
                .InputMessage = ""
                .ErrorMessage = ""
                .ShowInput = True
                .ShowError = True
            End With
     
        Case "CHIEN"
            Range("B1").Select
            With Selection.Validation
                .Delete
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                xlBetween, Formula1:="=chien"
                .IgnoreBlank = True
                .InCellDropdown = True
                .InputTitle = ""
                .ErrorTitle = ""
                .InputMessage = ""
                .ErrorMessage = ""
                .ShowInput = True
                .ShowError = True
            End With
     
    End Select
    End If
     
    End Sub

  3. #3
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    Bonjour à tous en cette vraie journée d'automne

    Voici un fichier facilement adaptable sur ta base de données

    il travail selon les menus Popup, bien sur ceci n'est qu'un exemple

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 85
    Par défaut Quelques précisions.
    Je te remercie beaucoup pour ta réponse. Par contre, comme je ne suis pas du tout une spécialiste du vba sous Excel, peut-être pourrais-tu me donner quelques précisions sur ton code ?

    Concrètement :
    - Liste colonne A : champs relatifs à l'animal : "chat", "chien"
    - Liste colonne B : champs relatifs aux races de chats : "chat angora", "chat siamois", "chat chartreux", etc.
    - Liste colonne C : champs relatifs aux races de chiens : "chien Berger Allemand", "chien Berger Belge", "chien fox terrier", etc.
    - Liste colonne D : champs relatifs au pelage des chats angora : "beige", "noir", "blanc"
    - Liste colonne E : champs relatifs au pelage des chats siamois : "noirs", "gris", "blanc"
    - Liste colonne F : champs relatifs au pelage des chats chartreux : "gris"
    - Liste colonne G : champs relatifs au pelage des chiens Bergers Allemands : "beige", "noir"
    - Liste colonne H : champs relatifs au pelage des chiens Bergers Belges : "beige", "noir"
    - Liste colonne I : champs relatifs au pelage des chiens Fox terriers : "gris", "noir", "blanc"

    Mes cellules à remplir sont :
    A8 : type d'animal (à remplir grâce à liste colonne A)
    B8 : race animal (à remplir grâce à liste colonne B ou C, en fonction du type d'animal choisi)
    C8 : couleur pelage animal (à remplir grâce à liste colonne D, E, F, G, H ou I, en fonction du type d'animal et de la race d'animal choisis)

    Dans ton code, quelle expression signifie :
    Si A8 = "chat" alors liste de choix en B8 = liste colonne B
    Si B8 = "chat angora" alors liste de choix en C8 = liste colonne D ?

    Je suis désolée de poser des questions sans doute basiques, mais c'est pour être sûre de bien comprendre.

    Encore merci pour ta réponse.

  5. #5
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Le mieux serait que tu fasses suivre ton fichier que l'on puisse le modifier et te le retourner

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Déjà, dans une feuille Excel, tu n'as que deux dimensions.
    Comme au départ tu en as trois, sépare les chiens et les chats dans deux feuilles différentes, ça évitera les "embrouilles"...
    A partir de là, tu pourras faire une colonne de type de chats ou de chiens et en face, leurs couleurs.
    Mais je te laisse avec jfontaine et wielfried

  7. #7
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    re: Bonjour ouskel'n'or

    Personnelement, je n'ai pas besoin de macro pour réliser cela, un peu de rnagement, quelques plages bien nommées et en avant les listes de validation

    m'enfin le fichier que j'ai envoyé, demande tout de meme une refonte de sa base de données

  8. #8
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 85
    Par défaut Voici le fichier.
    Je te remercie de me proposer de voir mon fichier. Pour que ce soit simple (j'espère), je l'ai mis avec la même mise en forme que le tien.

    L'exemple des chats et des chiens, c'était pour que ce soit plus clair. En réalité, mon fichier parle d'agriculture.

    Encore un grand merci pour tes conseils.
    Fichiers attachés Fichiers attachés

  9. #9
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    re:

    en voyant le fichier que tu as envoyé, c'est la solution menu popup choisie

    Donc, j'ai modifié ta base pour y accoler en colonne A un code (bidon, un numero progressif) qui doit etre different sur chaque ligne

    le feuille MENU, je 'lai aussi remaniée (Cases bleues, pour l'adaptée à ta base)

    Ce gestionnaire de menus deroulant est entierement adaptable pour toutes les bases de données et la page menu (Cases bleues et entete de colonne est la seule chose que l'utilisateur aie besoin de faire

    Tu disposes de trois procedures disponibles :

    Prep_menu : qui doit etre lancée à chaque modification de la base de donnée d'origine, elle prepare le menu (Feuille Menu) en fonction des colonnes définies entres les cases bleues et la colonne wilindex

    Cre_menu (lancée automatiquement apres un prep_menu, et relancée aussi apres chaque click droit

    aff_menu premettant l'affichage du menu (lancée automatiquement lors d'une click droit)

    Tu as aussi 2 macro evennementielles

    Workbooks_open qui lance les macro prep_menu et cre_menu

    sur la feuille concernée par la saisie
    une macro Worksheet_BeforeRightClick qui lance cre_menu et aff_menu

    Voila c'est tout

    Ton fichier en retour

Discussions similaires

  1. Comment exprimer une condition en html ?
    Par razily dans le forum Débuter
    Réponses: 4
    Dernier message: 04/04/2012, 20h01
  2. comment exprimer une condition sous un fichier xml?
    Par n_adou dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 28/05/2008, 20h28
  3. Exprimer une condition sur des sous-formulaires.
    Par Julieta dans le forum VBA Access
    Réponses: 2
    Dernier message: 08/12/2007, 15h11
  4. Réponses: 4
    Dernier message: 08/12/2007, 15h06

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