Userform - VBA

Résolu
Bonsoir,

Je cherche à renvoyer les valeurs de la feuille de calcul "Listing" en double cliquant sur le N° de licence dans l'Userform dans les champs respectifs.

A savoir que toutes les données seront saisies à partir de l'userform et par conséquent que l'on peut pas écrire directement dans la feuille de calcul qui sera protégée par un MDP.

Y a t-il une bonne ame pour m'écrire un bout de code SVP

Merci d'avance

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

2 réponses

  1. Bonjour Patrice,

    Quand je double click sur une cellule de la feuille de calcul « Lisitng » l’userform s’affiche (pas de problème).

    Normalement, si j’ai bien compris les tutos et forum, l’userform devrait s’afficher avec les valeurs des différentes colonnes de la feuille « Listing ». Ce qui ne fait pas. Pour ce faire :

    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°) 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


    Pour la validation je regarderai après car je dois rendre inactif certains boutons

    Peux tu me faire savoir ce qui ne colle pas
    1. Bonjour,

      En VBA, il faut absolument éviter d'utiliser .Select, ActiveCell, Selection, ...

      Au lieu de :
      Sheets("listing").Activate
      Range("A1").Select
      Selection.End(xlDown).Select
      Selection.Offset(1, 0).Select
      ActiveCell = cbxclub.Value
      ActiveCell.Offset(0, 2).Value = Txtlicence
      ActiveCell.Offset(0, 3).Value = TxtNom
      ActiveCell.Offset(0, 4).Value = Txtprenom
      ActiveCell.Offset(0, 5).Value = Txtdate
      ActiveCell.Offset(0, 6).Value = Txt_clt_Aller_Ufolep
      ActiveCell.Offset(0, 7).Value = Txt_clt_retour_Ufolep
      ActiveCell.Offset(0, 8).Value = Txt_clt_Aller_FFTT
      ActiveCell.Offset(0, 9).Value = Txt_clt_retour_FFTT
      ActiveCell.Offset(0, 10).Value = Txt_club_FFTT
      ActiveCell.Offset(0, 11).Value = cbxmute

      il faut écrire :
      With Sheets("listing").Range("A1").End(xlDown).Offset(1, 0)
          .Value = cbxclub.Value
          .Offset(0, 2).Value = Txtlicence.Value
          .Offset(0, 3).Value = TxtNom.Value
          .Offset(0, 4).Value = Txtprenom.Value
          .Offset(0, 5).Value = Txtdate.Value
          .Offset(0, 6).Value = Txt_clt_Aller_Ufolep.Value
          .Offset(0, 7).Value = Txt_clt_retour_Ufolep.Value
          .Offset(0, 8).Value = Txt_clt_Aller_FFTT.Value
          .Offset(0, 9).Value = Txt_clt_retour_FFTT.Value
          .Offset(0, 10).Value = Txt_club_FFTT.Value
          .Offset(0, 11).Value = cbxmute.Value
      End With


      Ici un excellent cours VBA gratuit :
      ftp://ftp-developpez.com/bidou/Cours/VBA/formationVBA.pdf