Microsoft 365 VBA - recherche et remplace

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

PLA

XLDnaute Nouveau
Bonjour,
Y-at-il un moyen de modifier via VBA le paramètre "Dans" de la boîte de dialogue "Recherche et remplace" (pour le faire passer de "Feuille" à "Classeur" ou inversement ?
En vous remerciant pour votre aide
 
Hello,
peut-être avec UIAutomation , il y a un invokePattern et un ValuePattern sur cet élément :
RechercheRemplacer.png



mais cela certainement plus simple de passer par que du code VBA
Ami calmant, J.P
 
Bonjour,
Y-at-il un moyen de modifier via VBA le paramètre "Dans" de la boîte de dialogue "Recherche et remplace" (pour le faire passer de "Feuille" à "Classeur" ou inversement ?
En vous remerciant pour votre aide
Qu'est-ce que tu veux faire exactement ? parce que même si on arrive à changer la valeur , il faut faire des actions après ?
code qui fait l'action :
VB:
Sub ModifSearchReplace()
Dim c As New CUIAutomation, oReR As IUIAutomationElement, utils As Object
Dim oDesktop As IUIAutomationElement, oCondition As IUIAutomationCondition
'Dim  comboDans As IUIAutomationElement, valCombo As IUIAutomationValuePattern
Set utils = CreateObject("XlDnaLibJP.Utils")
On Error Resume Next
CommandBars.FindControl(ID:=313).Execute ' ouvrir fenêtre dialogue rechercher et remplacer
DoEvents
Set oCondition = c.CreatePropertyCondition(UIAutomationClient.UIA_NamePropertyId, "Rechercher et remplacer")
Set oDesktop = c.GetRootElement
Set oReR = oDesktop.FindFirst(TreeScope_Children, oCondition) ' Recherche de la fenêtre
oReR.SetFocus ' Focus sur la fenêtre
DoEvents: DoEvents
utils.Sleep 2000
SendKeys ("%{p}"): DoEvents ' Alt+p -> onglet remplacer
utils.Sleep 2000
SendKeys ("%{D}"): DoEvents ' Alt+D -> comboBox Dans :
utils.Sleep 2000
utils.SendKeys ("{DOWN}"): DoEvents ' Classeur
utils.Sleep 2000
'SendKeys ("{UP}"): DoEvents   ' Feuille
'utils.Sleep 2000
SendKeys ("{ENTER}"): DoEvents
utils.Sleep 5000
'Set oCondition = c.CreatePropertyCondition(UIAutomationClient.UIA_NamePropertyId, "Dans :")
'Set comboDans = oReR.FindFirst(TreeScope_Descendants, oCondition)
'Set valCombo = comboDans.GetCurrentPattern(UIA_ValuePatternId)
End Sub
La tempo c'est pour bien voir les actions
ReR.gif
 
ouais mais des sendkeys focussés et pas envoyés par VBA mais par dotnet 😉
Sinon on y arrive presque en tout UIAutomation (je n'arrive pas à changer la valeur de la combobox avec le SetValue)
VB:
Sub ModifSearchReplace()
Dim c As New CUIAutomation, oReR As IUIAutomationElement
Dim oDesktop As IUIAutomationElement, oCondition As IUIAutomationCondition
Dim allElem As IUIAutomationElementArray, comboDans As IUIAutomationElement
Dim valCombo As IUIAutomationValuePattern, oUIAelem As IUIAutomationElement
Dim invokeCombo As IUIAutomationInvokePattern
On Error Resume Next
CommandBars.FindControl(ID:=313).Execute ' ouvrir fenêtre dialogue rechercher et remplacer
DoEvents
Set oCondition = c.CreatePropertyCondition(UIAutomationClient.UIA_NamePropertyId, "Rechercher et remplacer")
Set oDesktop = c.GetRootElement
Set oReR = oDesktop.FindFirst(TreeScope_Children, oCondition) ' Recherche de la fenêtre
Set oCondition = c.CreateTrueCondition
Set allElem = oReR.FindAll(TreeScope_Descendants, oCondition)
    For i = 0 To allElem.length - 1
         Set oUIAelem = allElem.GetElement(i)
        If (oUIAelem.CurrentControlType = 50003) And (InStr(1, oUIAelem.CurrentName, "Dans") > 0) Then
          Set comboDans = oUIAelem
        End If
    Next i
'DoEvents
comboDans.SetFocus
Set valCombo = comboDans.GetCurrentPattern(UIA_ValuePatternId)
Set invokeCombo = comboDans.GetCurrentPattern(UIA_InvokePatternId)
Debug.Print valCombo.CurrentValue
valCombo.SetValue "Feuille"
'valCombo.SetValue "Classeur"
DoEvents
End Sub
 
Notre forum d’entraide est 100 % gratuit et le restera.
Aucune formation payante, aucun fichier à acheter, rien à vendre. Mais comme tout site, nous devons couvrir nos frais pour continuer à vous accompagner.
Soutenez-nous en souscrivant à un compte membre : c’est rapide, vous choisissez simplement votre niveau de soutien et le tour est joué.

Je soutiens la communauté et j’accède à mon compte membre

Discussions similaires

  • Question Question
Microsoft 365 RECHERCHEV
Réponses
10
Affichages
382
Réponses
5
Affichages
551
Réponses
5
Affichages
211
  • Question Question
Microsoft 365 recherche idée
Réponses
6
Affichages
658
Retour