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 reference relative et liste conditionnelle


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2017
    Messages : 2
    Par défaut Macro reference relative et liste conditionnelle
    Bonjour à toutes et à tous,

    Je suis nouvelle sur ce forum, et m’excuse par avance si ma question a déjà été évoquée mais je n’ai pas trouvé de réponse à ma question…

    Voila, je travaille sur un tableau Excel (2016), pour créer une trame d’un devis avec insertion de groupes de lignes automatisées. Mes groupes de lignes sont toutes différentes en nombres de lignes, textes, etc. j’utilise les références relatives des macros, pour pouvoir insérer mes lignes n’importe où dans ma colonne.

    Seulement, j’ai un groupe de ligne qui inclus des listes déroulantes conditionnelles. Mais avec la fonction INDIRECT, la macro bug si je ne l’insère pas là où je l’ai créé.
    Comment puis-je renommer dans le code la cellule dont dépend ma liste à afficher ? Ou y a-t-il une autre fonction que INDIRECT ?

    J’espère que je suis claire dans mes explications, je ne voudrais pas faire un roman !

    Voici le code qui bug :

    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
    ActiveCell.Offset(1, 0).Range("A1").Select
        ActiveCell.FormulaR1C1 = "listeAticles"
        ActiveCell.Offset(1, 0).Range("A1").Select
        With Selection.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="=INDIRECT($C$5)"
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = ""
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = True
        End With
    Donc en résumé le but est de renommer C5 en une référence comme ActiveCell… je ne sais pas trop comment dire !!
    En vous remerciant de vos retours.

    Azyho

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Excuse-moi mais je ne comprends pas tes explications.
    Mais j'ai la nette impression que tu fais beaucoup trop compliqué pour ce que tu souhaites (rien qu'à voir les deux premières lignes de ton code).

    Pourrais-tu expliquer de manière claire ce que tu souhaites obtenir dans la cellule active ?
    Si à peu près compris, il s'agit de mettre dans cette cellule une validation de données par liste déroulante. Mais quelle est la référence de la liste source ?

  3. #3
    Candidat au Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2017
    Messages : 2
    Par défaut
    Bonsoir,
    Merci de vos retours.

    Je sais que je ne suis pas très claire, et je m'en excuse mais je patauge un peu !!
    En fait, j'ai un groupe de trois lignes à insérer dans une colonne. La C
    1er cellule C1 : liste de mes articles (liste déroulante)
    2eme cellule en dessous C2 : le modèle de mon article (matière, couleur, etc) (liste déroulante)
    et 3eme cellule en dessous C3 : la dimension. (idem) qui un fois sélectionnée donne le prix.

    donc pour avoir ces listes déroulantes dans la colonne A se génère des références qui permette de déterminer les listes à avoir.
    Tout fonctionne bien si j'insère ma 1ere cellule en C1 mais si j'insère en C8 par exemple, j'ai un code erreur puisqu'il cherche la référence en A2 pour trouver la liste...

    il y a certainement un moyen autre que INDIRECT ou encore un moyen qu'il fasse une recherche plus étendue que dans une seule cellule...
    Merci

    Theze, merci, j'ai essayé mais ça bug quand même... peut-être mal utilisé...

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Azyho Voir le message
    En fait, j'ai un groupe de trois lignes à insérer dans une colonne. La C
    1er cellule C1 : liste de mes articles (liste déroulante)
    2eme cellule en dessous C2 : le modèle de mon article (matière, couleur, etc) (liste déroulante)
    et 3eme cellule en dessous C3 : la dimension. (idem) qui un fois sélectionnée donne le prix.
    Ca ne répond pas à ma question : où se trouvent les données sources de ces listes déroulantes ?

    donc pour avoir ces listes déroulantes dans la colonne A se génère des références qui permette de déterminer les listes à avoir.
    J'ai relu trois fois cette phrase avec attention sans parvenir à la comprendre.

    Tout fonctionne bien si j'insère ma 1ere cellule en C1 mais si j'insère en C8 par exemple, j'ai un code erreur puisqu'il cherche la référence en A2 pour trouver la liste...
    Que vient faire C8 là-dedans ? Tu as dit que tes listes déroulantes étaient en C1, C2 et C3 ?
    Qu'y a-t-il en A2 ? Pourquoi ça ne convient pas pour C8 ? Qu'est-ce qui conviendrait pour C8 ?

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Une piste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim Cel As String
     
    Cel = "C10"
     
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:="=INDIRECT(" & Cel & ")"

Discussions similaires

  1. Réponses: 25
    Dernier message: 26/06/2009, 14h15
  2. [E-03] Macro pour créer une liste sans les vides
    Par PYJ59 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/12/2008, 10h19
  3. [Domi2] Liste conditionnelle à une autre
    Par matrims dans le forum IHM
    Réponses: 1
    Dernier message: 22/09/2006, 15h08
  4. macro pour remplire une liste dans une même cellule
    Par fabiend83 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/07/2006, 09h32

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