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.
A voir également:
- Faire défiler les cellules dans un textbox
- Verrouiller cellules excel - Guide
- Excel additionner plusieurs cellules - Guide
- Fusionner deux cellules excel - Guide
- Faites afficher avec un fond coloré les cellules qui contiennent une valeur comprise entre 250 et 350. - Forum VB / VBA
- Mise en forme conditionnelle "compris entre" ✓ - Forum Excel
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:
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
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
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
;o)
polux
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
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