Aller à une cellule depuis un choix ComboBox
Résolu
Andbed
Messages postés
14
Date d'inscription
Statut
Membre
Dernière intervention
-
Andbed Messages postés 14 Date d'inscription Statut Membre Dernière intervention -
Andbed Messages postés 14 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Aller à une cellule depuis un choix ComboBox
- Aller à la ligne dans une cellule excel - Guide
- Excel cellule choix multiple - Guide
- Excel cellule couleur si condition texte - Guide
- Proteger cellule excel - Guide
- Si une cellule contient un mot alors ✓ - Forum Excel
7 réponses
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
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
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.
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
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
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.
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