Effacer valeurs après validation dans un formulaire
1 réponse
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()
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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()
' 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
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 :
310409e1-113c-4b4d-9470-91a6364de2b1@w3g2000vbw.googlegroups.com...
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()
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()