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 :

Sélection d'un item dans une liste déroulante, afficher sa valeur dans une "étiquette" dans un Userform [XL-MAC 2011]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2017
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 58
    Points : 24
    Points
    24
    Par défaut Sélection d'un item dans une liste déroulante, afficher sa valeur dans une "étiquette" dans un Userform
    Bonjour,

    Je suis un très grand débutant et ai choisi VBA pour m'initier à la programmation. J'ai parcouru le forum et ai pu voir qu'y cohabitent de fortes personnalités. Au risque de prendre un vent, après n'avoir pas trouvé solution à l'intitulé ci-dessus, je me lance :

    J'ai un Userform qui me sert à enregistrer des informations 'nom' 'prénom' 'fonction' et 'email' dans une feuille 'Intervenants'.
    Sur le même Userform j'ai ajouté une 'liste déroulante' qui me permet de sélectionner par le 'nom' dans la feuille 'Intervenants'.
    J'y ai placé également 4 étiquettes sensées renvoyer le nom sélectionné dans la première puis les valeurs contiguës dans les 3 autres...

    Je suis bloqué à 2 niveaux :
    a) je n'arrive pas à afficher le nom dans la première étiquette ; voici mon pauvre Vba qui ne plante pas mais n'affiche rien :

    #
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Liste_Intervenants_Change()
     
    If (Liste_Intervenants.SelText <> "") Then
    Dim curItem As String
    curItem = Liste_Intervenants.Text
    Nom_Intervenant.Caption = curItem
    End If
     
    End Sub
    #

    b) j'ai compris que je devrai utiliser Offset pour afficher les autres valeurs dans mes autres étiquettes mais je ne vois pas comment écrire le code qui indique que dans la feuille 'Intervenants' que la cellule (X, n) correspondant à la valeur sélectionnée dans 'Liste_Intervenants' est la cellule active.

    Je serai ravi de recevoir vos précieux concours, même si pour beaucoup ceci doit sembler le b a-ba.

    Par avance, Merci

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    le soucis c'est de bien démarrer avec le bon principe pour se simplifier la vie

    remplir la liste deroulante (combobox) intelligemment

    j'entend par la que
    soit on ajoute une colonne dans la combobox quitte a la cacher en lui mettant les numéros de ligne
    soit en mémorisant dans une variable ou meme dans le tag de la combobox

    de façon a que a la sélection d'un item on puisse déterminer facilement et sans peine la ligne correspondante dans le sheet

    ensuite oui c'est simple
    en mode B A BA on utilise offset0,y) sur la cellule 1 de la ligne correspondant a l'intervenant


    commence déjà par concevoir ca apres on pourra avancer

    comment remplie tu ta liste déroulante?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2017
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 58
    Points : 24
    Points
    24
    Par défaut Merci Patrick mais ça ne répond pas à mon petit a)
    Citation Envoyé par patricktoulon Voir le message
    le soucis c'est de bien démarrer avec le bon principe pour se simplifier la vie

    remplir la liste deroulante (combobox) intelligemment

    j'entend par la que
    soit on ajoute une colonne dans la combobox quitte a la cacher en lui mettant les numéros de ligne
    soit en mémorisant dans une variable ou meme dans le tag de la combobox

    de façon a que a la sélection d'un item on puisse déterminer facilement et sans peine la ligne correspondante dans le sheet

    ensuite oui c'est simple
    en mode B A BA on utilise offset0,y) sur la cellule 1 de la ligne correspondant a l'intervenant


    commence déjà par concevoir ca apres on pourra avancer

    comment remplie tu ta liste déroulante?
    Je pense la remplir correctement et ce n'est pas l'objet de ma demande mais pour répondre à ta question, Patrick :

    #
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub UserForm_Activate()
     
    Dim Ligne As Integer: Ligne = 1
     
    While (ThisWorkbook.Worksheets(3).Cells(Ligne, 1).Value <> "")
        Liste_Intervenants.AddItem (ThisWorkbook.Worksheets(3).Cells(Ligne, 1).Value)
        Ligne = Ligne + 1
    Wend
     
    End Sub
    #

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

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 433
    Points
    12 433
    Par défaut
    Bonjour

    Tu as plutôt intérêt à lier ta listbox à la plage contenant les intervenants.
    Tu ne nous dis pas ce que contient la feuille des intervenants déjà connus.
    Peux-tu nous en montrer ici une image ? Car cela nous permettra de te guider en meilleure connaissance de cause vers la solution la mieux adaptée.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2017
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 58
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par unparia Voir le message
    Bonjour

    Tu as plutôt intérêt à lier ta listbox à la plage contenant les intervenants.
    Tu ne nous dis pas ce que contient la feuille des intervenants déjà connus.
    Peux-tu nous en montrer ici une image ? Car cela nous permettra de te guider en meilleure connaissance de cause vers la solution la mieux adaptée.
    Bonjour et merci pour la suggestion de la plage, mais j'imagine qu'il faut la déclarer et faire en sorte qu'elle soit dynamique en cas d'incrément comme de décrément. Ça dépasse ma maîtrise du sujet pour l'instant me semble-t-il mais je vais m'y pencher pour le coup d'après...

    Bien cordialement

    Voici quelques captures d'écran du Userform et des données saisies dans ma Feuille3 'Intervenants' :

    Nom : intervenant.PNG
Affichages : 4488
Taille : 22,3 KoNom : intervenant_select.PNG
Affichages : 4319
Taille : 14,3 KoNom : Feuille Intervenants.PNG
Affichages : 4332
Taille : 33,9 Ko

    Pour la beauté de l'exercice, j'ai (à tort ou à raison) voulu éviter de rajouter une colonne de N° parce que à l'usage lorsque l'on supprime une ligne on se retrouve avec une discontinuité de numérotation que pour ma part je trouve hideuse d'une part et que numéroter une personne ne me parait pas bien élevé. J'ai donc ajouté un "doublon" patronymique 'BERLIOZ" pour voir comment contourner l'absence de numérotation automatique en colonne A par exemple. Merci 'Unparia' de me corriger si je fais fausse route.

    ps: on est tous le paria de quelqu'un mais j'ai connu un O.Paria par le passé...

  6. #6
    Membre à l'essai
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2017
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 58
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par unparia Voir le message
    Bonjour
    Peux-tu nous en montrer ici une image ? Car cela nous permettra de te guider en meilleure connaissance de cause vers la solution la mieux adaptée.
    Je suis perplexe !

    Alors qu'il ne se passe rien lorsque je sélectionne les 3 premiers intervenants de la liste, lorsque que je sélectionne 'BERLIOZ' (le compositeur), le label retourne bien la valeur BERLIOZ

    Nom : INTERVENANTS.jpg
Affichages : 4270
Taille : 16,2 KoNom : INTERVENANTS 2.jpg
Affichages : 4222
Taille : 17,7 Ko

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    re
    je n'est pas dis de numeroter un nom mais de repérer les lignes

    exemple démo visuelle
    Nom : demo12.gif
Affichages : 5113
Taille : 371,5 Ko


    tu constatera que dans la demo visuelle je ne confond pas Berlioz 1 et 2
    j'ai pris parti de nommer les étiquette(textbox) (TXT1,TXT2,TXT3,ETC.....)
    je prends la plage concernée + une colonne dans une variable tableau
    cette colonne en plus j'y met les numero de ligne de la plage (l'avantage c'est que la plage n'est pas obligé de commencer a la ligne 1)
    je te joins ce petit classeur démo il n'y a rien a repérer c'est tout fait d'avance

  8. #8
    Membre à l'essai
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2017
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 58
    Points : 24
    Points
    24
    Par défaut Merci Patrick!
    Citation Envoyé par patricktoulon Voir le message
    re
    je n'est pas dis de numeroter un nom mais de repérer les lignes


    tu constatera que dans la demo visuelle je ne confond pas Berlioz 1 et 2
    j'ai pris parti de nommer les étiquette(textbox) (TXT1,TXT2,TXT3,ETC.....)
    je prends la plage concernée + une colonne dans une variable tableau
    cette colonne en plus j'y met les numero de ligne de la plage (l'avantage c'est que la plage n'est pas obligé de commencer a la ligne 1)
    je te joins ce petit classeur démo il n'y a rien a repérer c'est tout fait d'avance
    Ne connaissant rien à rien des plages et des tableaux, je pense que ça va me prendre l'après-midi pour maîtriser ce code... car je souhaite comprendre dans le moindre détail cette histoire de plage et de valeurs enregistrées dans un tableau et qui me parait super élégante.

    Effectivement je souhaitais utiliser comme tu le fais les numéros de lignes plutôt que de créer une numérotation en sus. Je n'avais pas bien lu ou compris ta première réponse.

    Merci pour ton temps et ton aide précieuse.
    Eric

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    de rien
    pose moi les question que tu veux sur cet exemple

    tu peux partir de la pour ton projet

    le numéro de ligne correspondant sur le sheets sera toujours combobox1.list( indexchoisi,colonne 6 de la combobox)

  10. #10
    Membre à l'essai
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2017
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 58
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    de rien
    pose moi les question que tu veux sur cet exemple

    tu peux partir de la pour ton projet

    le numéro de ligne correspondant sur le sheets sera toujours combobox1.list( indexchoisi,colonne 6 de la combobox)
    Rebonjour Patrick,

    1
    C'est super élégant certes mais tu as défini une plage figée A1:G4
    Demain j'ajoute 7 intervenants et une semaine après j'en retire 3
    Je dois redéfinir ma plage à la mano ou bien existe-t-il un moyen de définir une plage "dynamique" ?

    2
    J'avoue ne pas saisir l'astuce si c'en est une de la colonne 6

    Par avance merci
    Eric

  11. #11
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    re
    je t'en refait un avec plage mise a jour laisse moi un moment

  12. #12
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut.

    Je suppose que tu travailles avec une version >= 2007. Dès lors, tu as intérêt à travailler avec des tables de données. Tu pourras ainsi créer une plage dynamique simplement en créant une plage nommée sur base de ton tableau. En utilisant cette technique, tu peux ajouter les données que tu veux, la liste est actualisée à l'initialisation du userform.

    Il suffira alors, à l'initialisation du userform, d'actualiser la rowsource du combobox, comme illustré dans le code ci-dessous. Lors du changement de sélection sur le combobox, il faut alors renvoyer la valeur de la colonne souhaitée du combobox.

    Nom : 2017-08-28_142833.png
Affichages : 6840
Taille : 40,8 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub cboFirstName_Change()
      With cboFirstName
        labLastName.Caption = .Column(1, .ListIndex)
      End With
    End Sub
     
    Private Sub UserForm_Initialize()
      cboFirstName.RowSource = "=plage"
    End Sub

    Cela étant, tu parles d'étiquettes (label) et Patrick illustre cela avec des zones de text (TextBox). A toi d'adapter mon code en fonction de ton besoin. Le principe est de déléguer au maximum le travail à Excel et de s'appuyer dessus pour du VBA. C'est pourquoi je préconise l'utilisation de la table de données liée à une plage dynamique. Cela réduit ton code au minimum vital et donc limite les risques d'erreurs.

    Remarque: Sur ma version 2016, si on ne redéfinis pas le rowsource lors de l'initialisation du userform, Excel plante... mais avec cette ligne de code en plus, ça fonctionne
    Fichiers attachés Fichiers attachés

  13. #13
    Membre à l'essai
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2017
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 58
    Points : 24
    Points
    24
    Par défaut 1000 MERCIS
    Citation Envoyé par Pierre Fauconnier Voir le message
    Salut.

    Je suppose que tu travailles avec une version >= 2007. Dès lors, tu as intérêt à travailler avec des tables de données. Tu pourras ainsi créer une plage dynamique simplement en créant une plage nommé sur base de ton tableau. En utilisant cette technique, tu peux ajouter les données que tu veux, la liste est actualisée à l'initialisation du userform.

    Il suffira alors, à l'initialisation du userform, d'actualiser la rowsource du combobox, comme illustré dans le code ci-dessous. Lors du changement de sélection sur le combobox, il faut alors renvoyer la valeur de la colonne souhaitée du combobox.

    Nom : 2017-08-28_142833.png
Affichages : 6840
Taille : 40,8 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub cboFirstName_Change()
      With cboFirstName
        labLastName.Caption = .Column(1, .ListIndex)
      End With
    End Sub
     
    Private Sub UserForm_Initialize()
      cboFirstName.RowSource = "=plage"
    End Sub

    Cela étant, tu parles d'étiquettes (label) et Patrick illustre cela avec des zones de text (TextBox). A toi d'adapter mon code en fonction de ton besoin. Le principe est de déléguer au maximum le travail à Excel et de s'appuyer dessus pour du VBA. C'est pourquoi je préconise l'utilisation de la table de données liée à une plage dynamique. Cela réduit ton code au minimum vital et donc limite les risques d'erreurs.
    MERCI!!! C'est exactement le possible que j'imaginais mais je n'avais pas compris comment ne pas tout faire en VBA.

    En fait j'ai un MacBook avec Office 2011 pour Mac (donc pas d'ActiveX possible) et un Bootcamp avec Seven et Office 2013 ; ce qui est intéressant c'est de tester le code du Mac sous PC et l'inverse. C'est parfois très surprenant...

    Je vais essayer d'agréger ton code à celui de Patrick que je remercie au passage également à nouveau.

    Bonne journée
    Eric

  14. #14
    Membre à l'essai
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2017
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 58
    Points : 24
    Points
    24
    Par défaut Pour être plus libres certains hommes ont besoin d'être davantage éclairés...
    Citation Envoyé par Pierre Fauconnier Voir le message
    Salut.

    Je suppose que tu travailles avec une version >= 2007. Dès lors, tu as intérêt à travailler avec des tables de données. Tu pourras ainsi créer une plage dynamique simplement en créant une plage nommée sur base de ton tableau. En utilisant cette technique, tu peux ajouter les données que tu veux, la liste est actualisée à l'initialisation du userform.

    Il suffira alors, à l'initialisation du userform, d'actualiser la rowsource du combobox, comme illustré dans le code ci-dessous. Lors du changement de sélection sur le combobox, il faut alors renvoyer la valeur de la colonne souhaitée du combobox.

    Nom : 2017-08-28_142833.png
Affichages : 6840
Taille : 40,8 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub cboFirstName_Change()
      With cboFirstName
        labLastName.Caption = .Column(1, .ListIndex)
      End With
    End Sub
     
    Private Sub UserForm_Initialize()
      cboFirstName.RowSource = "=plage"
    End Sub

    Cela étant, tu parles d'étiquettes (label) et Patrick illustre cela avec des zones de text (TextBox). A toi d'adapter mon code en fonction de ton besoin. Le principe est de déléguer au maximum le travail à Excel et de s'appuyer dessus pour du VBA. C'est pourquoi je préconise l'utilisation de la table de données liée à une plage dynamique. Cela réduit ton code au minimum vital et donc limite les risques d'erreurs.

    Remarque: Sur ma version 2016, si on ne redéfinis pas le rowsource lors de l'initialisation du userform, Excel plante... mais avec cette ligne de code en plus, ça fonctionne
    Re-bonjour Pierre

    Fait chaud aujourd'hui...

    J'ai essayé de faire comme tu m'as dit :
    - créé un tableau (TableauIntervenants)
    - nommé une plage (Plage) à l'intérieur du tableau sur deux colonnes Nom et Prénom
    - essayé de faire tourner ton code

    et rien ne se passe.

    Nom : Capture Userform.PNG
Affichages : 4396
Taille : 32,5 Ko

    Je n'ai sûrement pas tout capté ; pourrais-tu m'éclairer davantage voire m'aveugler cette fois-ci

    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
     
    Private Sub Liste_Intervenants_Change()
      With Liste_Intervenants
        Label_Nom_Intervenant.Caption = .Column(1, .ListIndex)
      End With
    End Sub
     
     
    Private Sub UserForm_Activate()
     
    'mon code initial
    'Dim Ligne As Integer: Ligne = 1
    'While (ThisWorkbook.Worksheets(3).Cells(Ligne, 1).Value <> "")
        'Liste_Intervenants.AddItem (ThisWorkbook.Worksheets(3).Cells(Ligne, 1).Value)
        'Ligne = Ligne + 1
    'Wend
     
    End Sub
    Private Sub UserForm_Initialize()
      Liste_Intervenants.RowSource = Plage
    End Sub

  15. #15
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut
    voila un exemple 2
    le tout dans un multipage

    autant pour moi
    modifie la ligne qui resemble a celle ci dans la fonction générale par celle ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    firstFREEligne = Cells(Rows.Count, 1).End(xlUp).Row + 1

  16. #16
    Membre à l'essai
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2017
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 58
    Points : 24
    Points
    24
    Par défaut merci à nouveau Patrick
    Je ne vais pas me coucher tôt ce soir...
    Je te fais un retour asap
    Eric

  17. #17
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    je n'ai pas detaillé mais:
    tu a donc 3 page dans le multipage + acceuil

    menu 1 afficher ou modifier
    dans celui la tu a ta combo
    1. tu choisi
    2. tu modifie
    3. tu valide


    menu 2 ajouter
    dans celui ci tu n'a pas la combo mais juste les 5 textbox
    1. remplir les textboxs
    2. clique sur ajouter


    menu 3 supprimer
    dans celui ci tu a juste une listbox et un bouton
    1. selectionne
    2. clique sur bouton supprimer



    a chaque fois quoi que tu facdce avec n'importe quel menu la combo et la listbox et le sheet se mettra a jour

    voila
    démo
    Nom : demo12.gif
Affichages : 4420
Taille : 419,2 Ko

  18. #18
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par 1357VBA Voir le message
    Re-bonjour Pierre

    Fait chaud aujourd'hui...

    J'ai essayé de faire comme tu m'as dit :
    - créé un tableau (TableauIntervenants)
    - nommé une plage (Plage) à l'intérieur du tableau sur deux colonnes Nom et Prénom
    - essayé de faire tourner ton code

    et rien ne se passe.[...]
    Soit tu suis mon exemple et mon code et je peux alors t'aider, soit tu suis celui de Patrick et c'est lui qui peut alors t'aider. Perso, je ne ferais pas du tout comme lui et je ne vais donc pas essayer de suivre sa "logique"... , ni d'intégrer mon code au sien

    Je ne saurais trop te mettre en garde par rapport à du "tout vba". Si tu n'utilises pas les tables de données comme je le propose, tu vas devoir "pondre" du code inutilement lourd.

    A toi de faire ton choix pour une technique...

    Déjà, comme je l'ai fait remarquer, il faudrait savoir si tu veux afficher les infos dans un label comme dans ma solution et ta demande initiale (non modifiable, donc) ou dans un textbox modifiable, et donc adapter ta demande en conséquence.

    Ce que te propose Patrick, c'est de faire de l'Access dans Excel. Excel n'est pas du tout prévu pour ce genre de traitement, et vouloir "reproduire" Access en Excel ne t'amènera que des déboires, les codes proposés étant bien trop légers pour pouvoir tenir la route. Les propositions ne correspondent pas à ta demande initiale, en ce qu'elles les dépassent de loin, ne testent pas la validité des saisies, ne gèrent pas les erreurs. Bref, ça tire encore dans tous les sens sans aucune réflexion sur la finalité de ta demande. Du grand n'importe quoi, donc.

    Après, c'est toi qui choisis, et donc, c'est toi qui, éventuellement en fonction de tes choix, pleureras... ou pas. bon courage pour la suite

  19. #19
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    le soucis c'est de bien démarrer avec le bon principe pour se simplifier la vie

    remplir la liste deroulante (combobox) intelligemment

    j'entend par la que
    soit on ajoute une colonne dans la combobox quitte a la cacher en lui mettant les numéros de ligne
    soit en mémorisant dans une variable ou meme dans le tag de la combobox[...]
    Hum... Dois-je rire ou pleurer?

  20. #20
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    re
    bonsoir ca tire dans rien du tout
    au cas ou je cite
    J'ai un Userform qui me sert à enregistrer des informations 'nom' 'prénom' 'fonction' et 'email' dans une feuille 'Intervenants'.
    Sur le même Userform j'ai ajouté une 'liste déroulante' qui me permet de sélectionner par le 'nom' dans la feuille 'Intervenants'.
    J'y ai placé également 4 étiquettes sensées renvoyer le nom sélectionné dans la première puis les valeurs contiguës dans les 3 autres...
    et je le re cite un peu plus bas dans le post
    C'est super élégant certes mais tu as défini une plage figée A1:G4
    Demain j'ajoute 7 intervenants et une semaine après j'en retire 3
    Je dois redéfinir ma plage à la mano ou bien existe-t-il un moyen de définir une plage "dynamique" ?

    c'est exactement ce mon userform fait et oui all VBA

    quand au éventuelles erreurs ne peuvent être produises que par la personne devant le clavier car en ce qui concerne ces données Excel ou même Acces n'a le pouvoir de deviner les intentions et tu peux faire ca dans n'importe quelle langage et même fonction Excel ca restera une inconnu que l'application Excel par définition ne pourra pas gérer

    il n'y a rien de plus simple qu'une combobox ou même une listbox contenant une colonne en plus dans la quelle se trouvent les index de lignes du sheets correspondant au même ligne dans la liste impossible de se tromper

    et surtout ,je voudrais bien voir ca dans un userform sans VBA

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/12/2016, 08h41
  2. Réponses: 5
    Dernier message: 04/06/2016, 21h38
  3. Réponses: 6
    Dernier message: 28/05/2014, 14h16
  4. [MySQL] Ajout d'options dans une liste déroulante à partir du résultat d'une requête
    Par minogttao dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 11/12/2006, 18h18
  5. [MySQL] Une liste déroulante affichant les données d'une requête SHOW par ordre alphabétique
    Par jack_1981 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 22/12/2005, 15h53

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