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 :

Liste déroulante semi-automatique & insertion de la liste en VBA [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Apprenti- Contrôle de Gestion
    Inscrit en
    Septembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 10
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Apprenti- Contrôle de Gestion
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2014
    Messages : 5
    Par défaut Liste déroulante semi-automatique & insertion de la liste en VBA
    Bonjour,

    Je suis apprenti chez un grand distributeur de marchandise en logistique . Je suis entrain de concevoir un emploi du temps sur Excel et j'ai besoin d'utiliser un menu déroulant semi assisté .

    C'est à dire que le collaborateur écrit "m" dans la casse et les choix commençant par " m" s’écrivent . Pour cette étape pas de souci grâce à un tuto trouvé sur Internet.

    Mon problème réside dans la création du menu déroulant en VBA. Après avoir suivi les étapes du tuto ci-dessus et enregistré l'opération par macro voici le résultat
    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
     
    With Selection.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:= _
            "=SI(Q24<>"""";DECALER(d_noms;EQUIV(Q24&""*"";l_noms;0)-1;;SOMMEPROD((STXT(l_noms;1;NBCAR(Q24))=TEXTE(Q24;""0""))*1));l_noms)"
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = ""
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = False
            .ShowError = False
       End With

    Lorsque que j’exécute la macro une erreur 1004 " Erreur définie par l'application ou par l'objet" apparaît !

    Je ne comprends pas pourquoi et j'aimerais avoir l'expertise du forum !

    NB : Je suis à lettre le tuto dans la réalisation de ce menu déroulant.
    NB2 : L'objectif est de crée ce menu déroulant à chaque double click du collaborateur.


    Merci d'avance !

    Cordialement,

  2. #2
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Bonjour et meilleurs vœux a tous,
    Je n'ai pas ton fichier en main et je ne sais pas comment tu as procédé mais il me semble bizarre de supprimer la sélection puis de vouloir y effectuer des opérations.
    Essayes de supprimer
    et reviens vers nous
    Sinon as-tu bien nommé tes plages de cellules ?
    et Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Apprenti- Contrôle de Gestion
    Inscrit en
    Septembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 10
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Apprenti- Contrôle de Gestion
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2014
    Messages : 5
    Par défaut Suite à la question
    Bonjour,

    Merci pour votre réponse rapide,

    Même en enlevant le ".delete" rien n'y fait ..

    Ci-joint le fichier en question ( les macro sont réalisés avec l'enregistreur).




    Cordialement,
    Fichiers attachés Fichiers attachés

  4. #4
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Bonjour,
    Désolé d'avoir un peu lâché ton problème, je suis un peu, beaucoup, occupe en ce moment.
    Va voir du cote des tutoriel de Silky Road tu y trouvera je pense ton bonheur et tu y apprendra également un peu, beaucoup, plus sur le VBA
    http://silkyroad.developpez.com/
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  5. #5
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    il est bien entendu nécessaire de supprimer le précédent menu déroulant si on veut on reconstruire un derrière.

    côté enregistreur de macro, faut se méfier avec les listes de validation qui sont conditionnées par une formule.

    en effet, l'enregistreur va pondre un code avec la formule en français (plus précisément en FormulaLocal)

    mais pour réutiliser le code, il faut convertir la formule en anglais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:= _
            "=IF(E4<>"""",OFFSET(d_noms,MATCH(E4&""*"",l_noms,0)-1,,SUMPRODUCT((MID(l_noms,1,LEN(E4))=TEXT(E4,""0""))*1)),l_noms)"
        .IgnoreBlank = True
        .InCellDropdown = True
        .ShowInput = True
        .ShowError = True
    End With

    avec ça, tu devrais obtenir ton menu déroulant ... mais je ne peux pas dire s'il contiendra bien ce que tu veux, aucune idée de ce que tu veux faire précisément (ni ce que contiennent tes plages mentionnées dans la formule)

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Apprenti- Contrôle de Gestion
    Inscrit en
    Septembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 10
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Apprenti- Contrôle de Gestion
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2014
    Messages : 5
    Par défaut Merci !
    Bonjour,

    Je voulais vraiment vous remercier ! Mon code final est op . A chaque clique un menue déroulant ce générè avec un assistant de saisie !

    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
    If fr_ok_1 <> fr Then
     
    Range(Target.Address).Select
    cellule = Target.Address
     
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:= _
            "=IF(" & cellule & "<>"""",OFFSET(d_noms,MATCH(" & cellule & "&""*"",l_noms,0)-1,,SUMPRODUCT((MID(l_noms,1,LEN(" & cellule & "))=TEXT(" & cellule & ",""0""))*1)),l_noms)"
        .IgnoreBlank = True
        .InCellDropdown = True
        .ShowInput = False
        .ShowError = False
    End With
     
    End If
    C'est au top ! Merci encore !

    Cordialement,

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 22/12/2014, 20h58
  2. [XL-2007] Liste déroulante semi-automatique
    Par khaz1 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/07/2014, 14h56
  3. Réponses: 1
    Dernier message: 04/05/2007, 12h15
  4. Liste déroulante semi automatique
    Par rudddy dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/04/2007, 12h56
  5. liste déroulante affichage automatique recherche
    Par ivan7 dans le forum Access
    Réponses: 4
    Dernier message: 21/04/2006, 18h39

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