VBA activer un fichier Excel présent sur une autre instance
Fermé
Mag13180
Messages postés
23
Date d'inscription
jeudi 25 février 2016
Statut
Membre
Dernière intervention
19 novembre 2016
-
17 juin 2016 à 21:22
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 17 juin 2016 à 23:22
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 17 juin 2016 à 23:22
A voir également:
- VBA activer un fichier Excel présent sur une autre instance
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Liste déroulante excel - Guide
- Calculer une moyenne sur excel - Guide
1 réponse
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 248
17 juin 2016 à 21:44
17 juin 2016 à 21:44
Bonjour,
Tu ne peux pas traiter un fichier s'il n'est pas dans la même session.
Il faut qu'il soit enregistré et tu l'ouvres avec ta macro.
eric
Tu ne peux pas traiter un fichier s'il n'est pas dans la même session.
Il faut qu'il soit enregistré et tu l'ouvres avec ta macro.
eric
17 juin 2016 à 22:48
Il me semble bien que tu m'as souvent donné des coups de mains sur le forum Excel-pratique à mes débuts sur Excel.....
Je viens péniblement de parvenir à activer le fichier d'une autre instance (en piochant ici et là des infos sur le net ...)
il me reste à l'adapter à mon "fichier A" et éventuellement à l’alléger en tout cas ça fonctionne
dis moi ce que tu en pense
bonne soirée
Magali
voici le code, désolée, c'est surement brouillon :
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetWindowTextLength Lib "user32" _
Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Private Declare Function GetWindowText Lib "user32" _
Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, _
ByVal cch As Long) As Long
Const GW_HWNDFIRST = 0
Const GW_HWNDNEXT = 2
Sub LoadTaskList()
Dim CurrWnd As Long
Dim Length As Long
Dim TaskName As String
Dim Parent As Long
Dim che
Dim w
i = 1
'récupère le nom du ficher sur la feuille
Range("G21").FormulaR1C1 = "=FIND(""."",RC[-6])+3"
Range("G21").FormulaR1C1 = "=MID(RC[-7],1,RC[-1])"
twnd& = FindWindow("Shell_traywnd", vbNullString)
'renomme la feuille
On Error GoTo a
Sheets("liste").Select
On Error GoTo 0
Rows("1:1000").Delete
CurrWnd = GetWindow(twnd, GW_HWNDFIRST)
While CurrWnd <> 0
Length = GetWindowTextLength(CurrWnd)
TaskName = Space$(Length + 1)
Length = GetWindowText(CurrWnd, TaskName, Length + 1)
TaskName = Left$(TaskName, Len(TaskName) - 1)
'che = TaskName.Path
If Length > 0 Then
Cells(i, 1).Value = TaskName
i = i + 1
End If
CurrWnd = GetWindow(CurrWnd, GW_HWNDNEXT)
DoEvents
Wend
Dim list, fichier
Sheets("liste").Select
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
list = Selection.Find(What:="exportphasestransfert*", After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
Selection.FindNext(After:=ActiveCell).Activate
fichier = ActiveCell.Value
' récupère le nom du fichier dans une variable
Dim l1
l1 = ActiveCell.Row
Cells(l1, 7).Select
ActiveCell.Formula = "=FIND(""."",a" & l1 & ")+3"
Cells(l1, 8).Formula = "=mid(a" & l1 & ",1 ,g" & l1 & ")"
w = Cells(l1, 8)
AppActivate (w)
Exit Sub
a:
Sheets.Add 'renvoie la liste dans une nouvelle feuille de calcul
ActiveSheet.Name = "liste"
Resume Next
End Sub
Modifié par eriiic le 17/06/2016 à 23:24
PS: n'hésite pas à indenter et à utiliser la balise Code (l'icone <>)