Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/11/2011, 17h14   #1
Invité de passage
 
Inscription : janvier 2009
Messages : 6
Détails du profil
Informations personnelles :
Âge : 49

Informations forums :
Inscription : janvier 2009
Messages : 6
Points : 0
Points : 0
Par défaut Effacer valeurs après validation dans formulaire

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 :
Code :
1
2
3
4
5
6
7
8
' 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

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
' 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 :

Code :
1
2
3
4
5
6
' 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 :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
' 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
JeanYvesGascon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2011, 18h05   #2
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Tu veux où trier?

Sinon, ton code serait comme ceci (j'ai pas encore inséré le tri)

Userform
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Private Sub UserForm_Initialize()
Dim LastLig As Long
 
With Worksheets("Transit_RdV_RIF")
    LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
With Me.LB_Nom_P
    .ColumnCount = 12                            '12 valeurs sont nécessaires
    .ColumnWidths = "100;100;100;0;0;0;0;0;0;0;0;0"    ' seules 3 dont visibles
    .ColumnHeads = True                          ' étiquettes des colonnes
    .RowSource = "Transit_RdV_RIF!A2:L" & LastLig    ' données sources
    .MultiSelect = fmMultiSelectSingle
End With
Me.Label_UserName = Environ("UserName")
Me.Label_Now = Format(Now, "DD/MM/YYYY HH:MM")
End Sub
 
 
Private Sub CommandButton_Click()
Dim LaLig As Long
Dim i As Byte
 
LaLig = Me.LB_Nom_P.ListIndex
If LaLig > -1 Then
    For i = 0 To 11
        ActiveCell.Offset(0, i) = Me.LB_Nom_P.List(LaLig, i)
    Next i
    ActiveCell.Offset(0, 12) = Me.Label_UserName
    ActiveCell.Offset(0, 13) = Me.Label_Now
 
    Worksheets("Transit_RdV_RIF").Rows(LaLig + 2).Delete
    Unload Me
Else
    MsgBox "Selectionnez d'abord un item de la listbox"
End If
End Sub
Feuille B
Code :
1
2
3
4
5
6
7
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 
If Target.Column = 7 Then
    Cancel = True
    F_RdV_1.Show
End If
End Sub
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h48.


 
 
 
 
Partenaires

Hébergement Web