VBA - Données dans TextBox si condition Ok puis Suivant si

Jess5913

XLDnaute Nouveau
Bonjour tous le monde :)

J'ai un suivi financier pour lequel j'ai créé un Userform. Dans ce Userform, j'aimerai qu'apparaisse chaque bon de commande passé à un sous-traitant. Les lignes de bon de commande de ce sous-traitant ne se suivent pas car un sous-traitant peut avoir un bon de commande pour différent poste.

Voici comment se présente mon tableau Excel :
Colonne A : N° de Poste
Colonne B : Nom du sous-traitant
Colonne C : Montant du bon de commande

Je n'arrive pas à trouver le code permettant de faire apparaitre avec l'aide d'une boucle, l'ensemble des bons de commande d'un seul sous-traitant.

Est-ce que quelqu'un aurai une idée ? Je vous joins un exemple avec fichier Excel.

Voici le bout de code que j'ai commençait à faire mais cela ne fonctionne pas du tout, car ça n'affiche que la dernière ligne correspondant à l'entreprise sur laquelle je suis et la répète en boucle :
Private Sub UserForm_Initialize()


Curseur = ActiveCell.Row 'indique le numéro de la ligne où le curseur se situe

TextBoxNom.Value = Range("B" & Curseur)

tablo = Range("A3:C18")

For n = LBound(tablo, 1) To UBound(tablo, 1)

If tablo(n, 2) = TextBoxNom.Value Then

For i = 1 To 4

Facture.Controls("TextBoxMarchePoste" & i).Text = tablo(n, 1)
Facture.Controls("TextBoxMarchePoste" & i).Visible = True
Facture.Controls("TextBoxMarcheMontantHT" & i).Text = tablo(n, 3)
Facture.Controls("TextBoxMarcheMontantHT" & i).Visible = True

Next i

End If
Next n

End Sub

Merci d'avance de votre aide :)
 

Pièces jointes

  • Test Suivi fi - Copie.xlsm
    35.9 KB · Affichages: 44
Dernière édition:

dionys0s

XLDnaute Impliqué
Re : VBA - Données dans TextBox si condition Ok puis Suivant si

Bonjour Jess, bonjour le forum

Essaye ceci :

VB:
Option Explicit
Option Base 1

'********************************************************************************************
'***********************AFFICHE LES ELEMENTS A L'OUVERTURE DU USERFORM***********************
'********************************************************************************************

Private Sub UserForm_Initialize()

Dim TABLO() As Variant, Curseur As Integer, n As Integer, Compteur As Integer

Curseur = ActiveCell.Row 'indique le numéro de la ligne où le curseur se situe
Compteur = 0
TextBoxNom.Value = Range("B" & Curseur)

TABLO = Range("A3:C18")
ReDim NewTABLO(1)
For n = LBound(TABLO, 1) To UBound(TABLO, 1)
       
    If TABLO(n, 2) = TextBoxNom.Value Then
        Compteur = Compteur + 1
        Facture.Controls("TextBoxMarchePoste" & Compteur).Text = TABLO(n, 1)
        Facture.Controls("TextBoxMarchePoste" & Compteur).Visible = True
        Facture.Controls("TextBoxMarcheMontantHT" & Compteur).Text = TABLO(n, 3)
        Facture.Controls("TextBoxMarcheMontantHT" & Compteur).Visible = True
    End If
    
Next n
       
End Sub

Si tu as des questions n'hésite pas

EDIT : Il y avait une erreur dans mon code. Corrigée en principe.
 
Dernière édition:

dionys0s

XLDnaute Impliqué
Re : VBA - Données dans TextBox si condition Ok puis Suivant si

Je t'en prie

Option Explicit t'oblige à déclarer toutes les variables que tu utilises. Cela peut sembler contraignant, mais ça t'évitera bien des ennuis.

Concernant Option Base 1 :
Dans VBA, le premier index par défaut des variables tableau est 0. Avec cette instruction, je force le premier index à 1.

Je te recommande la lecture de cette page, ainsi que celle-ci, qui te rediront ça et plein d'autres trucs passionnants bien mieux que moi.
 

Jess5913

XLDnaute Nouveau
Re : VBA - Données dans TextBox si condition Ok puis Suivant si

Merci beaucoup pour ces explications, je vais étudier ces pages :)

La programmation VBA sous excel me passionne, je l'utilise pour améliorer mon travail au quotidien. Ce forum est super !

Merci encore pour ton aide, c'est génial ;)
 

Discussions similaires

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote