Userform - VBA

Résolu/Fermé
xavier62000 Messages postés 65 Date d'inscription lundi 25 juin 2018 Statut Membre Dernière intervention 16 mars 2024 - 14 août 2018 à 23:31
xavier62000 Messages postés 65 Date d'inscription lundi 25 juin 2018 Statut Membre Dernière intervention 16 mars 2024 - 15 août 2018 à 14:31
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

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
Modifié le 15 août 2018 à 09:37
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
xavier62000 Messages postés 65 Date d'inscription lundi 25 juin 2018 Statut Membre Dernière intervention 16 mars 2024 2
15 août 2018 à 14:31
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