cs_Dominike
Messages postés70Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention 6 mars 2010
-
9 mai 2008 à 01:19
cs_Dominike
Messages postés70Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention 6 mars 2010
-
9 mai 2008 à 12:20
Bonsoir à tous !
J'avance à petits pas, mais souvent confronté à de petits soucis.
Ce soir, j'ai créé un UserForm avec une liste déroulante alimenté très simplement par les propriétés de RowSource.
Seulement, ma liste peut varier de 2 à 40 items.
Est-il possible que la fenêtre du UserForm n'offre pas une multitude de lignes vides ?
Pourtant je cherche...
Merci à vous pour votre aide !
cs_Dominike
Messages postés70Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention 6 mars 2010 9 mai 2008 à 01:44
Merci pour cette rapide réponse et je pense comprendre et pouvoir utiliser dans d'autres conditions...
mais peu familiarisé avec les fonctions du UserForm, je ne vois pas comment l'imbriquer...
Un petit coup de pouce supplémentaire serait bienvenue...
Au fait, vous ne dormez pas à cette heure ?
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 9 mai 2008 à 02:38
vous ne dormez pas à cette heure ?
on va pas tarder
un exemple, admettons la liste recherchée est dans la colonne A, et que (comme tu l'as précisé) tes valeurs varient entre la ligne 2 et 40
Et bien on va partir de la cellule A1 (certainement l'étiquette de la colonne, donc il y a une donnée), et on va rechercher la dernière ligne utilisée à partir de cette cellule, comme ceci :
Dim DerniereLigne As Integer
DerniereLigne = Range("A1").End(xlUp).Row
Ensuite, tu imbriques cette variable avec la plage pour le RowSource.
Si ta dernière ligne utilisée est 20, ce sera la valeur de la variable DerniereLigne .
Donc NomDuCombobox.RowSource = "NomFeuille!A2:A" & DerniereLigne
A toi d'adapter selon comment est fait ton fichier.
Bon courage
cs_Dominike
Messages postés70Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention 6 mars 2010 9 mai 2008 à 11:48
Merci beaucoup pour l'aide,
Mais, couché à pas d'heure, je patauge toujours...
J'ai une macro dans un module qui me permets de sélectionner des fichiers dans mon arborescence, puis de copier leur chemin dans la colonne A de ma feuille 1.
A la fin de la macro, j'appelle le Userform dont le combobox doit me retourner restituer cette liste sans ligne vide.
Mon module :
Option Explicit
Public dossier
Public Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type
'32-bit API declarations
Declare Function SHGetPathFromIDList Lib "shell32.dll" _
Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Declare Function SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
Function GetDirectory(Optional Msg) As String
Dim bInfo As BROWSEINFO, path As String, r As Long, x As Long, pos As Integer
bInfo.pidlRoot = 0&
If IsMissing(Msg) Then
bInfo.lpszTitle = ""
Else
bInfo.lpszTitle = Msg
End If
bInfo.ulFlags = &H1
x = SHBrowseForFolder(bInfo)
path = Space$(512)
r = SHGetPathFromIDList(ByVal x, ByVal path)
If r Then
pos = InStr(path, Chr$(0))
GetDirectory = Left(path, pos - 1)
Else
GetDirectory = ""
End If
End Function
Sub File_Openen()
Columns("A:A").Select
Selection.ClearContents
Range("A1").Select
Dim fs, i, namefile, FileNumber, specfichier, nbfiles, r, Srep, folder, ct
dossier = GetDirectory("Choisit un dossier : ")
If dossier <> "" Then
Set fs = Application.FileSearch
With fs
.LookIn = dossier
.SearchSubFolders = True
.FileType = msoFileTypeAllFiles
If .Execute() > 0 Then
nbfiles = .FoundFiles.Count
For i = 1 To nbfiles
specfichier = .FoundFiles(i)
Range("A" & i) = specfichier
Next i
End If
End With
End If
'-------- Ici j'appelle mon User Form "Choix de fichier" --------
Liste.Show
'----------------------------------------------------------------
End Sub
==========================================
Puis mon User Form
==========================================
Private Sub Choix_Initialize()
Dim DerniereLigne As Integer
DerniereLigne = Range("A1").End(xlUp).Row
End Sub
Private Sub Choix_Change()
Choix.RowSource = "Feuil1!A1:A" & DerniereLigne
End Sub
=========================================
MAIS CA NE FONCTIONNE PAS !
Le combobox ne me donne que la première ligne de la colonne A
=========================================
Oserais-je abuser en demandant ce qui cloche ....
Merci par avance
et bon pont
-Dominike -
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Dominike
Messages postés70Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention 6 mars 2010 9 mai 2008 à 12:20
J'ai trouvé !!!....
Il suffisait (et pourtant on me l'avait déjà dit) de partir du bas.
Donc A100 par exemple et non A1.
Mais ma macro n'en est qu'au début...
Autrement dit, je risque fort d'avoir besoin des servives de cette brillante communauté.
Merci pour le coup de main !
Bonne journée à tous !