Faire défiler les cellules dans un textbox
tittle
-
tittle -
tittle -
Bonjour,
j'ai commencé les révisions en vue d'un DS sur excel-vba et je suis bloqué sur un exercice.
Sur un fichier excel sont données ligne par ligne les informations sur les ventes d'un employé. Grace a un userform il faut que les différentes cellules liés a cette personne (civilité, nomprénom, région, chiffre d'affaire) apparaissent dans des textbox et en appuyant sur le bouton de commande "suivant" je puisse voir les informations de l'employé sur la ligne suivante.
Je vous montre ce que j'ai commencé a faire:
Private Sub btsuivant_Click()
i = 2
Sheets("ventes").Cells(i, 2) = Fenetre.TextBox2
i = i + 1
Fenetre.TextBox2 = Sheets("ventes").Cells(i, 2)
End Sub
Pourtant quand je clique sur le bouton suivant la premiere cellule apparait mais je ne peux pas passer a la suivante.
Je vous remercie d'avance pour l'aide que vous voudrez bien m'apporter.
j'ai commencé les révisions en vue d'un DS sur excel-vba et je suis bloqué sur un exercice.
Sur un fichier excel sont données ligne par ligne les informations sur les ventes d'un employé. Grace a un userform il faut que les différentes cellules liés a cette personne (civilité, nomprénom, région, chiffre d'affaire) apparaissent dans des textbox et en appuyant sur le bouton de commande "suivant" je puisse voir les informations de l'employé sur la ligne suivante.
Je vous montre ce que j'ai commencé a faire:
Private Sub btsuivant_Click()
i = 2
Sheets("ventes").Cells(i, 2) = Fenetre.TextBox2
i = i + 1
Fenetre.TextBox2 = Sheets("ventes").Cells(i, 2)
End Sub
Pourtant quand je clique sur le bouton suivant la premiere cellule apparait mais je ne peux pas passer a la suivante.
Je vous remercie d'avance pour l'aide que vous voudrez bien m'apporter.
Configuration: Windows Vista Internet Explorer 7.0
3 réponses
-
Bonjour,
Déclare i en variable globale dans ton module. Au chargement de la UserForm initialise i à la première ligne de données, dans ton exemple i = 2.
Ensuite:Private Sub btsuivant_Click() If i = 2 Then MsgBox "Premier élément de la liste" Exit Sub Else Call AfficheZones i = i + 1 End If End Sub Private Sub AfficheZones() Fenetre.TextBox2 = Sheets("ventes").Cells(i, 2) Fenetre.TextBox3 = Sheets("ventes").Cells(i, 3) ... etc End Sub
Utilise le même principe pour le bouton btprécédent en testant que la ligne contient bien des données avant de l'afficher.
;o)
polux-
merci Polux pour votre aide,
malheureusement le programme ne fonctionne pas encore.
voila tel que je l'ai rentré dans son intégralité (en prenant ce que vous m'avez donné). Avez vous une idée de ce qui cloche?
Private Sub Fenetre_Initialize()
i = 2
Call AffichesZones
End Sub
Private Sub btsuivant_Click()
If i = 2 Then
MsgBox "Premier élément de la liste"
Exit Sub
Else
Call AfficheZones
i = i + 1
End If
End Sub
Private Sub AfficheZones()
Fenetre.TextBox2 = Sheets("ventes").Cells(i, 2)
End Sub
-
-
Ce n'est pas dans fenêtre_Initialize mais dans Sub UserForm_Initialize(), de plus la procédure d'affichage c'est AfficheZones et non AffichesZones.
Il faut déclarer en début de module : Private i As Long. Ce qui donne un module comme çaOption Explicit Private i As Long Private Sub UserForm_Initialize() i = 2 Call AfficheZones End Sub Private Sub btsuivant_Click() If i = 2 Then MsgBox "Premier élément de la liste" Exit Sub Else Call AfficheZones i = i + 1 End If End Sub Private Sub AfficheZones() Fenetre.TextBox2 = Sheets("ventes").Cells(i, 2) End Sub
;o)
polux -