Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Pb avec Windows

LUMBARDO

XLDnaute Nouveau
Bonjour,
J'ai un code qui fonctionnait bien jusqu'à hier où des modifications à Windows ont été apportées.
Il permet de faire une recherche dans un dossier à partir d'un Useform.

Private Sub CommandButton65_Click()

Dim DataObj As New MSForms.DataObject
Dim Mon_texte As String
Dim RetVal As Long

ClearClipboard 'on vide le presse-papier

'on ouvre l'explorateur Windows
RetVal = ShellExecute(0, "open", "explorer.exe", "C:\Utilisateurs\x\Documents\dossiers", 0, SW_NORMAL)
Sleep 1000

If RetVal = 2 Or RetVal = 3 Then
MsgBox "Chemin ou fichier non trouvé"
Exit Sub
End If
If ComboBox2.Value = "" Then
MsgBox "Il n'y a pas de dossier sélectionné !", vbOKOnly + vbCritical, "Vas te coucher !"
Unload Me
irs1.Show
Exit Sub
End If
'on copie le texte de la cellule active dans le presse-papier

Mon_texte = Me.ComboBox2.Value
DataObj.SetText Mon_texte
DataObj.PutInClipboard

Sleep 500

'on se place dans la fenêtre de saisie y pour coller le contenu du presse-papier
SendKeys String:="{F3}", wait:=True
keybd_event VK_CONTROL, 0, 0, 0
keybd_event VK_V, 0, 0, 0
keybd_event VK_V, 0, KEYEVENTF_KEYUP, 0
keybd_event VK_CONTROL, 0, KEYEVENTF_KEYUP, 0
keybd_event VK_CONTROL, 0, 0, 0
keybd_event VK_CONTROL, 0, KEYEVENTF_KEYUP, 0
Sleep 1000
SendKeys String:="{ENTER}", wait:=True

With Application
DoEvents
Application.SendKeys ("{NUMLOCK}"), True
End With

End Sub

J'ai vérifié il met bien dans le presse papier le numéro mais après pour une raison inconnue il copie dans la barre de recherche le symbole Windows...

Quelqu'un a t-il rencontré ce cas ?
 

Staple1600

XLDnaute Barbatruc
Re

@LUMBARDO
Dans la discussion initiale, où je t'avais indiqué le code VBA (par un lien)
que tu as repris dans ton message#1 de présente discussion.

Il y avait un 1er lien qui pilotait Windows Search par le biais de VBA

A voir si la piste vaut d'être creuser ici .
 

Staple1600

XLDnaute Barbatruc
Re

@LUMBARDO
Un exemple simple utilisant Windows Search
NB: Remplacer le mot en orange par le nom du compte loggé sur Windows0
Enrichi (BBcode):
Sub test_simple()
'Dans VBA Menu "Tools/References..."
'Cocher "Microsoft ActiveX Data Object 2.8 Library"
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordset = CreateObject("ADODB.Recordset")
objConnection.Open "Provider=Search.CollatorDSO;Extended Properties='Application=Windows';"
objRecordset.Open "SELECT System.ItemName, System.DateModified FROM SYSTEMINDEX WHERE DIRECTORY='file:C:\Users\NOMUTILISATEURACTIF\Documents'", objConnection
j = 1
Do Until objRecordset.EOF
    Cells(j, 1) = objRecordset.Fields.Item("System.ItemName")
    Cells(j, 2) = Format(objRecordset.Fields.Item("System.DateModified"), "dd/mm/yyyy hh:mm:ss")
    objRecordset.MoveNext
    j = j + 1
Loop
Cells(1).CurrentRegion.Columns.AutoFit
End Sub
PS: test OK sur mon PC avec Office365

Maintenant il faudrait creuser et trouver l'option pour faire une recherche avec un string(*) contenu dans le nom des fichiers
(*) contenu dans la ComboBox2 de ton Userform.
 

fanch55

XLDnaute Barbatruc
OK, le filedialog de @Staple1600 devrait convenir, il suffit juste de mettre une étoile derrière la valeur du combobox dans l'initialfilename
 

LUMBARDO

XLDnaute Nouveau
Re,
Cela ne passe pas chez moi.

 

Staple1600

XLDnaute Barbatruc
Re

@LUMBARDO
Tu as bien ce que j'avais mis en début de code ?
(dans les commentaires verts)
'Dans VBA Menu "Tools/References..."
'Cocher "Microsoft ActiveX Data Object 2.8 Library"


Et tu as bien mis ton nom utilisateur Windows ?
(le mot orange à remplacer)
 

TooFatBoy

XLDnaute Barbatruc
Tiens, une question me vient en tête : ton classeur est-il sur la partition C ?
Du coup j'ai regardé et testé ton code de #6, et il semble y avoir plusieurs petites erreurs.

VB:
Private Sub CommandButton66_Click()
Dim strFolderName As String
Dim strPath As String

    strFolderName = Me.ComboBox2
    strPath = Dir("C:\" & strFolderName, vbDirectory)

    If strPath <> "" Then
        ChDir "C:\" & strFolderName
        Shell "explorer.exe" & strPath, vbNormalFocus
    Else
        MsgBox "Dossier non trouvé."
    End If

End Sub


Déjà, il faut une espace entre la commande explorer.exe et le nom du dossier contenu dans StrPath.


Mais surtout, le ChDir semble modifier le dossier pour "l'instance DOS" en cours. Or le fait de lancer l'instruction Shell "explorer.exe semble lancer une nouvelle "instance DOS" utilisant donc les paramètres d'environnement par défaut.

Il faudrait donc faire quelque chose dans ce genre :
Shell "explorer.exe C:\" & strPath, vbNormalFocus


Enfin... je dis ça sous toute réserve car là je découvre en testant...

Voilà pour le code de #6 sur lequel tu te posais des questions.
Maintenant je cesse là ma digression au milieu de votre conversation.
Bonne soirée à tous
 

fanch55

XLDnaute Barbatruc
Bonsoir,

Classeur basé sur la proposition de @Staple1600 en #18
amendé par la dernière remarque de @TooFatBoy

Renseigner le dossier racine .
Vous pouvez ignorer les éléments peuplant la combobox en inscrivant directement dans celle-ci les caractères désirés.
If faut Double-Cliquer sur un des éléments de la listbox pour l'ouvrir .


Edit de 23:20 :
Ach, cela ne fonctionne que sur les Dossiers Indexés ....


Document retiré ...
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
bonsoir
perso je me pose toujours la question
je l'ai déjà soulevé en post #2 et on en est au post 15
mais qu'est ce que dis donc trucmuche bidule chouette explorer viens faire la dedans
en vb vba on a des filedialogs ou folderdialog qui font ça
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…