Faire défiler les cellules dans un textbox

Fermé
tittle - 17 avril 2008 à 11:41
 tittle - 17 avril 2008 à 14:51
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.

3 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
17 avril 2008 à 12:02
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
0
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
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
17 avril 2008 à 14:14
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 ça
Option 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
0
oui cette fois-ci c'est bon
merci beaucoup!
0