Selction cellule via combobox
Bonjour,
Je souhaite grâce à une Combobox présent dans une userform, sélectionner une cellule présent sur une ligne afin d'en archivée les coordonnées (notamment le numéro de colonne). Pour j'ai codé ce code, seulement, il ne fonctionne pas :/, l'userform plante au moment ou je sélectionne ma cellule, voila mon code:
Dim a()
Private Sub ComboBox1_Change()
If Usfa.ComboBox1 <> "" And IsError(Application.Match(Usfa.ComboBox1, a, 0)) Then
Set d1 = CreateObject("Scripting.Dictionary")
tmp = UCase(Usfa.ComboBox1) & "*"
For Each c In a
If UCase(c) Like tmp Then d1(c) = ""
Next c
Usfa.ComboBox1.List = d1.keys
Usfa.ComboBox1.DropDown
End If
End Sub
Private Sub CommandButton3_Click()
'Valider la saisie
If IsNull(Usfa.ComboBox1) Then
MsgBox "Vous devez sélectionner un banc."
Usfa.ComboBox1.SetFocus
Exit Sub
End If
With BDD
For i = AC To .Range("11" & Columns.Count).End(xlUp).Column
If .Cells(11, i) = Usfa.ComboBox1.Value Then
Cells(11, i).Select
Exit For
End If
Next i
End With
Unload Usfa
End Sub
Private Sub CommandButton4_Click()
Unload Usfa
End Sub
Private Sub UserForm_Initialize()
Dim a As Variant
Set f = BDD
a = f.Range("AC11:DZ11").Value
ComboBox1.Column() = a
End Suble debogeur me signal le bug au niveau de la troisieme ligne...Mais je n'arrive pas trouver la reel source de mon probleme...
Auriez vous de votre coté peu etre un nouveau code qui pourait grace a un userform et la valeur selectionner dans une combobox simplement selectionner la cellule présent sur la ligne.
Cordialement
max
Bonjour Maxgib, bonjour le forum,
Difficile de te répondre avec précision sans le fichier qui va bien !...
Je vois une incohérence dans ton code. La variable a déclarée une première fois au niveau module en tant que tableau : Dim a() puis une seconde fois au niveau procédure à l'initialisation de l'UserForm : Dim a As Variant. Je supprimerais cette seconde qui fait perdre la portabilité de la première.
Ensuite Set F = BDD signifie que BDD n'est pas le nom de l'onglet (affiché en bas) mais le Codename de ce dernier. Propriété (Name) dans la fenêtre des propriété de l'onglet (la première). À vérifer...
re
Merci de ta reponse, mais ducoup c'est la ligne du dessous qui pose pb :/
Voila le code a part dans un excel.
Si ca peut t'aider, mais je ne trouve toujours pas les causes du bug
cordialement
max
Re,
J'avoue que je ne comprends pas ton code...
Essaie ça :
Private Sub CommandButton3_Click()
'Valider la saisie
If IsNull(Usfa.ComboBox1) Then
MsgBox "Vous devez sélectionner un banc."
Usfa.ComboBox1.SetFocus
Exit Sub
End If
With bdd
For i = 29 To .Cells(11, Columns.Count).End(xlUp).Column
If CStr(.Cells(11, i)) = Usfa.ComboBox1.Value Then
.Cells(11, i).Select
Exit For
End If
Next i
End With
Unload Usfa
End Subok! ca marche merci de ton aide!!!
Re-bonjour,
Dans un premier temps merci de ton aide, suite à cette sélection, je souhaite maintenant sélectionner les valeurs présent dans cette dans cette colonne, c'est à dire les cellule non-vide afin de sélectionner les lignes entières et de les copier dans une autre feuille afin d'en sortir des micro-liste .
Merci d'avance de votre aide cordialement
MAX
Re,
Copier OK ! Mais coller où ?
J'ai rajouté un onglet nommé Destination et j'ai modifié le code. Tu adapteras pour la copie...
Private a As Variant
Private f As Worksheet
Private Sub UserForm_Initialize()
Set f = bdd
a = f.Range("AC11:DZ11").Value
ComboBox1.Column() = a
End Sub
Private Sub CommandButton3_Click()
Dim I As Integer
Dim DL As Integer
Dim TV() As Variant
'Valider la saisie
If IsNull(Usfa.ComboBox1) Then
MsgBox "Vous devez sélectionner un banc."
Usfa.ComboBox1.SetFocus
Exit Sub
End If
For I = 29 To f.Cells(11, Columns.Count).End(xlUp).Column
If CStr(f.Cells(11, I)) = Usfa.ComboBox1.Value Then
f.Cells(11, I).Select
Exit For
End If
Next I
Debug.Print I
DL = f.Cells(Application.Rows.Count, I).End(xlUp).Row
For J = 12 To DL
If f.Cells(J, I) <> "" Then
ReDim Preserve TV(K)
TV(K) = Cells(J, I).Value
K = K + 1
End If
Next J
If K > 0 Then
Sheets("Destination").Range("A1").Resize(1, UBound(TV, 1) + 1).Value = TV 'onglet et cellule à adapter ici copie en ligne
'Sheets("Destination").Range("A1").Resize(UBound(TV, 1) + 1, 1).Value = Application.Transpose(TV) 'onglet et cellule à adapter ici copie en colonne
End If
Unload Usfa
End Sub
Private Sub CommandButton4_Click()
Unload Usfa
End SubMerci de ta réponse, seulement, ce n'est pas seulement la colonne que je désire copier mais la ligne entière de chaque cellule sélectionner... Pour copier une ligne entière puis-je utiliser la fonction "entirerow.transpose"?
Merci pour tes réponse!
Cordialement
MAX
Re,
Arf Max ! Copier où p... de b... de m... ? (purée de banane de Mauritanie, œuf corse...)
Private Sub CommandButton3_Click()
Dim I As Integer
Dim DL As Integer
Dim DEST As Range
'Valider la saisie
If IsNull(Usfa.ComboBox1) Then
MsgBox "Vous devez sélectionner un banc."
Usfa.ComboBox1.SetFocus
Exit Sub
End If
For I = 29 To f.Cells(11, Columns.Count).End(xlUp).Column
If CStr(f.Cells(11, I)) = Usfa.ComboBox1.Value Then
f.Cells(11, I).Select
Exit For
End If
Next I
DL = f.Cells(Application.Rows.Count, I).End(xlUp).Row
For J = 12 To DL
With Sheets("Destination") 'à adapter
If f.Cells(J, I) <> "" Then
Set DEST = IIf(.Range("A1").Value = "", .Range("A1"), .Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0)) 'a adapter
f.Rows(J).Copy DEST
End If
End With
Next J
Unload Usfa
End SubMerci c'est exactement ça qu'il me fallait merci!