Userform - VBA

Résolu
xavier62000 Messages postés 106 Date d'inscription   Statut Membre Dernière intervention   -  
xavier62000 Messages postés 106 Date d'inscription   Statut Membre Dernière intervention   -
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. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    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
    1
  2. xavier62000 Messages postés 106 Date d'inscription   Statut Membre Dernière intervention   3
     
    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
    0