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 ?
 

fanch55

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
Salut Pat, en fait les filedialogs affichent les fichiers filtrés et tous les dossiers du même niveau.
Le but serait d'obtenir uniquement les fichiers .
 

patricktoulon

XLDnaute Barbatruc
Bonjour @fanch55
et puis depuis longtemps déjà je ne me sert plus des dialog excel mais de getopenfilename qui a largement de quoi filtrer et présenter le dialog comme on veut avec ces arguments en sélection unique ou multiple même

sans chdir on peut déterminer le dossier de base
on peut sélectionner 1 ou plusieurs extensions qui apparaissent dans la liste
on peut titrer le dialog
on peut faire qu'il soit multi ou single select
etc.etc.

perso je dis explorer et on me dit dialog
même si je ne connais pas ou comprends pas je fait une recherche sur gogolito
et j'en apprend un peu plus ;)
et comme je ne suis pas trop C.. je me rend compte que les solutions existent
 

TooFatBoy

XLDnaute Barbatruc
je me demande bien pourquoi tu t'ennuie avec explorer dans un shell alors que la fonction DIR peut te donner la réponse
ou même au pire avec FSO

si tu nous expliquais ce que tu veux faire avec ton code par ce que pour moi c'est obscure
C'est vrai que moi aussi je serais bien curieux de savoir pourquoi s'embêter avec le Shell.
Très bonne question. 👍
 

fanch55

XLDnaute Barbatruc
Re,

@fanch55

Tu veux dire que c'est compliqué d'utiliser WindowsSearch avec VBA ?
Sinon en plus du FSO, il reste PowerShell ;)
(Les deux n'étant pas "livrés, liés" avec Excel mais avec Windows)
Non, c'est pas compliqué , c'est limité aux dossiers indexés ou plutôt qu'on a défini dans l'indexation de windows.
Une clé USB, un CD, un disque externe ou réseau ne sont pas nativement indexés .
C'est plutôt une sauce interne depuis Vista. ...
 

patricktoulon

XLDnaute Barbatruc
re
tiens j'ai pris 15 minutes pour le faire mon dialog perso
il ne ressort que les fichiers avec extensions demandées,meme si il y a des dossiers dans ce dossier ils ne ressortent pas
ps: je n'ai pas fait dans l’élaguant je vous laisse l'arranger a votre sauce

lancer la sub tests

pour info toute mes boites dialogs perso fonctionnent comme ca

a savoir une fonction public est le return en hide , le modal étant en lui même la gestion d'attente
 

Pièces jointes

  • filePikerdialogPerso 2023.xlsm
    16.8 KB · Affichages: 11

fanch55

XLDnaute Barbatruc
tiens j'ai pris 15 minutes pour le faire mon dialog perso
pour info toute mes boites dialogs perso fonctionnent comme ca
Fonctionne tout à fait correctement sur les Dossiers locaux.
Perso, je n'utilise plus Dir pour lister les fichiers car celui-ci me fait parfois des misères sur les dossiers et fichiers réseaux avec des caractères accentués, ce que récupère Fso sans problème .

Exemple:
J'ai des disques réseaux sur un Synology(Linux)
que je contacte ainsi : \\MaoServeur\Partage\Scanneur
Les caractères que je récupère via Dir ne me permettent pas d'exploiter le nom .... 🥴

Via Dir
1675597385770.png
Via Fso
1675597512386.png
 

patricktoulon

XLDnaute Barbatruc
re
VB:
' version avec dir
'Private Sub UserForm_Activate()
    'Dim ex, f
    'Me.Caption = titre
    'With ListBox1
        '.multiSelect = Abs(multiSel)
        'For Each ex In ext
            'f = Dir(doss & "\" & ex)
            'Do While f <> ""
                '.AddItem f
                '.List(ListBox1.ListCount - 1, 1) = doss & "\" & f
                'f = Dir
            'Loop
        'Next
    'End With
'End Sub

'version avec FSO
Private Sub UserForm_Activate()
    Dim FSO, ex, FlD, Fil
    Me.Caption = titre
    With ListBox1
        .multiSelect = Abs(multiSel)
        Set FSO = CreateObject("Scripting.FileSystemObject")
        Set FlD = FSO.GetFolder("F:\vba excel")
        For Each Fil In FlD.Files
            For Each ex In ext
                If Fil Like ex Then
                    .AddItem Fil
                    .List(ListBox1.ListCount - 1, 1) = Fil
                End If
            Next
        Next
    End With
End Sub
je lui ai mis des petits trucs en plus
 

Pièces jointes

  • filePikerdialogPerso 2023.xlsm
    21.9 KB · Affichages: 8

patricktoulon

XLDnaute Barbatruc
re
et ben dans ext tu met
ext="toto*;titi*;riri*"
en gros ext fait office de partname
avec un"*" devant ca fait pour une partie de (au milieu)
sans le"*" devant c'est pour commence par
comme dans ma fonction récursive fso ;)
et pour les deux
exe ext="toto*xl*;riri*txt
pas compliqué
 

Discussions similaires

Statistiques des forums

Discussions
314 611
Messages
2 111 148
Membres
111 051
dernier inscrit
MANUREVALAND