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 :

userform liste déroulante sur une cellule avec boucle conditionnelle en ligne (row)


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2017
    Messages : 12
    Points : 10
    Points
    10
    Par défaut userform liste déroulante sur une cellule avec boucle conditionnelle en ligne (row)
    bonsoir,

    Je me permets une fois de plus de faire appel à votre expérience dans le vba.
    Mon code joint ci-dessous est un userform classique avec choix menu déroulant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub UserForm_Initialize()
    Me.ComboBox1.List = [parc].Value
    Me.ComboBox1.SetFocus
    SendKeys "{F4}"
    End Sub
     
    Private Sub combobox1_change()
    Range("b3").Value = Me.ComboBox1
    Unload Me
    End Sub
    J'aimerais créer une extension de ce dernier en lui demandant une fois mon choix sélectionner en "b3" d'écrire la valeur en "c3" une itération à i = n +1 avec n (valeur "B3") allant de 1 à 10. Bémol, quand n=10 la valeur de "C3" devra revenir à 1 et ainsi de suite ce qui me permettra de rester dans l'intervalle défini en amont.

    Merci par avance de votre réflexion

  2. #2
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    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 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    une proposition sans vraie conditionnelle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("C3").Value = Application.Max((Range("C3").Value + 1) Mod 10, 1)
    et avec conditionnelle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("C3").Value = IIf(Range("C3").Value = 10, 1, Range("C3").Value + 1)

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    l'évènement change d'une combobox étant également déclenché à chaque frappe de touche dans la zone de saisie de la combobox, il va y "avoir de la joie" sur ta feuille si un utilisateur se promène et fait mumuse dans cette zone de saisie

    EDIT : je vois trop souvent ce genre d'abus (risqué) d'utilisation de cet évènement. La vocation de l'évènement Change est autre : permettre de contrôler éventuellement des saisies dans la zone de saisie.
    Pour savoir ce que l'on a sélectionné, utiliser l'évènement CLICK et non Change ... Il est seul garant de non ambiguïtés.
    Sauf, bien évidemment à "infirmiser" la combo en inhibant l'accès à sa zone de saisie !
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  4. #4
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    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 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Remarque pertinente, mais je présume, si la conception est rigoureuse, que l'option DropDownStyle est à DropDownList

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour joe.levrai
    Bien sûr (mon edit), mais pourquoi réduire ainsi les fonctionnalités ? Cette zone de saisie est par exemple très utile pour localiser (par MatchEntry) plus facilement un article.

    EDIT : sans compter qu'il suffit de peu pour déclencher l'évènement Change.
    Que le développeur oublie par exemple le mécanisme qu'il a mis en place (ou qu'un successeur intervienne sans tout contrôler) et qu'il cherche, plus loin dans son code, si existe déjà un article, ce qu'il peut faire en donnant à la propriété text de la combo une valeur puis en regardant la propriété listindex (article absent si = -1) --->> évènement change déclenché !
    (Et ce n'est qu'un exemple de mésaventure possible).

    EDIT2 : la sagesse conduit à ne jamais oublier, par exemple, que s'il pleut, la route est mouillée, mais qu'une route mouillée ne signifie pas forcément qu'elle l'est parce qu'il a plu. D'autres raisons peuvent avoir mouillé la route.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

Discussions similaires

  1. [XL-2007] Créer une liste déroulante dans une cellule avec vba
    Par destroyed dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/07/2014, 09h19
  2. Réponses: 5
    Dernier message: 21/06/2012, 14h22
  3. Selectionner une valeur dans une liste déroulante sur le net avec vba
    Par zneidi77 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/06/2012, 15h48
  4. Réponses: 7
    Dernier message: 03/12/2007, 15h37
  5. [EXCEL] Insertion liste déroulante dans une cellule
    Par the java lover dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 02/11/2005, 18h30

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