Aide formulaire VBA listbox et fonction recherche
Bonjour à tous,
J'étudie actuellement le VBA et je me prends la tete depuis toute l'après midi sur quelque chose qui va vous sembler d'une simplicité enfantine :
1. J'ai créer un formulaire avec le multipage.
le première onglet ( recherche de lot) va chercher sur le serveur dans deux dossiers erreurs la présence d'un fichier que je tape dans la zone de texte. Cela fonctionne plutôt bien. Mais je dois taper le nom exact de mon fichier pour qu'il le trouve ou non. Y'a t il d'autres solutions pour améliorer ces deux recherches car mes fichiers peuvent avoir dans certains cas l'heure ou la date dans le nom.
J'aimerai également que si il trouve le ou les fichiers potentiels qu'il les affiche et l'utilisateur peut ainsi l'ouvrir.
2. Le deuxième onglet :
Dans cette partie il s'agira :
a. l'utilisateur choisira le type de pièce selon une liste précise : aaa, bbb, ccc etc dans un liste. (Je ne peux donner les intitulés de la liste mais je les modifierai)
Ensuite il devra entrer une référence, des quantités OK et NG (non conforme) puis il valide. Cela va me générer un fichier CSV avec une ligne que je sais faire.
Voila j'espère être clair et je vous joins mon fichier pour plus de compréhension. Le code est peut être mal fait. Je débute.
Bonjour,
Pour le point 1, vous avez probablement une condition avec l'opérateur = pour tester la présence des fichiers, de type :
if sFilename = MotClé then 'sFilename est la variable de boucle, MotClé est la correspondanceRemplacez cette ligne par :
if sFilename like "*" & MotClé & "*" thenEnsuite, je n'ai pas bien compris mais si vous voulez les afficher dans la listbox, il faudrait que vous postiez le code correspondant. Si vous souhaitez ouvrir les fichiers directement :
createobject("Shell.application").open sPathoù sPath est une variable de type variant qui est le chemin complet du fichier, càd la concaténation du répertoire terminé d'un antislash et du nom du fichier.
Cdlt,
Bonjour et merci de votre aide. J'ai posté le fichier dans mon premier message. Le voyez vous ?
en faite dans la listbox je souhaite qu il y ai une liste fixe qui. E changera pas (non dynamique) mais directement dans le code.
Bonjour,
Désolé, je n'ouvre pas les fichiers en ce moment.
Voici tout de même une proposition de code à adapter avec une fonction qui récupère tous les chemins des fichiers correspondant au mot clé renseigné en premier argument (à savoir la valeur de la textbox1), avec l'extension renseignée en second argument ("pdf" pur les pdf, "xlsx" pour les fichiers excel sans macro, "*" pour tous les fichiers, ...), dans les répertoires renseignés aux arguments suivants (nombre d'arguments indéterminé).
Cette fonction est exécutée à chaque changement sur la textbox1, conduisant à mettre à jour la listbox1 :
private sub TextBox1_Change()
with me
t = GetFilenames(.textbox1.value, "*", "C:\Rep1", "C:\Rep2") 'adapter extension et répertoires
with .listbox1
.clear
if not isempty(t) then .list = t
end with
end with
end sub
function GetFilenames(Keyword$, Extension$, paramarray Repertoires())
dim t()
for each rep in Repertoires
sFilename = dir(rep & "\*" & Keyword & "*." & Extension)
do while sFilename <> ""
n = n + 1: redim preserve t(1 to n)
t(n) = rep & "\" & sFilename
sFilename = dir
loop
next rep
if n > 0 then GetFilenames = t
end functionLes noms d'objet (textbox et listbox) sont à adapter à votre cas.
Si vous ne parvenez pas à adapter le code, alors je passe la main.
Cdlt,