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 ?
 

patricktoulon

XLDnaute Barbatruc
re
Bonjour
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
 

LUMBARDO

XLDnaute Nouveau
Avec ce code j'ouvre dans Windows le fichier qui contient des documents qui correspondent à un enregistrement excel (dans un useform).
Je copie le numéro
je le mets dans le presse papier.
je le colle dans la barre de recherche et le fichier s'ouvre.
Maintenant au lieu de copier le numéro il met cela :
 

LUMBARDO

XLDnaute Nouveau
J'ai tenté de changer mon code mais j'arrive toujours à "dossier non trouvé" même quand il existe.
Quelqu'un voit-il pourquoi ?


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
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil

Une autre syntaxe
(test OK sur mon Office 365)
Reste à ajouter la partie pour ouvrir le classeur
VB:
Sub Test_040223()
Dim Fic$
Fic = Choisir_Fichier("x:\", "Classeur EXCEL", "*.xls; *.xlsx; *.xlsm")
'juste pour test
MsgBox Fic, vbInformation, "Résultat test"
End Sub

Private Function Choisir_Fichier(initialFilename$, Optional sDesc$ = "Excel (*.xls)", Optional sFilter$ = "*.xls") As String
  With Application.FileDialog(msoFileDialogOpen)
    .ButtonName = "&Ouvrir"
    .initialFilename = initialFilename
    .Filters.Clear
    .Filters.Add sDesc, sFilter, 1
    .Title = "Choisir un classeur"
    .AllowMultiSelect = 0
    If .Show = -1 Then Choisir_Fichier = .SelectedItems(1)
  End With
End Function
 

Staple1600

XLDnaute Barbatruc
Re, Bonjour TooFatBoy

@LUMBARDO
Ci-dessous une version qui pointe sur Mes Documents
(test OK sur mon Office 365)
VB:
Sub Test_040223_B()
Dim Fic$, strDoc$
strDoc = Environ$("USERPROFILE") & "\Documents\"
'pour test -> affiche le chemin de Mes Documents (de l'utilisateur Windows actif)
MsgBox strDoc
Fic = Choisir_Fichier(strDoc, "Classeur EXCEL", "*.xls; *.xlsx; *.xlsm")
'juste pour test
MsgBox Fic, vbInformation, "Résultat test"
End Sub

Private Function Choisir_Fichier(initialFilename$, Optional sDesc$ = "Excel (*.xls)", Optional sFilter$ = "*.xls") As String
  With Application.FileDialog(msoFileDialogOpen)
    .ButtonName = "&Ouvrir"
    .initialFilename = initialFilename
    .Filters.Clear
    .Filters.Add sDesc, sFilter, 1
    .Title = "Choisir un classeur"
    .AllowMultiSelect = 0
    If .Show = -1 Then Choisir_Fichier = .SelectedItems(1)
  End With
End Function
 

fanch55

XLDnaute Barbatruc
Salut,

Le Keybd_Event a un fonctionnement assez aléatoire .
De plus explorer.Exe n'a plus tout à fait le même aspect dans Windows 11.

Comme on ne sait pas ce qui peut y avoir dans le combobox,
pouvez-vous dire exactement ce que vous espérez obtenir avec le F3 d'explorer :

Est-ce une liste des fichiers répondants au masque fourni par Combobox?
Est-ce une liste des fichiers contenant la valeur de combobox ?
 

LUMBARDO

XLDnaute Nouveau
Bonjour Staple 1600, tooFatBoy et fanch 55
Dans le combobox il y a un nombre.
Dans le premier code F3 permettait d'aller la barre de recherche
ensuite le nombre contenu dans le combobox était copié dedans et en validant je retrouvais le ou les fichier qui contenaient de nombre.
 

Discussions similaires

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