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 :

affichage d'une valeur à l'intersection ligne/collone définit par listbox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Par défaut affichage d'une valeur à l'intersection ligne/collone définit par listbox
    Bonjour,

    Dans un premier temps, j'ai creé un tableau comme ci-dessous:

    /////// Phase1 Phase2 Phase3 PhaseX
    Client1
    Client2
    Client3
    ClientX

    Ensuite, j'ai creer un Userform dans lequel j'ai trois listbox.

    La premiere (listbox1) correspond aux noms des clients, la seconde (listbox2) correspond aux noms des phases et la troisième (listbox3) correspond à des numéros de semaine.

    Ma question est la suivante: Comment faire pour que la valeur de la listbox3 s'affiche dans mon tableau à l'intersection de la colonne et de la ligne définit par les deux premiere listbox?

    /////// Phase1 Phase2 Phase3 PhaseX
    Client1
    Client2
    Client3 - S1 -
    ClientX

    Merci d'avance pour vos futur réponse

  2. #2
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Bjr, creunch et bienvenue sur ce forum
    ne sachant pas:
    -dans quelle feuille se trouve ton tableau, à quel ligne ni a quel colonne il commence,
    j'ai supposé qu'il se trouve dans la feuil1, que la colonne "client" correspond a la colonne A et que la ligne "phase" est la ligne 1.

    Tu peux utiliser l'événement keypress de ta listbox3 et mettre 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
    Private Sub ListBox3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Dim val1 As Range, val2 As Range
    Dim clientlign As Long, phasecolon As Long
     
    If KeyAscii = vbKeyReturn Then
     
      Set val1 = Sheets(1).Columns(1).Find(Me.ListBox1.Value)
        If Not val1 Is Nothing Then clientlign = val1.Row
     
      Set val2 = Sheets(1).Rows(1).Find(Me.ListBox2.Value)
        If Not val2 Is Nothing Then phasecolon = val2.Column
     
      Sheets(1).Cells(clientlign, phasecolon).Value = Me.ListBox3.Value
     
    End If
     
    End Sub
    Tu sélectionnes : ton client, puis ta phase, ton num de semaine et tu appuie sur "entrée" (Attention, il faut que la listbox3 est le focus)

    ou alors dans un bouton de commande :
    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
    Private Sub CommandButton1_Click()
    Dim val1 As Range, val2 As Range
    Dim clientlign As Long, phasecolon As Long
     
    'recherche du client dans colonne A
    Set val1 = Sheets(1).Columns(1).Find(Me.ListBox1.Value)
        'si client trouvé alors je met le num de ligne en variable
        If Not val1 Is Nothing Then clientlign = val1.Row
     
      'recherche de la phase dans la lign 1
      Set val2 = Sheets(1).Rows(1).Find(Me.ListBox2.Value)
        'Si phase trouvé alors je met le num de colonne en variable
        If Not val2 Is Nothing Then phasecolon = val2.Column
     
      Sheets(1).Cells(clientlign, phasecolon).Value = Me.ListBox3.Value
     
    End Sub
    Adapte le en fonction de tes besoins.

    @+

    ps: n'oublie pas de cliquer sue Résolu si tu as réglé ton problème.

  3. #3
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,
    Pour moi, le plus simple et le plus rapide serait d’alimenter tes lisbox en 2 colonnes (1 colonne pouvant être non visible):

    Textbox 1
    Col 1 nom client
    Col 2 N° de ligne correspondant

    Textbox 2
    Col 1 Nom Phase
    Col 2 N° col correspondant

    Du coup en prenant compte des 2 sélections, tu récupères directement les coordonnées de l’intersection voulue

    L’alimentation des 2 listbox ne prend pas plus de temps et tu évites tous les traitements secondaires parasites ensuite.

    cordialement,

    Didier

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Par défaut
    Merci à vous deux pour ces réponse elles m'ont été très utile. Je vais enfin pouvoir finaliser mon tableur.

    A plus sur le forum

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/03/2006, 09h44
  2. [MySQL] Affichage d'une valeur de la bdd dans un input
    Par leloup84 dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 23/02/2006, 12h28
  3. forcer l'affichage d'une valeur null
    Par sundjata dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 23/11/2005, 09h52
  4. [JDBC] Affichage d'une valeur de type CloB
    Par Jihed Amine Maaref dans le forum JDBC
    Réponses: 3
    Dernier message: 07/04/2005, 15h03
  5. Réponses: 13
    Dernier message: 24/02/2005, 16h45

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