Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Effacer valeurs après validation dans un formulaire

1 réponse
Avatar
JeanYvesGascon
Bonjour

Voil=E0 mon petit soucis :
Lors de la validation d'un formulaire, je renseigne les cellules de la
ligne (feuille B) depuis laquelle j'appelle le formulaire par un
double click.
Les sources de donn=E9es se situent dans une autre feuille (A).

Je souhaiterai qu'apr=E8s la validation, toute les valeurs s=E9lectionn=E9e=
s
via une listBox soient effac=E9es sur feuille A, soit la ligne enti=E8re,
et qu'ensuite cette feuille soit tri=E9e selon les valeurs dans la
premi=E8re colonne.
Voici comment les choses commencent :

' depuis la feuille "RIF", proc=E9dure d'appel du formulaire F_RIF_1
Private Sub Worksheet_BeforeDoubleClick (ByVal Target As Range, Cancel
As Boolean)

If Target.column =3D 7 then
F_RdV_1.Show
End if
Cancel =3D True
End Sub

Puis, le formulaire s'ouvre


' Initialisation du formulaire
Private Sub UserForm_Initialize()

' Alimenter la ListBox (LB_Nom_P)
With LB_Nom_P
.ColumnCount =3D 10 'dix valeurs sont n=E9cessaires
.ColumnWidths =3D "100;100;100" ' seules 3 dont visibles
.ColumnHeads =3D True ' =E9tiquettes des colonnes
.RowSource =3D "Transit_RdV_RIF!A2:L1OO" ' donn=E9es sources
.MultiSelect =3D fmMultiSelectSingle
End With

Me.Label_UserName =3D Environ("UserName")
Me.Label_Now =3D Format (Now, "DD/MM/YYYY HH:MM")
End Sud


Je choisis une ligne :

' La selection renseigne trois TextBox
Private Sub LB_Click()

TB_Nom_RIF.Value =3D LB_Nom_P.Value
TB_Prenom_RIF =3D LB_Nom_P.List (,1)
TB_Tel_RIF =3D TB_Nom_P.List (,2)

End Sub

Enfin je valide :

' Les dix valeurs selectionn=E9es alimentent la Feuil "RIF!" depuis la
cellule.Offset (colonne 7)
Private Sub CommandButton_Click ()
ActiveCell =3D TB_Nom_RIF.Value
ActiveCell.Offset(,1) =3D TB_Prenom_RIF.Value
ActiveCell.Offset(,2) =3D TB_Tel_RIF.Value
ActiveCell.Offset(,4) =3D LB_Nom_p.List (,3)
ActiveCell.Offset(,5) =3D LB_Nom_p.List (,4)
ActiveCell.Offset(,6) =3D LB_Nom_p.List (,5)
ActiveCell.Offset(,7) =3D LB_Nom_p.List (,6)
ActiveCell.Offset(,8) =3D LB_Nom_p.List (,7)
ActiveCell.Offset(,9) =3D LB_Nom_p.List (,8)
ActiveCell.Offset(,10) =3D LB_Nom_p.List (,9)
ActiveCell.Offset(,11) =3D LB_Nom_p.List (,10)
ActiveCell.Offset(,12) =3D LB_Nom_p.List (,11)
ActiveCell.Offset(,13) =3D Me.Label_UserName
ActiveCell.Offset(,14) =3D Me.Label_Now

' lignes de code qui devront effacer les donn=E9es s=E9lectionn=E9es
' sur la ligne de la RowSource dans la Feuille "Transit_RdV_RIF!"


' lignes de codes pour trier la Feuille "Transit_RdV_RIF!"
' A2: O100

UnLoad F_RIF_1

End Sub


Voil=E0 tout est dit

Merci de vos =E9clairages et vos commentaires

Bon week-end =E0 toutes et tous

JeanYves

1 réponse

Avatar
MichD
Bonjour,

Un exemple adapte le nom du listbox et le bouton de commande
qui lance la procédure.

Le code suivant demande que le contenu de la listbox soit renseigné
en utilisant la propriété RowSource du contrôle.


'-----------------------------------------
Private Sub CommandButton1_Click()
Dim Nb As Integer, A As Integer
Dim Ligne As String, T As Variant

With Me.ListBox1
'Nombre d'éléments dans le listbox
Nb = .ListCount - 1
'On boucle sur chacun des éléments et on met
'les éléments sélectionnées dans une variable
'On inverse l'ordre pour faciliter la suppression
'des lignes un peu plus loin
For A = Nb To 0 Step -1
If .Selected(A) = True Then
Ligne = Ligne & A + 1 & ","
End If
Next
'Si la ligne n'est pas vide, c'est qu'il y des
'lignes à suppprimer
If Ligne <> "" Then
'on enlève la dernière virgule de la chaîne de caractères
Ligne = Left(Ligne, Len(Ligne) - 1)
'Split requiert Excel 2000 ou ultérieur
'T est un array (tableau) de toutes les lignes à supprimer
T = Split(Ligne, ",")
'Une boucle sur chaque élément du tableau (array)
For A = 0 To UBound(T)
'Supprime la ligne entière dans la plage source
Range(.RowSource).Item(T(A), 1).EntireRow.Delete
Next
End If
End With
End Sub
'-----------------------------------------



MichD
------------------------------------------
"JeanYvesGascon" a écrit dans le message de groupe de discussion :


Bonjour

Voilà mon petit soucis :
Lors de la validation d'un formulaire, je renseigne les cellules de la
ligne (feuille B) depuis laquelle j'appelle le formulaire par un
double click.
Les sources de données se situent dans une autre feuille (A).

Je souhaiterai qu'après la validation, toute les valeurs sélectionnées
via une listBox soient effacées sur feuille A, soit la ligne entière,
et qu'ensuite cette feuille soit triée selon les valeurs dans la
première colonne.
Voici comment les choses commencent :

' depuis la feuille "RIF", procédure d'appel du formulaire F_RIF_1
Private Sub Worksheet_BeforeDoubleClick (ByVal Target As Range, Cancel
As Boolean)

If Target.column = 7 then
F_RdV_1.Show
End if
Cancel = True
End Sub

Puis, le formulaire s'ouvre


' Initialisation du formulaire
Private Sub UserForm_Initialize()

' Alimenter la ListBox (LB_Nom_P)
With LB_Nom_P
.ColumnCount = 10 'dix valeurs sont nécessaires
.ColumnWidths = "100;100;100" ' seules 3 dont visibles
.ColumnHeads = True ' étiquettes des colonnes
.RowSource = "Transit_RdV_RIF!A2:L1OO" ' données sources
.MultiSelect = fmMultiSelectSingle
End With

Me.Label_UserName = Environ("UserName")
Me.Label_Now = Format (Now, "DD/MM/YYYY HH:MM")
End Sud


Je choisis une ligne :

' La selection renseigne trois TextBox
Private Sub LB_Click()

TB_Nom_RIF.Value = LB_Nom_P.Value
TB_Prenom_RIF = LB_Nom_P.List (,1)
TB_Tel_RIF = TB_Nom_P.List (,2)

End Sub

Enfin je valide :

' Les dix valeurs selectionnées alimentent la Feuil "RIF!" depuis la
cellule.Offset (colonne 7)
Private Sub CommandButton_Click ()
ActiveCell = TB_Nom_RIF.Value
ActiveCell.Offset(,1) = TB_Prenom_RIF.Value
ActiveCell.Offset(,2) = TB_Tel_RIF.Value
ActiveCell.Offset(,4) = LB_Nom_p.List (,3)
ActiveCell.Offset(,5) = LB_Nom_p.List (,4)
ActiveCell.Offset(,6) = LB_Nom_p.List (,5)
ActiveCell.Offset(,7) = LB_Nom_p.List (,6)
ActiveCell.Offset(,8) = LB_Nom_p.List (,7)
ActiveCell.Offset(,9) = LB_Nom_p.List (,8)
ActiveCell.Offset(,10) = LB_Nom_p.List (,9)
ActiveCell.Offset(,11) = LB_Nom_p.List (,10)
ActiveCell.Offset(,12) = LB_Nom_p.List (,11)
ActiveCell.Offset(,13) = Me.Label_UserName
ActiveCell.Offset(,14) = Me.Label_Now

' lignes de code qui devront effacer les données sélectionnées
' sur la ligne de la RowSource dans la Feuille "Transit_RdV_RIF!"


' lignes de codes pour trier la Feuille "Transit_RdV_RIF!"
' A2: O100

UnLoad F_RIF_1

End Sub


Voilà tout est dit

Merci de vos éclairages et vos commentaires

Bon week-end à toutes et tous

JeanYves