Aller à une cellule depuis un choix ComboBox

Résolu/Fermé
Andbed Messages postés 14 Date d'inscription mercredi 16 octobre 2013 Statut Membre Dernière intervention 5 juin 2014 - 16 oct. 2013 à 13:21
Andbed Messages postés 14 Date d'inscription mercredi 16 octobre 2013 Statut Membre Dernière intervention 5 juin 2014 - 18 oct. 2013 à 13:29
Bonjour,

voici ce que j'aimerai pouvoir faire :

Depuis une liste d'appareils groupés par catégorie (noté en gras) colonne B
exemple :
en B5 "Cuisine"
en B6 "couteau"
en B7 "fourchette"
en B9 "Salle de bain"
en B10 "Brosse à dent"
...

J'aimerai que dans la liste du ComboBox (position sur B1), n'apparaisse que les catégories (dont le texte est en gras), et qu'à la sélection de ladite catégorie de la liste, la cellule contenant le texte apparaisse à l'écran comme si on s'était servi de la barre de défilement. (pour info la liste comporte 200 lignes et les 4 premières du tableau sont figées)

Tout ca pour simplifier l'accès aux lignes n'apparaissant pas à l'écran

Merci (s'il manque des précisions n'hésitez pas à me le faire savoir)

7 réponses

scinarf Messages postés 1098 Date d'inscription samedi 18 novembre 2006 Statut Membre Dernière intervention 25 septembre 2014 252
16 oct. 2013 à 13:42
Bonjour

Je dirai

if (votrecellule.Font.bold = true) then
Combobox1.additem votrecellule.text
end if

le tout dans une boucle while ou for
0
Andbed Messages postés 14 Date d'inscription mercredi 16 octobre 2013 Statut Membre Dernière intervention 5 juin 2014 1
17 oct. 2013 à 08:18
Merci scinarf pour ta réactivité.

J'ai trouvé ça :

Private Sub UserForm_Initialize()

For i = 6 To 200 ' => pour lister les 200 matériels
ComboBox1.AddItem Cells(i, 2) 'Ajoute les valeurs des cellules B6 à B200 avec la boucle
Next

End Sub


Du coup, j'ai bien toute la liste dans le combobox, par contre je n'arrive pas à intégrer ton code pour n'avoir que le texte en gras (c'est le "votrecellule" que je n'arrive pas à intégrer). En plus j'ai l'impression que les lignes dont le texte n'est pas en gras vont générer une ligne blanche dans le combobox.

Si tu as des éléments de réponses...

merci
0
Andbed Messages postés 14 Date d'inscription mercredi 16 octobre 2013 Statut Membre Dernière intervention 5 juin 2014 1
Modifié par Andbed le 17/10/2013 à 08:30
Bon en fait comme ça, ça fonctionne :

Private Sub UserForm_Initialize()

For i = 6 To 200 ' => pour lister les 200 matériels
If Cells(i, 2).Font.Bold = True Then
ComboBox1.AddItem Cells(i, 2).Text 'Ajoute les valeurs des cellules B6 à B200 avec la boucle
End If
Next

End Sub


J'ai aussi compris pourquoi j'avais des blanc dans la liste, c'était dû à des cellules vides dans lesquels la mise en forme GRAS avait été activée.

Maintenant 2° phase :

Que la cellule contenant le texte sélectionner dans la Combobox, se retrouve en haut de l'écran sous les lignes figers comme si je m'étais servi de la barre de défilement verticale.
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
17 oct. 2013 à 10:47
Bonjour,
deux propositions, je pense que la première serait la plus adéquate.
Private Sub UserForm_Initialize()

For i = 6 To 200 ' => pour lister les 200 matériels
If Cells(i, 2).Font.Bold = True Then
ComboBox1.AddItem Cells(i, 2).Text 'Ajoute les valeurs des cellules B6 à B200 avec la boucle
Else
Rows(i).Visible = False
End If
Next i

End Sub
La deuxième, positionne la ligne en haut de l'écran.
Private Sub UserForm_Initialize()
Dim Lig As Integer
For i = 6 To 200 ' => pour lister les 200 matériels
If Cells(i, 2).Font.Bold = True Then
ComboBox1.AddItem Cells(i, 2).Text 'Ajoute les valeurs des cellules B6 à B200 avec la boucle
If Lig = 0 Then Lig = i
End If
Next i
ActiveWindow.ScrollRow = Lig
End Sub
A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Andbed Messages postés 14 Date d'inscription mercredi 16 octobre 2013 Statut Membre Dernière intervention 5 juin 2014 1
18 oct. 2013 à 09:24
Bonjour lermite222,

j'ai tester les 2 codes :

Le premier génère une erreur sur la ligne "UserForm1.Show" lors du click sur mon bouton pour l'apparation du ComboBox

Le deuxième code fonctionne au détail prêt que ActiveWindow.ScrollRow ne fonctionne que pour la première valeur de i (6 dans ce cas).
J'ai fais l'essai avec la commande "For i = 48 To 200" : lors de l'affichage du UserForm je vais directement à la ligne 48 sans avoir encore eu le temps de sélectionner le matériel qui m'intéresse.
Je pense qu'on est sur la bonne voie, mais il faudrait que ActiveWindow.ScrollRow soit active que lorsque la sélection dans la ComboBox.

Merci en tout cas, d'avoir fais avancé le ch'mil-blick
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
18 oct. 2013 à 11:27
Le premier génère une erreur sur la ligne "UserForm1.Show" lors du click sur mon bouton pour l'apparation du ComboBox
Pour savoir où est l'erreur
Quand la ligne "UserForm1.Show" est surlignée en jaune, continuer en tapant sur F8, à chaque appui sur F8 l'exécution avance d'une ligne jusqu'au moment de la génération de l'erreur.
Tu dis où elle se trouve.

Le deuxième code fonctionne au détail prêt que ActiveWindow.ScrollRow ne fonctionne que pour la première valeur de i (6 dans ce cas).
C'est pas ainsi que je l'avais compris.
Je vois pour modifier la procédure.
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
18 oct. 2013 à 11:54
Un condensé des deux exemples, tu choisi...
Un comboBox et un bouton nommé ReInit

Option Explicit
Dim TB

Private Sub ComboBox1_Change()
ActiveWindow.ScrollRow = TB(ComboBox1.ListIndex)
End Sub

Private Sub ReInit_Click()
Rows("6:200").Hidden = False
End Sub

Private Sub UserForm_Initialize()
Dim Lig As Integer, a As Integer
ReDim TB(0)
For Lig = 6 To 200
If Cells(Lig, 2).Font.Bold = True Then
ComboBox1.AddItem Cells(Lig, 2).Text
ReDim Preserve TB(a)
TB(a) = Lig
a = a + 1
Else
'supprimer cette ligne pour ne pas cacher les données
'qui ne sont pas en gras.
' Rows(Lig).Hidden = True
End If
Next Lig
ComboBox1.ListIndex = 0
ActiveWindow.ScrollRow = 1
End Sub
A+

0
Andbed Messages postés 14 Date d'inscription mercredi 16 octobre 2013 Statut Membre Dernière intervention 5 juin 2014 1
18 oct. 2013 à 13:29
Nickel, merci beaucoup...
0