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 :

ouverture automatique et fonctions du menu déroulant userform


Sujet :

Macros et VBA Excel

  1. #1
    Membre très actif
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2014
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2014
    Messages : 137
    Par défaut ouverture automatique et fonctions du menu déroulant userform
    re salut a tous

    je voudrais pouvoir a partir de ce code

    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
    Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     
    If Not Intersect(Target, Range("A2")) Is Nothing Then
    Sheets("compte 1").Select
    Worksheets("compte 1").Cells(2, "a").Select
     
    ElseIf Not Intersect(Target, Range("A3")) Is Nothing Then
    Sheets("compte 2").Select
    Worksheets("compte 2").Cells(3, "a").Select
     
    ElseIf Not Intersect(Target, Range("A4")) Is Nothing Then
    Sheets("compte 3").Select
    Worksheets("compte 3").Cells(4, "a").Select
     
    ElseIf Not Intersect(Target, Range("A5")) Is Nothing Then
    Sheets("compte 4").Select
    Worksheets("compte 4").Cells(5, "a").Select
     
    ElseIf Not Intersect(Target, Range("A6")) Is Nothing Then
    Sheets("compte 5").Select
    Worksheets("compte 5").Cells(6, "a").Select
     
    ElseIf Not Intersect(Target, Range("A7")) Is Nothing Then
    Sheets("compte 6").Select
    Worksheets("compte 6").Cells(7, "a").Select
     
    End If
     
    End Sub
    une fois la feuille et le compte sélectionner

    avoir le menu déroulant userform ouvert automatiquement pour sélectionner 1 des 10 Fournisseurs dans la liste

    et retrouver celui-ci en dessous de la ligne 7

    et de pouvoir dans ce meme compte reouvrir le deroulant par 1 clic pour changer de Fournisseur

    merci de votre aide je suis loin d être un maître en la matière!!!

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,
    Pourrais-tu être plus clair dans l'exposition de ton problème? Peut-être peux-tu nous transmettre une copie d'écran de ton fichier afin que nous visualisions ce que tu veux faire.
    Néanmoins :
    • La syntaxe de Cells est la suivante :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Cells(n° ligne,  colonne)
      On utilise le n° de la colonne et pas son nom, donc par exemple si tu veux écrire toto dans la cellule A2 :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Cells(2, 1).Value = "toto"
    • une fois la feuille et le compte sélectionné
      Que veut dire "sélectionné"? Est-ce que tu veux écrire dans une cellule le compte voulu?
    • avoir le menu déroulant userform ouvert automatiquement
      Qu'entends-tu par "automatiquement"? Est-ce dès que tu as écrit le nom de compte dans une cellule, un userform s'ouvre? Alors intéresse-toi aux évènements dans la feuille de calcul : http://silkyroad.developpez.com/VBA/EvenementsFeuille/. En particulier, Worksheet_Change.
    • En ce qui concernce l'ouverture d'un userform : lis le tuto sur les userform, tu y trouveras tout ce dont tu as besoin : http://silkyroad.developpez.com/VBA/UserForm/
    • Enfin, peux-tu nous expliquer ce que tu veux faire avec le code que tu nous présentes? Je ne comprends pas bien l'intérêt.

  3. #3
    Membre très actif
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2014
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2014
    Messages : 137
    Par défaut
    salut

    j ai 6 feuilles "comptes"

    dans n importe quelle feuille g 6 comptes et 10 fournisseurs par compte qui sont les mêmes sur chaque feuille

    exemple : je suis dans la feuille "compte 2" / je double clic sur "compte 5" (a6) / je me retrouve sur la feuille "compte 5" /

    ou s ouvre automatiquement le menu deroulant userforme du "compte 5" (a6) de la feuille "compte 5" / la je clic sur "fournisseur 9" du deroulant /

    le deroulant se ferme / la cellule "fournisseur 9" (a253) se positionne en dessous de la cellule (a7)

    je precise que le menu deroulant du fichier n est pas encore associer a la cellule du compte 5 de la feuille compte 5

    Que veut dire "sélectionné"?

    ca veut dire que le fait d ouvrir une autre feuille la cellule du "compte 5"(a6) va etre selectionner d office donc grace a cette selection le deroulant souvre seulNom : Capture.JPG
Affichages : 866
Taille : 257,0 Ko

  4. #4
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    En fait, ce qu'il faut que tu décides c'est "quand est-ce que le userform doit s'ouvrir"? Ensuite, une fois que tu sais ça, il faut trouver la fonction qui correspond. Si je comprends bien, ton UserFOrm doi s'ouvrir lorsqu'une certaine cellule est sélectionnée. Tu peux donc utiliser Worksheet_SelectionChange. Pou afficher un UserForm, on utilise UserForm.Show.
    Comment décide-t-on des fournisseurs à afficher dans la liste en fonction du compte?

    Ensuite, en ce qui concerne ton code pour le double-clique, je pense que tu pourrais plus simplement utiliser des liens hypertextes. C'est exactement la même fonctionnalité.

  5. #5
    Membre très actif
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2014
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2014
    Messages : 137
    Par défaut
    En fait, ce qu'il faut que tu décides c'est "quand est-ce que le userform doit s'ouvrir"?
    il s ouvre de 2 facons

    la 1ere :suite au double clic la nouvelle feuille souvre et le deroulant avec

    la 2eme :si je reste dans la meme feuille c juste en selectionnant le compte pour changer de fournisseur

    g bien compris que je doit mettre mon code dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    End Sub
    mais c quoi le code ? la et mon probleme et ce code doit ce trouver dans toutes les feuilles ??


    Comment décide-t-on des fournisseurs à afficher dans la liste en fonction du compte?
    la list des fournisseurs (10) et la meme pour toutes les feuilles et tous les comptes (1 seul userform)

    donc une fois mon deroulant ouvert je clic sur un des 10 fournisseurs qui se positionne en dessous de la ligne 7


    utiliser des liens hypertextes
    c quoi et comment ont fais ca ???

  6. #6
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    mais c quoi le code ? la et mon probleme et ce code doit ce trouver dans toutes les feuilles ??
    Si tu veux ouvrir un UserForm, comme je te le disais précédemment, il faut utiliser UserForm.Show, en adaptant avec le nom du UserForm.
    Oui, il faudra le mettre dans toutes les feuilles.
    utiliser des liens hypertextes
    c quoi et comment ont fais ca ???
    C'est un peu comme sur Google : tu cliques dessus et ça t'amène où tu veux. Un exemple :
    Nom : lien hypertexte.png
Affichages : 829
Taille : 35,8 Ko
    En cliquant sur le lien, on arrive à la cellule A1 de la feuille "Arrivee".

  7. #7
    Membre très actif
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2014
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2014
    Messages : 137
    Par défaut
    il faut utiliser UserForm.Show, en adaptant avec le nom du UserForm.

    ok mais je met quoi pour que ca marche une fois dans userform show?

    mon userform s appelle userform1_Fournisseurs

    et apres pour que la cellule ou plutot la ligne du fournisseur ce retrouve en dessous de la ligne 7

  8. #8
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Je ne comprends pas bien le but de ton code. Tu veux sélectionner un fournisseur dans une listbox de ton userform afin que la cellule dont la valeur est ce fournisseur se retrouve juste en dessous du volet figé?
    Si c'est le cas, pas besoin de passer par un userform, ici encore, tu peux utiliser des liens hypertextes. Tu notes tous les noms des fournisseurs et tu créés un lien vers la cellule de ce fournisseur. Ensuite, si tu veux que la cellule se retrouve en haut à gauche, juste en dessous du volet, tu peux écrire dans chaque feuille le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
        ActiveWindow.ScrollRow = ActiveCell.Row
    End Sub
    D'après ce que j'ai compris de tes explications, la structure des tes feuilles est toujours la même (d'un compte à l'autre), tu peux donc procéder comme suit :
    • Créer la feuille du compte 1
    • Ecrire tous les liens vers les fournisseurs sur la feuille du compte 1
    • Copier cette feuille autant de fois qu'il y a de comptes et les nommer correctement (les liens hypertexte seront copiés aussi et seront adaptés à la nouvelle feuille)
    • Sur la feuille du compte 1, écrire les liens hypertexte vers les autres compte (écrire le lien hypertexte pour le compte 1 aussi !)
    • Copier les liens hypertextes des comptes (sur la feuille du compte 1) et les coller sur tous les autres comptes.



    Après, si tu veux à tout prix passer par des userform, je te conseille de lire le tuto sur les userform et le tuto sur les controles des userform : http://silkyroad.developpez.com/VBA/UserForm/ et http://silkyroad.developpez.com/VBA/ControlesUserForm/
    Il faudrait au moins que tu tentes d'écrire un bout de code pour que nous puissions t'aider, car là, on a pas trop d'éléments pour t'aider et le but de ce forum n'est pas d'écrire le code à ta place, mais de t'aider à l'écrire si tu rencontre des problèmes.

  9. #9
    Membre très actif
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2014
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2014
    Messages : 137
    Par défaut
    re
    faire des liens hypertextes dans le menu déroulant c possible ??

    je suppose que ce code marche juste avec les liens hypertextes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
        ActiveWindow.ScrollRow = ActiveCell.Row
    End Sub
    ci dans la mesure ou les liens hypertextes sont impossible dans le déroulant

    quel est le code avec ce déroulant

    g déjà tous les noms de comptes sur la feuille je veux pas en plus ceux des fournisseurs



    g aussi tester les liens hypertextes c vrai que c plus simple mais g découvert un soucis

    c que la cellule sélectionner dans la nouvelle feuille correspond a l ouverture userform

    et si je referme userform en restant sur la même cellule que je change de compte çà ne marche plus

    obliger de revenir par les onglets

  10. #10
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Citation Envoyé par exelan Voir le message
    g aussi tester les liens hypertextes c vrai que c plus simple mais g découvert un soucis
    c que la cellule sélectionner dans la nouvelle feuille correspond a l ouverture userform
    et si je referme userform en restant sur la même cellule que je change de compte çà ne marche plus
    obliger de revenir par les onglets
    Je ne comprends pas ce que tu veux dire

    Pour la liste déroulante : non, on ne peut pas faire de lien hypertexte dans une liste déroulante. Par contre, au lieu de passer par un userform, tu peux faire une liste classique (Données > Validation des données) : https://support.office.com/fr-fr/art...9-C5402DCE407B
    Ensuite, pour aller vers la bonne cellule, on peut utiliser un evenement de la feuille de calcul : dès que la cellule avec la liste est modifiée (donc dès qu'on choisit qqc dans la liste), on déclenche une procédure qui envoie vers la bonne cellule.
    1. Dans la feuille avec les comptes, créer une liste déroulante avec les fournisseurs en cellule C1 (par exemple)
    2. Dans une feuille qu'on nommera par exemple "Source", faire un tableau de correspondance : fournisseur | adresse de la cellule. On supposera que ce tableau se situe sur les colonnes A et B et qu'il ne comporte pas d'entête.
      Par exemple :
      A B
      fournisseur 1 A8
      fournisseur 2 A43
      ... ...
    3. Si le nombre de fournisseurs n'est pas amené à changer, nommer la plage de cellules avec les correspondances de façon classique : https://support.office.com/fr-fr/art...b-8f4144c256c2
      Si le nombre de fournisseurs est amené à changer, on nommera la plage de cellule de façon à prendre en compte d'éventuels ajout/suppression de fournisseurs. La source de la plage nommée sera:
      =DECALER(A1:B1;0;0;NBVAL(A:A))
      Attention à ne rien mettre en dessous de la liste des fournisseurs.
      On nommera la plage : tableFournisseurs, par exemple.
    4. Dans VBA, dans la feuille de calcul, créer une méthode évènementielle Worksheet_Change
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      Private Sub Worksheet_Change(ByVal Target As Range)
          Dim celFourn As String      'nom de la cellule avec le fournisseur
          If Target.Row = 1 And Target.Column = 3 Then        'on s'intéresse au changement de la cellule C1
              celFourn = Application.VLookup(Target.Value, "tableFournisseurs", 2, 0) 'on cherche dans le tableau de correspondance la cellule correspondant _
                                                                                      au fournisseur sélectionné
              Rnage(celFourn).Select              'on se positionne sur cette cellule
              ActiveWindow.ScrollRow = Range(celFourn).Row
          End If
      End Sub

  11. #11
    Membre très actif
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2014
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2014
    Messages : 137
    Par défaut
    c pas trop ce que je veux

    pour faire simple

    on va procéder par etape

    en feuille 1 je double clic sur lien hyper texte feuille 3 qui m ouvre la feuille 3 avec le déroulant userform ouvert ainsi que la liste de fournisseurs

    ca ca marche !!!

    1/ quand je clic sur un fournisseur 8 de la liste du déroulant ça doit :

    2/fermer le deroulant

    3/et ramener la ligne du fournisseur 8 en dessous de la ligne 7 ( volet figer )

    list (Fournisseurs)
    fournisseur 1 = a 8
    fournisseur 2 = a 43
    fournisseur 3 = a 73
    fournisseur 4 = a 103
    fournisseur 5 = a 133
    fournisseur 6 = a 163
    fournisseur 7 = a 193
    fournisseur 8 = a 223
    fournisseur 9 = a 253
    fournisseur 10 = a 283

  12. #12
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,
    Dans le post#10, je te donne un code qui permet de faire ce que tu veux à partir d'une liste déroulante.
    Si tu veux à tout prix faire cela avec un UserForm et une ComboBox, il suffit de l'adapter pour le Userform : dans le post#8, je te donnes des liens vers des tutos sur les UserForm. Si tu veux ouvrir un UserForm contenant une ComboBox, récupérer la valeur de la ComboBox, puis fermer le UserForm : tu trouveras ton bonheur dans ces tutos.
    Le forum n'a pas vocation à faire le travail à la place des autres, mais à aider des développeurs/apprentis développeurs lorsqu'ils bloquent dans la conception de leurs codes. Or depuis le début de cette conversation, je vois surtout des demandes et consignes, mais pas beaucoup d'efforts de conception de ta part. Je t'ai déjà donné beaucoup d'éléments pour avancer, maintenant, c'est à toi de digérer tout cela et d'essyer de concevoir un code qui te convient. C'est toi qui sait le mieux ce que tu veux, donc c'est toi qui pourra faire le code le plus approprié à ton problème.
    Essaie donc d'écrire un code et si vraiment tu bloques encore (messages d'erreur que tu ne sais pas résoudre, par exemple), reviens vers nous en expliquant bien ton problème.

  13. #13
    Membre très actif
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2014
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2014
    Messages : 137
    Par défaut
    salut

    g tester par Validation des données. c pas pratique pour l execution

    1er clic sur la cellule/ 2eme clic sur la fleche/ 3eme clic sur le nom de la liste et encore si faut pas dérouler le menu avec le bouton monte et descend (trop de clic/ choix de liste compliquer/ le positif rapide et facile a faire )

    sur les tutos (Utiliser les UserForm en VBA Excel et Utiliser les contrôles dans un UserForm, en VBA Excel ) g bien regarder userform et combobox et g rien trouver qui me dit comment : avec un clic de mon choix sur la liste

    mettre ce choix dans la cellule

    tu peux tu me dire a quel endroit regarder dans c tutos ou ailleurs ou une piste marre de galerer pour un truc doit etre si simple !!!

  14. #14
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Je ne peux pas faire mieux que recopier le tuto :
    II-F. ComboBox
    Récupérer le contenu de l'item sélectionné.
    La procédure renvoie une chaîne vide si rien n'est affiché dans le ComboBox.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton1_Click()
        MsgBox ComboBox1.Value
    End Sub
    Après, amuse-toi à regarder dans l'éditeur VBA toutes les methodes qui existent pour ComboBox et utilise celle qui est le mieux adaptée à ton besoin (ComboBox1_Change(), ComboBox1_Click() etc...)

  15. #15
    Membre très actif
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2014
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2014
    Messages : 137
    Par défaut
    dsl ca marche pas ou en fait je n arrive pas a savoir quoi mettre avec
    v voir d autres forum

    merci d avoir essayer de m aider !!!

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/02/2016, 12h36
  2. [XL-2010] RECHERCHEV fonction de menu déroulant
    Par splog dans le forum Excel
    Réponses: 2
    Dernier message: 29/01/2014, 18h45
  3. Insérer une valeur automatiquement par rapport à un menu déroulant
    Par mateo78711 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 03/12/2012, 17h02
  4. recharger label en fonction du menu déroulant asp.net
    Par _haroun dans le forum ASP.NET
    Réponses: 2
    Dernier message: 30/04/2010, 19h17
  5. Menu déroulant avec préselection automatique
    Par Invité dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 16/06/2005, 13h11

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