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 :

l’évènement Double clic sur une ListBox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    médecin du travail
    Inscrit en
    Octobre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : médecin du travail
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2014
    Messages : 11
    Par défaut l’évènement Double clic sur une ListBox
    Salut tout le monde,
    Je Vien pour vous afin de trouver une solution à mon problèmes,
    J’ai deux UserForm
    Un « UserForm_Modif » dépend de l’autre « Consultation ».
    Alors j’ai une base de donner des agents avec des matricules unique.
    Une fois lancer « UserForm Consultation » si en taper un matricule sur « TextBox_matricule » en peut afficher tous les consultation de cet agent sur la « ListBox_MedTrav ».
    Ma question si comment faire pour afficher une consultation donner à partir de la « ListBox_MedTrav » avec l’évènement Double clic « DblClick » sur le deuxieme UserForm « UserForm_Modif ».
    Voir le fichier joint.
    Merci à vous d’avance.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre très actif
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2014
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 393
    Par défaut
    Bonjour,

    Tu devrais commencer par lire ce sujet :
    http://www.developpez.net/forums/d84...s-discussions/

    Si tu veux insérer du code, utilise les balises adéquates : [CODE]

  3. #3
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 128
    Par défaut
    Bonjour,

    Et aussi faire un tour sur ce lien: [Acheter un Bescherelle]

    http://livre.fnac.com/a4244209/Colle...cais-pour-tous
    Parce que là, en lisant ton sujet, je me suis brûlé la rétine.

    Slooby

  4. #4
    Membre averti
    Homme Profil pro
    médecin du travail
    Inscrit en
    Octobre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : médecin du travail
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2014
    Messages : 11
    Par défaut
    Bonjour et désolé;
    j'ai une listbox "ListBox_MedTrav " des résultats de recherche que j'effectue sur mon premier UserForm intituler "Consultation", j'ai besoin d'effectuer de temps a autre des modification sur les résultats de la listBox et j'ai choisi de faire un double clic sur la ligne a modifier de la ListBox ou un deuxième UserForm intituler "UserForm_Modif " s'ouvre. jusque la çava.
    mon problème si que après l'ouverture du deuxième UserForm j'ai besoin que les TextBox prend les information de la ligne sélectionner au premier l'UserForm.
    Nom : 1.jpg
Affichages : 3866
Taille : 54,1 KoNom : 2.jpg
Affichages : 3380
Taille : 24,8 Ko

    merci

  5. #5
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,
    dans un module standard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Option Explicit
     
    Public TbListbox(), x As Integer
    dans l'évènement "DblClick" de l'usf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub ListBox_MedTrav_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    ReDim TbListbox(1 To ListBox_MedTrav.ColumnCount)
    For x = 1 To ListBox_MedTrav.ColumnCount
      TbListbox(x) = ListBox_MedTrav.Column(x - 1)
    Next x
    UserForm_Modif.Show
    End Sub
    et dans l'autre Usf (évènement Activate)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub UserForm_Activate()
    TextBox_Bilan_Sanguin = TbListbox(1)
    TextBox_Consultation = TbListbox(2)
    TextBox_CAT = TbListbox(3)
    TextBox_Radiologie = TbListbox(4)
     
    End Sub
    une remarque : apparemment, tu nutilises pas "Option Explicit", je te conseille fortement de l'utiliser

    Nom : explicit.JPG
Affichages : 3269
Taille : 40,3 Ko
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  6. #6
    Membre averti
    Homme Profil pro
    médecin du travail
    Inscrit en
    Octobre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : médecin du travail
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2014
    Messages : 11
    Par défaut
    merci casefayere sa fonctionne;
    j'ai une question:
    comment faire après pour extraire le numéro de la ligne a fin de faire une modification, comme tu a vous j'ai un Botton pour ça.

  7. #7
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    l'index de la listbox commence à 0, il faut le stocker dans une variable publique donc si tu veux modifier la cellule concernée de la feuille, il faut ajouter 2,
    exemple pour la variable que tu ajoutes au module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Option Explicit
     
    Public TbListbox(), x As Integer, Nligne As Long
    et ton code dans l'usf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub ListBox_MedTrav_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    ReDim TbListbox(1 To ListBox_MedTrav.ColumnCount)
    For x = 1 To ListBox_MedTrav.ColumnCount
      TbListbox(x) = ListBox_MedTrav.Column(x - 1)
    Next x
    Nligne = ListBox_MedTrav.ListIndex + 2
    UserForm_Modif.Show
    End Sub
    ensuite tu pourras modifier tes cellules, exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Range("A" & Nligne) = TextBox...
    ensuite tu rafraichis ta ListBox, je t'aiderai à la faire si tu ne comprends pas
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  8. #8
    Membre averti
    Homme Profil pro
    médecin du travail
    Inscrit en
    Octobre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : médecin du travail
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2014
    Messages : 11
    Par défaut
    salut casefayere;

    malheureusement ça marche pas bien puisque la ListIndex du ListBox prend la numerotation de la ListBox est non la Feuil "consultation".

    voila ce que j'ai ajouté:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub CommandButton_Modifier_Click()
     
    Sheets("consultation").Range("I" & Nligne) = TextBox_Bilan_Sanguin
    Sheets("consultation").Range("J" & Nligne) = TextBox_Consultation
    Sheets("consultation").Range("K" & Nligne) = TextBox_CAT
    Sheets("consultation").Range("H" & Nligne) = TextBox_Radiologie
     
    End Sub
    mais a l'exécution du code il modifie bien mais a la mauvaise ligne.

  9. #9
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    peux-tu essayer ce fichier
    Fichiers attachés Fichiers attachés
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  10. #10
    Membre averti
    Homme Profil pro
    médecin du travail
    Inscrit en
    Octobre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : médecin du travail
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2014
    Messages : 11
    Par défaut
    salut casefayere;

    heureusement ça marche très très bien, une dernier chose SVP pouvais vous m'aider a comprendre votre code avec des commentaire sur ce code.

    merci mille fois pour votre aide.

  11. #11
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    je veux bien si tu regardes bien mes citations au bas de mes messages (surtout le 3 éme) et agit en fonction

    je plaisante, je fais ça de suite, encore patience !!
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  12. #12
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    module
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    Option Explicit
    'mes variables "Public"
    Public TbListbox(), x As Integer, Nligne As Long, Liste(), Lt(), y As Integer
    Public matricule As String
    Sub ini_T()
    Dim Ctrl As Control 'pour boucler sur controles
    x = 0: y = 0
    For Each Ctrl In UserForm_Modif.Controls 'la boucle sur les contrôles
      'verifie s'il s'agit d'un textbox
      If TypeOf Ctrl Is MSForms.TextBox Then
          y = y + 1: ReDim Preserve Lt(1 To y): Lt(y) = Ctrl.Name 'j'alimente un nouveau tableau avec _
              le nom des textbox
          x = x + 1
        End If
    Next Ctrl
    End Sub
     
    Sub Change_consult()
    Dim entete
    entete = Array(9, 10, 11, 8) 'ce tableau reprend les numéros de colonne concernées par les textbox
    y = 3
    For x = 1 To UBound(Lt) 'je boucle sur ce tableau
      'ci-dessous Nligne est le numéro de ligne, entete(y) le numéro de colonne
      Sheets("consultation").Cells(Nligne, entete(y)) = UserForm_Modif.Controls(Lt(x)) 'Lt(x)représentant le contenu du textbox
      y = y - 1
    Next
    Consultation.ListBox_MedTrav.Clear 'je vide la listbox mais tu pourras modifier
    remplir 'je vais dans la procédure
    End Sub
     
    Sub remplir() 'la procédure qui remplit la listbox
    Dim Plage As Range, Cell As Range
    Dim Recherche As String, Adresse As String
    Dim Ligne As Integer, n As Integer
    Dim c As Range, j As Range
    Consultation.ListBox_MedTrav.Clear
    n = 0
    With Sheets("consultation")
      Recherche = Consultation.TextBox_matricule.Value
      Ligne = .Range("D" & .Rows.Count).End(xlUp).Row
      Set Plage = .Range("D1", "E" & Ligne)
    End With
    With Plage
      Set j = .Find(Recherche, , xlValues)
      'ci-dessous je te l'ai laissé
      If Not j Is Nothing Then
        Adresse = j.Address
          Do
          If UCase(Recherche) = UCase(Left(j, Len(Recherche))) Then
            With Consultation
              .ListBox_MedTrav.AddItem j.Offset(0, -1), n
              .ListBox_MedTrav.List(n, 1) = j.Offset(0, 5)
              .ListBox_MedTrav.List(n, 2) = j.Offset(0, 6)
              .ListBox_MedTrav.List(n, 3) = j.Offset(0, 7)
              .ListBox_MedTrav.List(n, 4) = j.Offset(0, 4)
              .ListBox_MedTrav.List(n, 5) = j.Offset(0, 4).Row
              n = n + 1
            End With
          End If
        Set j = .FindNext(j)
        Loop While Not j Is Nothing And j.Address <> Adresse
        End If
    End With
     
    End Sub
    1er Usf
    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
    30
    31
    32
    Private Sub ListBox_MedTrav_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    ReDim TbListbox(1 To ListBox_MedTrav.ColumnCount) 'je redimensionne le tableau en fonction _
          du nombre de colonnes de ta listbox
    For x = 1 To ListBox_MedTrav.ColumnCount 'je boucle sur les colonnes de la listbox
      TbListbox(x) = ListBox_MedTrav.Column(x) 'j'alimente le tableau avec les valeurs de la ligne sélectionnée
    Next x
    Nligne = ListBox_MedTrav.Column(5) 'j'ai ajouté une colonne qui reprend le numero de ligne sur la feuille
    UserForm_Modif.Show
    End Sub
     
    Private Sub UserForm_Initialize()
    ini_T 'je vais dans la procédure correspondante
    ListBox_MedTrav.ColumnCount = 6 'donc une colonne en plus
    ListBox_MedTrav.ColumnWidths = "60;100;100;219;100;5"
    TextBox_matricule.SetFocus
    End Sub
    Private Sub TextBox_matricule_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Dim Cel As Range
    If Me.TextBox_matricule.Text = "" Then Exit Sub
      Set Cel = BDD.Range("A:A").Find(Me.TextBox_matricule.Text, , xlValues, xlWhole)
    If Not Cel Is Nothing Then
      Me.TextBox_nom = Cel.Offset(, 1)
    Else
      MsgBox "Le matricule saisi est incorrect ou n'est pas présent !"
      Cancel = True '<-- oblige la saisie en empêchant la sortie du TextBox
    End If
     
    End Sub
    Private Sub TextBox_matricule_Change()
    matricule = Consultation.TextBox_matricule 'ça servira suivant tes besoins
    remplir 'je vais dans la procédure
    End Sub
    2ème Usf
    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
    Private Sub CommandButton_Modifier_Click()
    Consultation.TextBox_matricule = matricule ' ça servira au cas ou (mal placé pour l'instant)
    Change_consult 'je vais dans la procédure
    End Sub
     
    Private Sub CommandButton_Quitter_Click()
    Unload Me
    End Sub
    Private Sub UserForm_Activate()
    'je reprends les valeurs du tableau et les affectent aux textbox
    TextBox_Bilan_Sanguin = TbListbox(1)
    TextBox_Consultation = TbListbox(2)
    TextBox_CAT = TbListbox(3)
    TextBox_Radiologie = TbListbox(4)
     
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  13. #13
    Membre averti
    Homme Profil pro
    médecin du travail
    Inscrit en
    Octobre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : médecin du travail
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2014
    Messages : 11
    Par défaut
    merci a vous est a bientôt.

  14. #14
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    j'ai vu que tu es médecin, j'aurai une consultation gratuite ? je te préviens, je n'ai plus rien de fonctionnel

    allez à bientôt
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  15. #15
    Membre averti
    Homme Profil pro
    médecin du travail
    Inscrit en
    Octobre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : médecin du travail
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2014
    Messages : 11
    Par défaut
    bien sûr sans aucun problème

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

Discussions similaires

  1. [JTable] Repérer un double clic sur une ligne
    Par nolofinwe dans le forum Composants
    Réponses: 2
    Dernier message: 28/05/2008, 15h53
  2. Double clic sur une userform
    Par herji dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/10/2007, 19h22
  3. Réponses: 17
    Dernier message: 05/09/2007, 16h24
  4. double clic sur une grid
    Par gerard tarquin dans le forum wxPython
    Réponses: 2
    Dernier message: 26/05/2007, 13h27
  5. Double clic sur une feuille de données
    Par louroulou dans le forum Access
    Réponses: 7
    Dernier message: 14/06/2006, 11h33

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