Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

alex5271

XLDnaute Nouveau
Bonjour à vous tous,

J'ai créer un programme avec feuilles de données et UserForm
Dans un tableau présent dans une feuille "Liste Prestataires" est présent 2 colonnes : A "Nom" et B "Prénom"
Dans mon UF est présent (entre autres...):
- 1 TextBoxRecherchePrestataire
- 2 CommandButtonTrier
-3 ListBox1

le TextBoxRecherchePrestataire sert à ajouter, supprimer, rechercher un prestataire dans ma feuille "Liste Prestataires"
le CommandButtonTrier sert à trier par ordre alphabétique les prestataires suivant leur nom cela fonctionne parfaitement dans la feuille "Liste Prestataires" MAIS ma ListBox1 n'affiche pas les modifications, il faut que j'enregistre et quitte le programme et ensuite le réouvrir pour que ma ListBox1 affiche correctement les données.

Est-ce qu'une âme charitable pourrait me donner la solution pour que cette ListBox1, après avoir cliquer sur CommandButtonTrier affiche les données trier comme la feuille de calcul "Liste Prestataires"?

Code du
Private Sub CommandButtonTrier_Click()

' ********* Tri par ordre alphabétique les prestatires********

Call reset_all_controls
Sheets("Liste Prestataires").Select
Range("A15").Select
ActiveWorkbook.Worksheets("Liste Prestataires").ListObjects("Tableau1").Sort. _
SortFields.Clear
ActiveWorkbook.Worksheets("Liste Prestataires").ListObjects("Tableau1").Sort. _
SortFields.Add2 Key:=Range("Tableau1[NOM]"), SortOn:=xlSortOnValues, Order _
:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Liste Prestataires").ListObjects("Tableau1"). _
Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Sheets("Salaires").Select
Range("A15").Select
ActiveWorkbook.Worksheets("Salaires").ListObjects("Tableau4").Sort. _
SortFields.Clear
ActiveWorkbook.Worksheets("Salaires").ListObjects("Tableau4").Sort. _
SortFields.Add2 Key:=Range("Tableau4[NOM]"), SortOn:=xlSortOnValues, Order _
:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Salaires").ListObjects("Tableau4"). _
Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

Je vous en souhaite bonne réception.

très cordialement
 

Pièces jointes

Bonjour
déjà il faudrait empêcher le bouton de trier si il n'y a rien dans la feuille prestataires
dans ta fonction extract_data_in_listbox aussi
car quand tu sélectionne dans ta listbox1 ça appelle cette fonction
et bien d'autre choses encore

au final quand on lit ta demande Mais!! que l'on regarde ton fichier
on sait plus trop ce que tu veux
 
Bonjour.
Il suffit d'ajouter cette instruction à la fin de votre Sub CommandButtonTrier_Click():
VB:
ListBox1.List = [Tableau1].Resize(, 2).Value
Mais à quoi sert cette ListBox ?
En utilisant des ComboBox au lieu de TextBox pour les Nom, Prénom et même Siret il me semble qu'elle serait inutile, surtout si vous utilisiez pour les gérer, mon objet ComboBoxLiées, que je me ferais un plaisir de vous installer si vous le souhaitez.
 
Re,
j'ai l'impression qu'il y a une quantité de code inutile..
exemple: quand tu cliques dans la listbox, tu filtres la feuille juste pour inscrire le nom sélectionné dans le textbox??
aucun intérêt
VB:
Function extract_data_in_listbox()
    Ind = Me.ListBox1.ListIndex 'index de la ligne selectionnée dans la listbox'
    Me.TextBoxRecherchePrestataire = Me.ListBox1.List(Ind, 0) 'on met le nom dans le textbox'

End Function
 
Re,
j'ai l'impression qu'il y a une quantité de code inutile..
exemple: quand tu cliques dans la listbox, tu filtres la feuille juste pour inscrire le nom sélectionné dans le textbox??
aucun intérêt
VB:
Function extract_data_in_listbox()
    Ind = Me.ListBox1.ListIndex 'index de la ligne selectionnée dans la listbox'
    Me.TextBoxRecherchePrestataire = Me.ListBox1.List(Ind, 0) 'on met le nom dans le textbox'

End Function

Bonjour vgendron,
Merci de l'intérêt que vous me portez
Ma listeBox sert à selectionner un prestataire pour afficher son n° siret que je peux copier par la suite vers des documents administratifs
Cordialement
 
Bonjour.
Il suffit d'ajouter cette instruction à la fin de votre Sub CommandButtonTrier_Click():
VB:
ListBox1.List = [Tableau1].Resize(, 2).Value
Mais à quoi sert cette ListBox ?
En utilisant des ComboBox au lieu de TextBox pour les Nom, Prénom et même Siret il me semble qu'elle serait inutile, surtout si vous utilisiez pour les gérer, mon objet ComboBoxLiées, que je me ferais un plaisir de vous installer si vous le souhaitez.
Bonjour Dranreb,
Merci de l'intérêt que vous me portez
Ma listeBox sert à selectionner un prestataire pour afficher son n° siret que je peux copier par la suite vers des documents administratifs
Cordialement
 
Pourquoi deux tableaux d'ailleurs ? Le numéro de Siret ne pourrait il pas être porté dans une colonne supplémentaire de l'autre tableau ?
Une ComboBox permet de sélectionner un élément de sa liste, mais aussi de saisir du nouveau …
 
Bonjour.
Il suffit d'ajouter cette instruction à la fin de votre Sub CommandButtonTrier_Click():
VB:
ListBox1.List = [Tableau1].Resize(, 2).Value
Mais à quoi sert cette ListBox ?
En utilisant des ComboBox au lieu de TextBox pour les Nom, Prénom et même Siret il me semble qu'elle serait inutile, surtout si vous utilisiez pour les gérer, mon objet ComboBoxLiées, que je me ferais un plaisir de vous installer si vous le souhaitez.
Merci Dranreb,
Cette instruction marche impécable
Mes respects
 
autre chose
d'une manière générale, tu n'exploites pas les Tables Structurées que tu as mises dans tes feuilles

exemple de simplification de code
sur la feuille "Salaires", tu renommes la table "tableau1" en "t_Salaire"

VB:
Function edit_from_form3() ' *********** Modifie les salaires et prélévements *****
    With Sheets("Salaires").ListObjects("t_Salaire")
        Set trouve = .ListColumns("Nom").Range.Find(Me.Tbx_Nom, lookat:=xlWhole)
        If trouve Is Nothing Then
            MsgBox Me.Tbx_Nom & "Not Found"
            Exit Function
        End If
        lig = trouve.Row - .Range.Row
        For i = 1 To 12 'pour chaque mois
            .DataBodyRange(lig, 2 * i + 1) = Me.Controls("Textbox" & i)
            .DataBodyRange(lig, 2 * i + 2) = Me.Controls("Textbox" & i + 12)
        Next i
    End With
End Function
 
Ci joint ton fichier "légèrement" modifié

1) Une seule feuille qui contient toutes les infos
2) les controls du USF ont été renommés tbx_Nom, tbx_Prénom, tbx_Siret
et pour les salaires: textbox 1 à12 et pour les prélèvements de 13 à 24

3) la table Structurée s'appelle "t_Salaire"
4) les différents codes modifiés pour utiliser cette table structurée (listobjects en vba)
 

Pièces jointes

autre chose
d'une manière générale, tu n'exploites pas les Tables Structurées que tu as mises dans tes feuilles

exemple de simplification de code
sur la feuille "Salaires", tu renommes la table "tableau1" en "t_Salaire"

VB:
Function edit_from_form3() ' *********** Modifie les salaires et prélévements *****
    With Sheets("Salaires").ListObjects("t_Salaire")
        Set trouve = .ListColumns("Nom").Range.Find(Me.Tbx_Nom, lookat:=xlWhole)
        If trouve Is Nothing Then
            MsgBox Me.Tbx_Nom & "Not Found"
            Exit Function
        End If
        lig = trouve.Row - .Range.Row
        For i = 1 To 12 'pour chaque mois
            .DataBodyRange(lig, 2 * i + 1) = Me.Controls("Textbox" & i)
            .DataBodyRange(lig, 2 * i + 2) = Me.Controls("Textbox" & i + 12)
        Next i
    End With
End Function
Merci Vgendron, j'en prend bien note et je me fais un devoir d'y apporter ces modifications
Cordialement
 
Ci joint ton fichier "légèrement" modifié

1) Une seule feuille qui contient toutes les infos
2) les controls du USF ont été renommés tbx_Nom, tbx_Prénom, tbx_Siret
et pour les salaires: textbox 1 à12 et pour les prélèvements de 13 à 24

3) la table Structurée s'appelle "t_Salaire"
4) les différents codes modifiés pour utiliser cette table structurée (listobjects en vba)
Comment vous remercier Vgendron?! c'est juste parfait merci beaucoup
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
17
Affichages
1 K
Réponses
4
Affichages
177
Réponses
6
Affichages
1 K
Réponses
11
Affichages
779
Réponses
1
Affichages
1 K
Retour