[VBA] Problème de code Macro de Selection

Fermé
Lasthom Messages postés 2 Date d'inscription vendredi 27 mai 2011 Statut Membre Dernière intervention 27 mai 2011 - Modifié par Lasthom le 27/05/2011 à 15:14
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 31 mai 2011 à 10:28
Bonjour,

Je suis stagiaire dans une boite et afin de faciliter la vie à mon maître de stage, je lui créer un fichier excel presque tout automatisé.

J'ai créer une ComboBox qui liste les éléments d'une colonne et je voulais que, lorsque je selectionne un élément dans la liste, cela me selectionne les cellules remplies de la ligne correspondante.

Mon code est surement incorrect pour ce que je veux faire et en plus j'ai un problème sur la ligne en gras pouvez-vous m'aider ?

Private Sub CommandButton2_Click()  
  Dim crit  
  Dim lg As Byte  
  Dim Table As Range  
  crit = ComboBox1.Value  
  Set Table = ActiveSheet.Range("B6:B26" & ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row)  
  lg = Table.Find(crit, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True).Row  
  Range("B" & lg & ":" & lg).Select  
  Unload Me  
End Sub



Merci pour vos réponses

Lafsthom

A voir également:

1 réponse

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 758
31 mai 2011 à 10:28
Bonjour,
Bizarre le :
Set Table = ActiveSheet.Range("B6:B26" & ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row)

Que cherches tu à déterminer???
S'il s'agit d'une plage de recherche délimitée par : Cellule B6 jusqu'à dernière cellule col B :
1- le code est faux,
2- il est inutile.
Pour info, un code plus juste serait :
Set Table = ActiveSheet.Range("B6:B" & ActiveSheet.Range("B65536").End(xlUp).Row)

Mais, puisqu'il n'est pas utile de sélectionner la plage de recherche, voici ton code avec annotations :
Private Sub CommandButton2_Click()  
  Dim crit 'As quoi??? String? Double? Long? Variant?
  'Dim lg As Byte  
  Dim lg As Long 'Byte est une variable limitée à 255. 
'Si tu as plus de 255 lignes il vaux mieux choisir Integer voir Long...

  crit = ComboBox1.Value  
  lg = ActiveSheet.Columns(2).Find(crit, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True).Row  
  Range("B" & lg).Select 'si tu ne souhaites sélectionner qu'une cellule
'Rows(lg).Select 'permet de sélectionner toute la ligne
  Unload Me  
End Sub
0