XL 2016 Affichage TextBox

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 !

KRUG WOO

XLDnaute Junior
Bonjour les amis,
j'ai un petit problème sur mon userform, les informations dans les TextBox ne s'affichent pas, peut être que j'ai oublié quelque chose. Dans tous mes sheets, j'ai mis des noms, utilisés comme code pour lié tous les sheets. Dans mon userform, j'utilise donc le nom comme "FiltrerDonnees". Quand je saisie un nom (textbox = textNom) dans mon userform, textbox affiche ce que je cherche: les infos dans sheest("Depense N"). Le Problème, quand je saisie un nom dans mon userform, mais cet fois ci, les infos sont dans sheets("CA N"), textbox n'affiche rien, Alors que j'ai bien défini les codes : Set ws = ThisWorkbook.Sheets("Depense N") et Set ws1 =ThisWorkbook.Sheets("CA N"). Les informations que je cherche se trouvent dans sheets("CA N") à partir de la ligne 8, colonne 15, 17 et 19. J'aimerai les mettre dans textbox : TextRecouvre, TextFees et TextNet. Pour mon code VBA complet, le voici:

Private Sub FiltrerDonnees()
Dim ws As Worksheet
Dim ws1 As Worksheet
Dim lastRow As Long
Dim lastRow1 As Long
Dim nomRecherche As String
Dim nomCellule As String
Dim recouvre As Double
Dim comission As Double
Dim netrecouvre As Double


Dim transport As Double, debours As Double, deboursreel As Double, deboursdiff As Double, hotels As Double
Dim madateP As Variant, madateH As Variant
Dim totalTransport As Double, totalDebours As Double, totalDeboursreel As Double, totaldDeboursdiff As Double, totalHotels As Double, totalDepense As Double

' Référence à la feuille Depense N
Set ws = ThisWorkbook.Sheets("Depense N")
Set ws1 = ThisWorkbook.Sheets("CA N")
' Vider la ListBox avant chaque nouvelle recherche
ListTransport.Clear
ListHotel.Clear

' Initialiser les totaux
totalTransport = 0
totalDebours = 0
totalDeboursreel = 0
totaldeboursdiff = 0
totalHotels = 0
totalDepense = 0

'RECHERCHE ET FILTRAGE SELON LES CRITERES
' Récupérer les valeurs des TextBox en minuscule pour une comparaison insensible à la casse
nomRecherche = LCase(Trim(TextNom.Text))

' Si le premier champs NOM est vide, on n'affiche rien
If nomRecherche = "" Then Exit Sub

' Trouver la dernière ligne avec des données dans la colonne B (Nom)
lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
lastRow1 = ws1.Cells(ws1.Rows.Count, "B").End(xlUp).Row

'EN TETES DE LA LISTBOX
' Ajouter les EN TETES à la ListBox
With ListTransport
.ColumnCount = 8
.ColumnWidths = "90;90;50;50;70;50;50;50"
.AddItem "Designation"
.List(.ListCount - 1, 1) = "P"
.List(.ListCount - 1, 2) = "F.Pr"
.List(.ListCount - 1, 3) = "F.D"
.List(.ListCount - 1, 4) = "Mtt"
.List(.ListCount - 1, 5) = "Réf "
.List(.ListCount - 1, 6) = "Ac"
.List(.ListCount - 1, 7) = "Date"
End With

With ListHotel
.ColumnCount = 8
.ColumnWidths = "90;50;50;80;60;60;60;95"
.AddItem "Hotel"

.List(.ListCount - 1, 1) = "P"
.List(.ListCount - 1, 2) = "F.Pr"
.List(.ListCount - 1, 3) = "F.D"
.List(.ListCount - 1, 4) = "Mtt"
.List(.ListCount - 1, 5) = "Réf "
.List(.ListCount - 1, 6) = "Ac"
.List(.ListCount - 1, 7) = "Date"
End With
'BOUCLE POUR LE FILTRAGE
' Boucle pour parcourir les lignes et FILTRER selon les critères
For i = 2 To lastRow 'Commence à 2 pour ignorer la ligne des titres

nomCellule = LCase(ws.Cells(i, 2).Value) ' Colonne B : Nom

If nomRecherche = "" Or nomCellule Like "*" & nomRecherche & "*" Then


'FORMAT DATE ET CHIFFRE DANS LE LISTBOX
' Vérifier si la cellule contient un nombre, sinon mettre 0
If IsNumeric(ws.Cells(i, 10).Value) Then
transport = ws.Cells(i, 10).Value
Else
transport = 0
End If

If IsNumeric(ws.Cells(i, 16).Value) Then
debours = ws.Cells(i, 16).Value
Else
debours = 0
End If

If IsNumeric(ws.Cells(i, 17).Value) Then
deboursreel = ws.Cells(i, 17).Value
Else
deboursreel = 0
End If
If IsNumeric(ws.Cells(i, 18).Value) Then
deboursdiff = ws.Cells(i, 18).Value
Else
deboursdiff = 0
End If

If IsNumeric(ws.Cells(i, 24).Value) Then
hotels = ws.Cells(i, 24).Value
Else
hotels = 0
End If

If IsDate(ws.Cells(i, 13).Value) Then
madateP = ws.Cells(i, 13).Value ' Stocker la date si valide
Else
madateP = "" ' Laisser vide si ce n'est pas une date valide
End If

If IsDate(ws.Cells(i, 27).Value) Then
madateH = ws.Cells(i, 27).Value ' Stocker la date si valide
Else
madateH = "" ' Laisser vide si ce n'est pas une date valide
End If

' Ajouter aux totaux
totalTransport = totalTransport + transport
totalDebours = totalDebours + debours
totalDeboursreel = totalDeboursreel + deboursreel
totaldeboursdiff = totaldeboursdiff + deboursdiff
totalHotels = totalHotels + hotels
totalDepense = totalTransport + totalDeboursreel + totalHotels


'AJOUT DES DONNES DANS LISTBOX
' Ajouter les données filtrées à la ListBox
With ListTransport

.AddItem ws.Cells(i, 6).Value ' Nom (colonne B)
.List(.ListCount - 1, 1) = ws.Cells(i, 7).Value
.List(.ListCount - 1, 2) = ws.Cells(i, 8).Value
.List(.ListCount - 1, 3) = ws.Cells(i, 9).Value
.List(.ListCount - 1, 4) = Format(transport, "#,##0.00") ' Montant P
.List(.ListCount - 1, 5) = ws.Cells(i, 11).Value ' Ref Paiem P
.List(.ListCount - 1, 6) = ws.Cells(i, 12).Value ' Acompte P
.List(.ListCount - 1, 7) = ws.Cells(i, 13).Value ' Date Paiem P

End With

With ListHotel

.AddItem ws.Cells(i, 21).Value
.List(.ListCount - 1, 1) = ws.Cells(i, 22).Value
.List(.ListCount - 1, 2) = ws.Cells(i, 23).Value
.List(.ListCount - 1, 3) = Format(hotels, "#,##0.00") ' Montant P
.List(.ListCount - 1, 4) = ws.Cells(i, 25).Value ' Ref Paiem P
.List(.ListCount - 1, 5) = ws.Cells(i, 26).Value ' Acompte P
.List(.ListCount - 1, 6) = ws.Cells(i, 27).Value ' Date Paiem P
.List(.ListCount - 1, 7) = ws.Cells(i, 28).Value ' Observation

End With


' Récupérer le montant de la colonne 15, 17 et 18 (pour le TextBox TextRecouvre)

' Récupérer les données de la feuille "CA N" (ws1)
If i >= 8 Then ' Assurez-vous que la ligne est >= 8 pour "CA N"
If IsNumeric(ws1.Cells(i, 15).Value) Then
recouvre = ws1.Cells(i, 15).Value
Else
recouvre = 0
End If

If IsNumeric(ws1.Cells(i, 17).Value) Then
comission = ws1.Cells(i, 17).Value
Else
comission = 0
End If

If IsNumeric(ws1.Cells(i, 19).Value) Then
netrecouvre = ws1.Cells(i, 19).Value
Else
netrecouvre = 0
End If

' Afficher dans les TextBox
TextRecouvre.Text = Format(recouvre, "#,##0.00")
TextFees.Text = Format(comission, "#,##0.00")
TextNet.Text = Format(netrecouvre, "#,##0.00")
End If
End If
Next i
'FORMAT TOTAUX DANS TEXTBOX (et non LISTBOX)
' Mise à jour des TextBox avec les totaux calculés
TextTRANSP.Text = Format(totalTransport, "#,##0.00")
TextDeb.Text = Format(totalDebours, "#,##0.00")
TexDebreel.Text = Format(totalDeboursreel, "#,##0.00")
TextDiff.Text = Format(totaldeboursdiff, "#,##0.00")
TextHot.Text = Format(totalHotels, "#,##0.00")
TextDepense.Text = Format(totalDepense, "#,##0.00")

Cleanup:
Application.EnableEvents = True ' Réactiver les événements

End Sub

Merci les amis 😀
 
Solution
Bonjour KRUG WOO, Oneida,
Un essai en PJ, un peu à l'arrache sans chercher à optimiser.
1- Vous ne pouvez pas utiliser le même index "i" pour les lignes en même temps sur les deux feuilles car évidemment les noms ne se situent pas au même endroits.
2- Il y avait des erreurs sur les N° de colonnes car pour CA N il y a des colonnes vides ( O,Q,S )
3- J'ai rajouté Période, PV, Recouvré, Fees et Net.
Bonjour KRUG WOO, Oneida,
Un essai en PJ, un peu à l'arrache sans chercher à optimiser.
1- Vous ne pouvez pas utiliser le même index "i" pour les lignes en même temps sur les deux feuilles car évidemment les noms ne se situent pas au même endroits.
2- Il y avait des erreurs sur les N° de colonnes car pour CA N il y a des colonnes vides ( O,Q,S )
3- J'ai rajouté Période, PV, Recouvré, Fees et Net.
 

Pièces jointes

B
Bonjour KRUG WOO, Oneida,
Un essai en PJ, un peu à l'arrache sans chercher à optimiser.
1- Vous ne pouvez pas utiliser le même index "i" pour les lignes en même temps sur les deux feuilles car évidemment les noms ne se situent pas au même endroits.
2- Il y avait des erreurs sur les N° de colonnes car pour CA N il y a des colonnes vides ( O,Q,S )
3- J'ai rajouté Période, PV, Recouvré, Fees et Net.
Bonsoir Sylvanu,
Merci beaucoup pour les corrections, j'ai mis du temps à chercher, à me casser la tête, mais rien ne marche. Et toi, tu as trouvé la réponse avec une note de 10/10. Je te remercie. 👊
 
- 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
0
Affichages
384
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
267
Réponses
1
Affichages
472
Réponses
3
Affichages
604
Retour