Double click - Userform

Résolu
Bonsoir,

Je cherche à double clicker sur une feuille de calcul "Listing" pour ouvrir un userform et d’y renvoyer les valeurs dans les Txt_box et les cb_box respectives pour modifier les données.

Donc quand je double click sur la feuille de calcul « Listing » l’userform s’affiche (pas de problème sur ce point)

Normalement, si j’ai bien compris les tutos et forums, l’userform devrait s’afficher avec les valeurs des différentes colonnes de la feuille « Listing ». Ce qui ne fait pas avec le code ci-dessous .

1°) J’ai déclaré une variable public Lalig qui devrait contenir la ligne du double click qui est celle à modifier


Public Lalig As Long


2°) Dans le module de la feuille « Listing »


Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Cancel = True
Lalig = Target.Row
frm_saisie.Show
End Sub


3°) 3°) Dans le module de l’userform

3°) Dans le module de l’userform
Private Sub userform_initialise()
If Lalig > 0 Then
With Worksheets("Listing")
Me.cbxclub.Value.Range ("A" & Lalig)
Me.Txtlicence.Value.Range ("C" & Lalig)
Me.TxtNom.Value.Range ("D" & Lalig)
Me.Txtprenom.Value.Range ("E" & Lalig)
Me.Txtdate.Value.Range ("F" & Lalig)
Me.Txt_clt_Aller_Ufolep.Value.Range ("G" & Lalig)
Me.Txt_clt_retour_Ufolep.Value.Range ("H" & Lalig)
Me.Txt_clt_Aller_FFTT.Value.Range ("I" & Lalig)
Me.Txt_clt_retour_FFTT.Value.Range ("J" & Lalig)
Me.Txt_club_FFTT.Value.Range ("K" & Lalig)
Me.cbxmute.Value.Range ("L" & Lalig)
End With
End Sub


Merci de votre aide

lien de partage : https://mon-partage.fr/f/gSmSx58c/

8 réponses

  1. Contributeur
    Bonjour,

    Voici le classeur modifié:

    https://www.cjoint.com/c/HHsiKicX4yQ

    voir si cela convient?

    1
    1. Bonjour,

      Il n'y a pas de macro "Private Sub userform_initialise()". Quant à celle que tu publies, il manque les signes "=".

      Cordialement.

      Daniel
      0
      1. Bonsoir Daniel,

        Je ne comprends pas.

        A l'ai du fichier de partage, peux tu m'en dire plus car je nage complètement

        Cordialement

        xavier
        0
        1. Exactement, ta macro s'appelle "Private Sub userform_initialise()
          " au lieu de "Private Sub UserForm_Initialize()"
          0
        2. ca ne change rien, cela ne fonctionne pas.

          Peux tu regarder dans le fichier partager STP, j'y comprends plus rien.
          Quitte à faire revenir un seul enregistrement, pour que j'arrive à comprendre quelque chose
          0
        3. J'ai apporté les modifications suivantes :
          La ligne "Public Lalig As Long
          " doit être dans un module standard (Module_saisie :

          ' Afficher le formulaire à partir d'une feuille excel
          Public Lalig As Long
          
          
          Sub ouvreformulaire()
          
          frm_saisie.Show
          
          End Sub
          


          La macro d'initialisation est la suuivante :

          Private Sub userform_initialize()
          
          Me.Cbt_Valider.Enabled = False
          
          If Lalig > 0 Then
          
          With Worksheets("Listing")
          
          Me.cbxclub.Value = .Range("A" & Lalig)
          Me.Txtlicence.Value = .Range("C" & Lalig)
          Me.TxtNom.Value = .Range("D" & Lalig)
          Me.Txtprenom.Value = .Range("E" & Lalig)
          Me.Txtdate.Value = .Range("F" & Lalig)
          Me.Txt_clt_Aller_Ufolep.Value = .Range("G" & Lalig)
          Me.Txt_clt_retour_Ufolep.Value = .Range("H" & Lalig)
          Me.Txt_clt_Aller_FFTT.Value = .Range("I" & Lalig)
          Me.Txt_clt_retour_FFTT.Value = .Range("J" & Lalig)
          Me.Txt_club_FFTT.Value = .Range("K" & Lalig)
          Me.cbxmute.Value = .Range("L" & Lalig)
          
          End With
          End If
          End Sub
          


          Ca fonctionne comme ça.

          Daniel
          0
      2. Bonsoir Daniel,

        Désolé, mais cela ne fonctionne toujours pas ci-dessous le lien de partage si tu veux bien regarder ??

        https://mon-partage.fr/f/EQOxtKlB/

        Merci d'avance

        Cordialement
        0
        1. https://mon-partage.fr/f/bwyNZ2w4/

          Daniel
          0
        2. Merci daniel.

          Je cherche quand même à quel endroit ou j'ai péché pour pas dire autre chose !!
          0
      3. Contributeur
        Bonjour,

        si tu as double-cliqué dessus la cellule est obligatoirement active.
        Pas besoin de transmettre une variable, sert-toi directement de ActiveCell dans l'UF.
        eric
        0
        1. Bonsoir Daniel,

          Avec toute ma meilleure volonté, je suis dans l’impasse et je préfère m’adresser aux personnes compétentes car je commence vraiment à désespérer. Sur 2 problèmes que je n’arrive pas à trouver.

          1°) Modifications

          Donc si je double click sur la feuille de calcul « Listing » les données à modifier apparaissent avec le formulaire (merci daniel)

          En revanche, si je modifie les données et malgré ce que j’ai mis sous le bouton « Modifier » je reste dans les choux.


          Private Sub Cbt_modifier_Click()
          If Lalig > 0 Then
          With Worksheets("listing")
          .Range("A" & Lalig) = Me.cbxclub.Value
          .Range("C" & Lalig) = Me.Textlicence.Value
          .Range("D" & Lalig) = Me.TxtNom.Value
          .Range("E" & Lalig) = Me.Txtprenom.Value
          .Range("F" & Lalig) = Me.Txtdate.Value
          .Range("G" & Lalig) = Me.Txt_clt_Aller_Ufolep.Value
          .Range("H" & Lalig) = Me.Txt_clt_retour_Ufolep.Value
          .Range("I" & Lalig) = Me.Txt_clt_Aller_FFTT.Value
          .Range("J" & Lalig) = Me.Txt_clt_retour_FFTT.Value
          .Range("K" & Lalig) = Me.Txt_club_FFTT.Value
          .Range("L" & Lalig) = Me.cbxmute.Value
          End With
          End If
          Unload Me
          End Sub


          En outre et pour ne pas porter à confusion, je souhaiterai que le bouton « valider » soit inactif quand le formulaire s’ouvre quand j’ai double cliqué sur la feuille de calcul soit ;


          Me.Cbt_Valider.Enabled = False


          Mais je ne vois pas à quelle endroit il faut l'indiquer.
          Est-il possible quand on modifie un enregistrement, que celui_ci comporte une couleur distinctive pour repérer les modifications effectuées ?

          2°) Concernant l’ajout des données

          A l’ouverture de mon userform, je renseigne les champs respectifs et quand j’appuie sur le bouton "Valider" , les données remplacent la dernière ligne.

          En outre et pour ne pas porter à confusion, je souhaiterai que le bouton « modifier » soit inactif quand le formulaire s’ouvre soit ;


          Me.Cbt_Modifier.Enabled = False


          Lien de partage : https://mon-partage.fr/f/ZAfdMJhL/

          Comme franchement, je ne touche pas une bille en VBA, vous est il possible de modifier mon petit truc en lien de partage cela vraiment sympa;

          Cordialement

          xavier
          0
          1. Contributeur
            Bonjour,

            si tu testais ma proposition ?

            Accessoirement "je reste dans les choux" ne veux rien dire du tout. Explique...
            eric
            0
          2. Bonjour Eric,

            Pour tester ta proposition, Il faudrait d'abord que j'arrive à comprendre le langage. Comme dit plus haut, je ne touche pas une bille. Je scrute les forums, tuto, video, pour avoir un espoir de trouver quelques choses qui peut se rapprocher de ce que j'aimerai voir fonctionner dans mon petit truc et au mieux le recopier (quelques fois ça fonctionne, mais pour ce cas ??).

            Maintenant, si peux me satisfaire sur ma demande j'en serai heureux et enfin terminer mon projet.

            Dans ma région, "Rester dans les choux" c'est être dans une mauvaise situation ou être dans l'embarras voir un Echec. Donc pour ce qui me concerne c'et plutôt un échec si personne ne peut m'aider.

            Cordialement
            0
        2. Bonjour,

          Ben il ne se passe rien de plus, quand je click sur ouvrir un formulaire, il y a dejà un enregistrement dans les champs.

          Et quand je double click sur la feuille de calcul, le formulaire ne s'ouvre plus !!

          Il doit y avoir un couac quelques part. Mais de toute façon, je ne ferai pas mieux

          Merci quand même
          0
          1. Contributeur
            Ben il ne se passe rien de plus, quand je click sur ouvrir un formulaire, il y a dejà un enregistrement dans les champs.

            C'est normal c'est le 1er de la liste, il suffit de faire défiler avec la comboBox pour sélectionner celui que l'on désire modifier ou ajouter

            Et quand je double click sur la feuille de calcul, le formulaire ne s'ouvre plus !!

            Il faut lire le code dans le module de la feuille listing !

            Il est écrit que lors d'un double clic dans la colonne A il y a ouverture du formulaire

            l doit y avoir un couac quelques part. Mais de toute façon, je ne ferai pas mieux

            Il faut être un peu persévérant et chercher à comprendre!!!!!!!

            Il faudrait quand même connaitre les fondamentaux avant de se lancer dans une telle entreprise

            Bon courage

            @+ Le Pivert
            0
        3. Bonsoir,

          Merci de votre aide. C'est pas tout à fait ce que j'attendais, mais avec votre aide j'y suis arrivé; Enfin presque !!
          0
          1. Contributeur
            Ce n'était pas bien compliqué ce que je te proposais...
            Dans ton formulaire tu as juste à mettre
            Lalig = Activecell.Row

            pour récupérer la ligne. C'est obligatoirement la cellule active puisque tu as double-cliqué dessus.
            eric
            0