Mettre un filtre sur une scollbar selon la valeur de la cellule

Mettre un filtre sur une scollbar selon la valeur de la cellule - VB/VBA/VBS - Programmation

Marsh Posté le 12-05-2006 à 14:30:00    

Bonjour tout le monde,
 
Cette nuit, j'ai rêvé d'un truc pour une de mes applications VBA sous Excel mais je ne sais pas trop si c'est faisable. Est-ce que quelqu'un pourrait m'aiguiller SVP?
 
J'explique la CHOSE, j'utilise dans mon application, un userform me permettant de lire rapidement une base de données. Ayant environ 400 noms dans cette dernière, j'ai mis sur le userform une scrollbar qui contrôle l'ensemble de mes textbox.  
Jusqu'ici, tout va bien, rien ne va mal (lol)  
 
Dans une colonne de cette base de données, il y a des cellules vides!!!! Ce que je voudrai arriver à faire est que quand la scrollbar arrive sur la ligne où il y a une cellule vide, elle passe automatiquement à la suivante sans créer l'affichage dans les différentes textbox.  :sleep:  
 
Je ne sais pas si j'étais clair, je vous donne un exemple parlant:
Dans la colonne "AT", il y a seulement 15 cellules de renseignées
Si je lis la base de données avec mon userform actuel, faut que je fasse glisser la scrollbar sur l'ensemble des 400 noms (ce qui prend du temps et qui énerve)
Faudrait que j'arrive à controler la scrollbar seulement sur les 15 lignes concernées
 
Nota: le nombre de cellules renseignées n'est pas fixe et va dépendre de la saisie de l'utilisateur (de plus il peut avoir des cellules vide entre les cellules renseignées)  :fou:  
 
Je vous file un bout de code que j'ai essayé de compiler (sans succés  :( )
 
 
Dim lignesel As Single
lignesel = ScrollBar1.Value
 
TextBox6.Value = Sheets("Registre médical" ).Range("F" & lignesel + 13).Value
TextBox7.Value = Sheets("Registre médical" ).Range("E" & lignesel + 13).Value
TextBox2.Value = Format(Sheets("Registre médical" ).Range("AT" & lignesel + 13), "dd/mm/yy" )
 
On Error Resume Next
If IsEmpty(Sheets("Registre médical" ).Range("AT" & lignesel + 13).Value) Then
ScrollBar1.Value = ""
end if
 
Voilà, voilou, je pense que le titre de mon message devrait être "question pour un champion" lol
 
Si quelqu'un à une idée, n'hésitez pas je suis prenneur
 
A+
 
 
 

Reply

Marsh Posté le 12-05-2006 à 14:30:00   

Reply

Marsh Posté le 12-05-2006 à 15:42:30    

Tu dis que ton code ne se compile pas; tu devrais nous dire quelle ligne pose problème.

Reply

Marsh Posté le 12-05-2006 à 16:09:05    

A vrai dire, il se compile sans erreur, mais pas avec le résultat attendu
selon moi, il s'agit de la ligne en rouge
 
J'ai essayé une autre façon, mais çà doit être du grand n'importe quoi car je bloque tout l'affichage des textbox...
 
Je vous file quand même le code...
 
Dim i As Integer
 
On Error Resume Next
 
Sheets("Registre médical" ).Range("AH" & lignesel + 13).ActiveCell.Value
if IsEmpty(ActiveCell.Value) Then
 
For i = 1 To 1
lignesel = ScrollBar1.Value + i
Next i
 
Else
 
lignesel = ScrollBar1.Value
 
TextBox6.Value = Sheets("Registre médical" ).Range("F" & lignesel + 13).Value
TextBox7.Value = Sheets("Registre médical" ).Range("E" & lignesel + 13).Value
 
TextBox2.Value = Format(Sheets("Registre médical" ).Range("AT" & lignesel + 13), "dd/mm/yy" )
 
end if
 
ici pareil, le code fonctionne mais ne fait pas le résultat souhaité (il bloque l'ensemble des affichages des textbox...

Reply

Marsh Posté le 16-05-2006 à 17:42:23    

Bon ben voilà c'est fait,
 
C'était tellement évident que personne à trouvé...
 
Dim lignesel As Single
 
lignesel = ScrollBar1.Value
 
If Sheets("Registre médical" ).Range("AH" & lignesel + 13).Value = "" Then
Do
lignesel = lignesel + 1
Loop Until Sheets("Registre médical" ).Range("AH" & lignesel + 13).Value <> ""
End If
 
TextBox6.Value = Sheets("Registre médical" ).Range("F" & lignesel + 13).Value
TextBox7.Value = Sheets("Registre médical" ).Range("E" & lignesel + 13).Value  
TextBox2.Value = Format(Sheets("Registre médical" ).Range("AT" & lignesel + 13), "dd/mm/yy" )
 
A+
Vincent

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed