Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1469 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1365111
Nullos59
débutant
Posté le 12-05-2006 à 14:30:00  profilanswer
 

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+
 
 
 

mood
Publicité
Posté le 12-05-2006 à 14:30:00  profilanswer
 

n°1365217
tegu
Posté le 12-05-2006 à 15:42:30  profilanswer
 

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

n°1365272
Nullos59
débutant
Posté le 12-05-2006 à 16:09:05  profilanswer
 

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...

n°1367977
Nullos59
débutant
Posté le 16-05-2006 à 17:42:23  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 

Sujets relatifs
Balayage d'enregistrements sur formulaire filtré... Est ce possible ?blender: comment mettre un message pour confirmer la fermeture?
Donner une valeur à un champsRecuparation valeur d'un timer
solution pour mettre en forme du texte html dans un formulaire aidez moi avec perl :mettre les données d'un fichier dans un tableau
Fonction et $variable=valeur de sortieVerifier l'existence d'une valeur
[CSS] PB : Mettre un div par dessus un autre[.NET] Mettre du 1.1 et du 2.0 sur le même site
Plus de sujets relatifs à : Mettre un filtre sur une scollbar selon la valeur de la cellule


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR