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
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
A voir également:
- Aller à une cellule depuis un choix ComboBox
- Aller à la ligne dans une cellule excel - Guide
- Liste déroulante de choix excel - Guide
- Excel cellule couleur si condition texte - Guide
- Verrouiller cellule excel - Guide
- Excel remplir automatiquement une cellule en fonction d'une autre ✓ - Forum Excel
7 réponses
scinarf
Messages postés
1119
Date d'inscription
samedi 18 novembre 2006
Statut
Membre
Dernière intervention
25 septembre 2014
252
16 oct. 2013 à 13:42
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
Je dirai
if (votrecellule.Font.bold = true) then
Combobox1.additem votrecellule.text
end if
le tout dans une boucle while ou for
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
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
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
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
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.
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.
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
17 oct. 2013 à 10:47
17 oct. 2013 à 10:47
Bonjour,
deux propositions, je pense que la première serait la plus adéquate.
deux propositions, je pense que la première serait la plus adéquate.
Private Sub UserForm_Initialize()La deuxième, positionne la ligne en haut de l'écran.
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
Private Sub UserForm_Initialize()A+
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
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
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
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
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
18 oct. 2013 à 11:27
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.
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.
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
18 oct. 2013 à 11:54
18 oct. 2013 à 11:54
Un condensé des deux exemples, tu choisi...
Un comboBox et un bouton nommé ReInit
Un comboBox et un bouton nommé ReInit
Option ExplicitA+
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
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
18 oct. 2013 à 13:29
Nickel, merci beaucoup...