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 de données


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Apprenti ingénieur
    Inscrit en
    Juin 2016
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Apprenti ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2016
    Messages : 25
    Points : 17
    Points
    17
    Par défaut Liste de données
    Bonjour,

    J'essaie de créer une liste à partir de données que j'ai en colonne sur une même feuille. Cette plage de cellules est variable, elle va augmenter au fur et à mesure qu'on va remplir le fichier.

    Quand je fais un apprentissage, VBA me donne ça :
    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
     
    Sub liste()
    ' liste Macro
        Range("G5").Select
        With Selection.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="=$C$4:$C$9"
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = ""
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = True
        End With
    End Sub
    Ca me fait bien une liste en G5 des données contenues en C4:C9
    Sauf que dans mon cas, la cellule C9 n'est pas figée.
    Donc j'introduis une variable Ligne (on peut la considérer comme constante vu qu'elle déterminée par une boucle un peu plus haut)
    Donc dans ma ligne 7, je veux non plus C9, mais la cellule (Ligne,C)
    Les $ ne servent à rien, ça fonctionne toujours quand on les retire.
    Je suis finalement arrivé à cette expression :
    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
     
    Dim Ligne As Integer
    Sub lignes()
        Ligne = 4
        Do While Cells(Ligne, 3) <> ""
            Ligne = Ligne + 1
        Loop
        Ligne = Ligne - 1
        MsgBox Ligne
        Range("G5").Select
        With Selection.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:=Range(Cells(4, 3), Cells(Ligne, 3))
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = "Date"
            .ErrorTitle = "Erreur"
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = True
        End With
    End Sub
    Quand on considère que Ligne = 4 (en retirant la boucle au dessus), ça fonctionne : j'ai bien le contenu de C4 dans G5, avec un menu déroulant. Quand on prend toute la boucle, le programme fonctionne jusqu'à "Range("G5").Select" et après il passe en mode débogage.

    Quelqu'un saurait m'aider?

  2. #2
    Membre habitué
    Homme Profil pro
    Technicien bureau d'études
    Inscrit en
    Novembre 2015
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien bureau d'études

    Informations forums :
    Inscription : Novembre 2015
    Messages : 118
    Points : 172
    Points
    172
    Par défaut
    Bonjour MrcRafale.

    Premièrement, il vaut mieux éviter au maximum les Select, dans cette situation ce n'est pas un soucis en soi, mais autant prendre l'habitude.
    Deuxièmement, la partie Formula1:=, attends une formule et pas une expression VBA comme tu as pu le faire.

    Essaye ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        With [g5].Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="=$C$4:$C$" & Ligne
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = "Date"
            .ErrorTitle = "Erreur"
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = True
        End With

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Tu ouvres une nouvelle discussion avec la même question posée dans la discussion nommée Création d'une liste dans excel avec VBA.
    Discussion où tu n'as même pas répondu à ma dernière réponse que j'ai faite suite à une de tes demandes
    Si vous savez comment faire pour avoir un lien hypertexte vers la feuille nommée dans le sommaire, ça me simplifie la tâche et allège l'applicatif
    Je ne sais pas si tu te rends compte du temps que l'on passe à répondre d'une façon correcte et en effectuant tous les tests pour que la réponse soit pertinente et que le code fonctionne.
    Le minimum est de répondre ou de faire un commentaire sur les interventions.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Membre à l'essai
    Homme Profil pro
    Apprenti ingénieur
    Inscrit en
    Juin 2016
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Apprenti ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2016
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par thebenoit59 Voir le message
    Bonjour MrcRafale.

    Premièrement, il vaut mieux éviter au maximum les Select, dans cette situation ce n'est pas un soucis en soi, mais autant prendre l'habitude.
    Deuxièmement, la partie Formula1:=, attends une formule et pas une expression VBA comme tu as pu le faire.

    Essaye ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        With [g5].Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="=$C$4:$C$" & Ligne
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = "Date"
            .ErrorTitle = "Erreur"
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = True
        End With
    C'est nickel, ça marche!! Merci!

  5. #5
    Membre à l'essai
    Homme Profil pro
    Apprenti ingénieur
    Inscrit en
    Juin 2016
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Apprenti ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2016
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Tu ouvres une nouvelle discussion avec la même question posée dans la discussion nommée Création d'une liste dans excel avec VBA.
    Discussion où tu n'as même pas répondu à ma dernière réponse que j'ai faite suite à une de tes demandes
    Je ne sais pas si tu te rends compte du temps que l'on passe à répondre d'une façon correcte et en effectuant tous les tests pour que la réponse soit pertinente et que le code fonctionne.
    Le minimum est de répondre ou de faire un commentaire sur les interventions.
    Bonjour M. Tulliez,

    Je n'ai pas vu de réponse à ma question sur le fil que j'ai ouvert ce matin, depuis cette fameuse question sur les liens hypertextes.
    J'ai donc passé quelques heures à y réfléchir avec un collègue et c'est ensemble que nous avons choisi de reposter un message.
    Si je vous ai offensé d'une quelconque manière que ce soit, je m'en excuse : ce n'était absolument pas volontaire. Cela semblerait plutôt lié à un souci informatique.

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

Discussions similaires

  1. Select list me donne l'index et non la valeur
    Par beegees dans le forum ASP
    Réponses: 3
    Dernier message: 07/09/2006, 09h21
  2. [VBA-Exel2003]liste de données et formulaires
    Par stargates dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/08/2006, 20h53
  3. [VB] Envoyer une liste de données du serveur au client
    Par splouf dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 31/03/2006, 18h36
  4. [CR11]Formule et liste de données
    Par azertyuia dans le forum Formules
    Réponses: 4
    Dernier message: 15/03/2005, 12h14
  5. Limiter les 30dernière liste de données?
    Par SkyDev dans le forum Langage SQL
    Réponses: 11
    Dernier message: 08/03/2004, 17h01

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