Bonjour Isabelle,
Pour retenir seulement les instances d'Excel de tous les programmes ouverts,
j'utilise les extensions de fichier que l'on retrouve habituellement dans le nom
du fichier. Le hic, si ton fichier n'a pas déjà été enregistré, il n'a pas
d'extension. Par conséquent, il n'est pas retenu.
Essaie cette version. Dans le décompte, le fichier perso.xls ou de macros
complémentaires ne sont pas comptés.
Si ce n'est pas suffisant, quel est ton besoin exactement?
'-----------------------------------------------------------------------------------------------------------------
#If Not VBA7 Then
Declare Function GetWindowTextLength Lib "user32" Alias _
"GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Declare Function GetWindowText Lib "user32" Alias _
"GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As _
String, ByVal cch As Long) As Long
Declare Function EnumWindows Lib "user32" _
(ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
#Else
Declare PtrSafe Function GetWindowTextLength Lib "user32" Alias _
"GetWindowTextLengthA" (ByVal hwnd As LongPtr) As Long
Declare PtrSafe Function GetWindowText Lib "user32" Alias _
"GetWindowTextA" (ByVal hwnd As LongPtr, ByVal lpString As _
String, ByVal cch As Long) As Long
Declare PtrSafe Function EnumWindows Lib "user32" _
(ByVal lpEnumFunc As LongPtr, ByVal lParam As LongPtr) As Long
#End If
Public NbFileOuverts As Long
'-----------------------------------------------------------------------------------------------------------------
Public Function EnumWindowsProc(ByVal hwnd As Long, ByVal lParam As Long) As Long
Dim Slength As Long, Buffer As String, NomFichier As String, X As Long
Dim Elt As Variant
'Détermine la longueur du texte de la barre de titre de l'application
Slength = GetWindowTextLength(hwnd) + 1 ' get length of title bar text
If Slength > 1 Then ' if return value refers to non-empty string
'crée l'espace que va demander le titre de l'application
'pour la variable Buffer
Buffer = Space(Slength)
'Obtient dans la variable Buffer, la valeur de la barre
'de titre de l'application
GetWindowText hwnd, Buffer, Slength
'Teste si la chaîne " - Excel" est présente dans la barre
'de titre de l'application
For Each Elt In Array(" - Excel", " - Microsoft Excel", "Microsoft Excel -")
X = InStr(1, Trim(Buffer), Elt, vbTextCompare)
If X > 0 Then
NbFileOuverts = NbFileOuverts + 1
End If
Next
End If
'processus récursif qui va boucle si elle vaut 1
EnumWindowsProc = 1
End Function
'-----------------------------------------------------------------------------------------------------------------
Sub Liste_Classeurs_Ouverts()
'peu importe l'instance dans laquelle ils sont ouverts
NbFileOuverts = 0
EnumWindows AddressOf EnumWindowsProc, 0
MsgBox NbFileOuverts & " fichiers Excel sont ouverts"
End Sub
'-----------------------------------------------------------------------------------------------------------------
"isabelle" a écrit dans le message de groupe de discussion :
m5rsf0$tde$
aussi voici une image produit lorsque je passe le curseur sur le logo excel sur
la barre au bas,
http://cjoint.com/?DLfkieZPy3l
isabelle
Le 2014-12-05 03:35, isabelle a écrit :Salut Denis,
j'ai cru un instant que tu étais mon sauveur...
hélas non, en tous les cas pas pour le mien de cas.
je ne sais pas si tu connais le logiciel Cogniview PDF2XL,
ce logiciel sert à convertir les données des fichiers PDF en tableau excel
lors de la conversion, un fichier excel est créer et s'ouvre sous le nom de
"Feuil1 - Microsoft Excel" dans une instance différente.
je dit une instance différente parce que je peut la fermer "Feuil1 - Microsoft
Excel" avec la croix sans que mon instance qui est ouverte ne soit affectée.
alors j'ai testé ta macro après avoir créer un fichier excel provenant de
Cogniview PDF2XL et hélas il n'est pas dans la liste du Combobox :-(
pour précision:
Win 7 - 64 bit, Office 10
isabelle
Bonjour Isabelle,
Pour retenir seulement les instances d'Excel de tous les programmes ouverts,
j'utilise les extensions de fichier que l'on retrouve habituellement dans le nom
du fichier. Le hic, si ton fichier n'a pas déjà été enregistré, il n'a pas
d'extension. Par conséquent, il n'est pas retenu.
Essaie cette version. Dans le décompte, le fichier perso.xls ou de macros
complémentaires ne sont pas comptés.
Si ce n'est pas suffisant, quel est ton besoin exactement?
'-----------------------------------------------------------------------------------------------------------------
#If Not VBA7 Then
Declare Function GetWindowTextLength Lib "user32" Alias _
"GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Declare Function GetWindowText Lib "user32" Alias _
"GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As _
String, ByVal cch As Long) As Long
Declare Function EnumWindows Lib "user32" _
(ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
#Else
Declare PtrSafe Function GetWindowTextLength Lib "user32" Alias _
"GetWindowTextLengthA" (ByVal hwnd As LongPtr) As Long
Declare PtrSafe Function GetWindowText Lib "user32" Alias _
"GetWindowTextA" (ByVal hwnd As LongPtr, ByVal lpString As _
String, ByVal cch As Long) As Long
Declare PtrSafe Function EnumWindows Lib "user32" _
(ByVal lpEnumFunc As LongPtr, ByVal lParam As LongPtr) As Long
#End If
Public NbFileOuverts As Long
'-----------------------------------------------------------------------------------------------------------------
Public Function EnumWindowsProc(ByVal hwnd As Long, ByVal lParam As Long) As Long
Dim Slength As Long, Buffer As String, NomFichier As String, X As Long
Dim Elt As Variant
'Détermine la longueur du texte de la barre de titre de l'application
Slength = GetWindowTextLength(hwnd) + 1 ' get length of title bar text
If Slength > 1 Then ' if return value refers to non-empty string
'crée l'espace que va demander le titre de l'application
'pour la variable Buffer
Buffer = Space(Slength)
'Obtient dans la variable Buffer, la valeur de la barre
'de titre de l'application
GetWindowText hwnd, Buffer, Slength
'Teste si la chaîne " - Excel" est présente dans la barre
'de titre de l'application
For Each Elt In Array(" - Excel", " - Microsoft Excel", "Microsoft Excel -")
X = InStr(1, Trim(Buffer), Elt, vbTextCompare)
If X > 0 Then
NbFileOuverts = NbFileOuverts + 1
End If
Next
End If
'processus récursif qui va boucle si elle vaut 1
EnumWindowsProc = 1
End Function
'-----------------------------------------------------------------------------------------------------------------
Sub Liste_Classeurs_Ouverts()
'peu importe l'instance dans laquelle ils sont ouverts
NbFileOuverts = 0
EnumWindows AddressOf EnumWindowsProc, 0
MsgBox NbFileOuverts & " fichiers Excel sont ouverts"
End Sub
'-----------------------------------------------------------------------------------------------------------------
"isabelle" a écrit dans le message de groupe de discussion :
m5rsf0$tde$1@speranza.aioe.org...
aussi voici une image produit lorsque je passe le curseur sur le logo excel sur
la barre au bas,
http://cjoint.com/?DLfkieZPy3l
isabelle
Le 2014-12-05 03:35, isabelle a écrit :
Salut Denis,
j'ai cru un instant que tu étais mon sauveur...
hélas non, en tous les cas pas pour le mien de cas.
je ne sais pas si tu connais le logiciel Cogniview PDF2XL,
ce logiciel sert à convertir les données des fichiers PDF en tableau excel
lors de la conversion, un fichier excel est créer et s'ouvre sous le nom de
"Feuil1 - Microsoft Excel" dans une instance différente.
je dit une instance différente parce que je peut la fermer "Feuil1 - Microsoft
Excel" avec la croix sans que mon instance qui est ouverte ne soit affectée.
alors j'ai testé ta macro après avoir créer un fichier excel provenant de
Cogniview PDF2XL et hélas il n'est pas dans la liste du Combobox :-(
pour précision:
Win 7 - 64 bit, Office 10
isabelle
Bonjour Isabelle,
Pour retenir seulement les instances d'Excel de tous les programmes ouverts,
j'utilise les extensions de fichier que l'on retrouve habituellement dans le nom
du fichier. Le hic, si ton fichier n'a pas déjà été enregistré, il n'a pas
d'extension. Par conséquent, il n'est pas retenu.
Essaie cette version. Dans le décompte, le fichier perso.xls ou de macros
complémentaires ne sont pas comptés.
Si ce n'est pas suffisant, quel est ton besoin exactement?
'-----------------------------------------------------------------------------------------------------------------
#If Not VBA7 Then
Declare Function GetWindowTextLength Lib "user32" Alias _
"GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Declare Function GetWindowText Lib "user32" Alias _
"GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As _
String, ByVal cch As Long) As Long
Declare Function EnumWindows Lib "user32" _
(ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
#Else
Declare PtrSafe Function GetWindowTextLength Lib "user32" Alias _
"GetWindowTextLengthA" (ByVal hwnd As LongPtr) As Long
Declare PtrSafe Function GetWindowText Lib "user32" Alias _
"GetWindowTextA" (ByVal hwnd As LongPtr, ByVal lpString As _
String, ByVal cch As Long) As Long
Declare PtrSafe Function EnumWindows Lib "user32" _
(ByVal lpEnumFunc As LongPtr, ByVal lParam As LongPtr) As Long
#End If
Public NbFileOuverts As Long
'-----------------------------------------------------------------------------------------------------------------
Public Function EnumWindowsProc(ByVal hwnd As Long, ByVal lParam As Long) As Long
Dim Slength As Long, Buffer As String, NomFichier As String, X As Long
Dim Elt As Variant
'Détermine la longueur du texte de la barre de titre de l'application
Slength = GetWindowTextLength(hwnd) + 1 ' get length of title bar text
If Slength > 1 Then ' if return value refers to non-empty string
'crée l'espace que va demander le titre de l'application
'pour la variable Buffer
Buffer = Space(Slength)
'Obtient dans la variable Buffer, la valeur de la barre
'de titre de l'application
GetWindowText hwnd, Buffer, Slength
'Teste si la chaîne " - Excel" est présente dans la barre
'de titre de l'application
For Each Elt In Array(" - Excel", " - Microsoft Excel", "Microsoft Excel -")
X = InStr(1, Trim(Buffer), Elt, vbTextCompare)
If X > 0 Then
NbFileOuverts = NbFileOuverts + 1
End If
Next
End If
'processus récursif qui va boucle si elle vaut 1
EnumWindowsProc = 1
End Function
'-----------------------------------------------------------------------------------------------------------------
Sub Liste_Classeurs_Ouverts()
'peu importe l'instance dans laquelle ils sont ouverts
NbFileOuverts = 0
EnumWindows AddressOf EnumWindowsProc, 0
MsgBox NbFileOuverts & " fichiers Excel sont ouverts"
End Sub
'-----------------------------------------------------------------------------------------------------------------
"isabelle" a écrit dans le message de groupe de discussion :
m5rsf0$tde$
aussi voici une image produit lorsque je passe le curseur sur le logo excel sur
la barre au bas,
http://cjoint.com/?DLfkieZPy3l
isabelle
Le 2014-12-05 03:35, isabelle a écrit :Salut Denis,
j'ai cru un instant que tu étais mon sauveur...
hélas non, en tous les cas pas pour le mien de cas.
je ne sais pas si tu connais le logiciel Cogniview PDF2XL,
ce logiciel sert à convertir les données des fichiers PDF en tableau excel
lors de la conversion, un fichier excel est créer et s'ouvre sous le nom de
"Feuil1 - Microsoft Excel" dans une instance différente.
je dit une instance différente parce que je peut la fermer "Feuil1 - Microsoft
Excel" avec la croix sans que mon instance qui est ouverte ne soit affectée.
alors j'ai testé ta macro après avoir créer un fichier excel provenant de
Cogniview PDF2XL et hélas il n'est pas dans la liste du Combobox :-(
pour précision:
Win 7 - 64 bit, Office 10
isabelle
Un petit détail...
Que fais-tu debout à cette heure? Tu regardes la neige tombée ou le froid
s'implanter?
;-))
Un petit détail...
Que fais-tu debout à cette heure? Tu regardes la neige tombée ou le froid
s'implanter?
;-))
Un petit détail...
Que fais-tu debout à cette heure? Tu regardes la neige tombée ou le froid
s'implanter?
;-))
Bonjour Denis
Ton msg apparait chez moi à 12h10, donc à midi. Il aurait donc été posté vers
06hoo du matin au Québec. C'est bien cela?
Pour la neige, nous avons reçu les premiers flocons (bien timides) avant hier.
mais ils ne recouvrent même pas la pelouse.
On dirait un petit saupoudrage d'avertissement. -))
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"MichD" a écrit dans le message de groupe de discussion :
m5s3rv$hhi$
Un petit détail...
Que fais-tu debout à cette heure? Tu regardes la neige tombée ou le froid
s'implanter?
;-))
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel
antivirus Avast.
http://www.avast.com
Bonjour Denis
Ton msg apparait chez moi à 12h10, donc à midi. Il aurait donc été posté vers
06hoo du matin au Québec. C'est bien cela?
Pour la neige, nous avons reçu les premiers flocons (bien timides) avant hier.
mais ils ne recouvrent même pas la pelouse.
On dirait un petit saupoudrage d'avertissement. -))
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"MichD" a écrit dans le message de groupe de discussion :
m5s3rv$hhi$1@speranza.aioe.org...
Un petit détail...
Que fais-tu debout à cette heure? Tu regardes la neige tombée ou le froid
s'implanter?
;-))
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel
antivirus Avast.
http://www.avast.com
Bonjour Denis
Ton msg apparait chez moi à 12h10, donc à midi. Il aurait donc été posté vers
06hoo du matin au Québec. C'est bien cela?
Pour la neige, nous avons reçu les premiers flocons (bien timides) avant hier.
mais ils ne recouvrent même pas la pelouse.
On dirait un petit saupoudrage d'avertissement. -))
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"MichD" a écrit dans le message de groupe de discussion :
m5s3rv$hhi$
Un petit détail...
Que fais-tu debout à cette heure? Tu regardes la neige tombée ou le froid
s'implanter?
;-))
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel
antivirus Avast.
http://www.avast.com
Bonjour Denis
Ton msg apparait chez moi à 12h10, donc à midi. Il aurait donc été posté
vers
06hoo du matin au Québec. C'est bien cela?
Pour la neige, nous avons reçu les premiers flocons (bien timides) avant
hier.
mais ils ne recouvrent même pas la pelouse.
On dirait un petit saupoudrage d'avertissement. -))
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"MichD" a écrit dans le message de groupe de discussion :
m5s3rv$hhi$
Un petit détail...
Que fais-tu debout à cette heure? Tu regardes la neige tombée ou le froid
s'implanter?
;-))
---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel
antivirus Avast.
http://www.avast.com
Bonjour Denis
Ton msg apparait chez moi à 12h10, donc à midi. Il aurait donc été posté
vers
06hoo du matin au Québec. C'est bien cela?
Pour la neige, nous avons reçu les premiers flocons (bien timides) avant
hier.
mais ils ne recouvrent même pas la pelouse.
On dirait un petit saupoudrage d'avertissement. -))
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"MichD" a écrit dans le message de groupe de discussion :
m5s3rv$hhi$1@speranza.aioe.org...
Un petit détail...
Que fais-tu debout à cette heure? Tu regardes la neige tombée ou le froid
s'implanter?
;-))
---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel
antivirus Avast.
http://www.avast.com
Bonjour Denis
Ton msg apparait chez moi à 12h10, donc à midi. Il aurait donc été posté
vers
06hoo du matin au Québec. C'est bien cela?
Pour la neige, nous avons reçu les premiers flocons (bien timides) avant
hier.
mais ils ne recouvrent même pas la pelouse.
On dirait un petit saupoudrage d'avertissement. -))
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"MichD" a écrit dans le message de groupe de discussion :
m5s3rv$hhi$
Un petit détail...
Que fais-tu debout à cette heure? Tu regardes la neige tombée ou le froid
s'implanter?
;-))
---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel
antivirus Avast.
http://www.avast.com
Bonjour Isabelle,
Essaie ceci. Exécute la procédure "Départ"
À mettre le tout dans un module standard.
Private Declare Function apiGetClassName Lib "user32" Alias _
"GetClassNameA" (ByVal Hwnd As Long, _
ByVal lpClassname As String, _
ByVal nMaxCount As Long) As Long
Private Declare Function apiGetDesktopWindow Lib "user32" Alias _
"GetDesktopWindow" () As Long
Private Declare Function apiGetWindow Lib "user32" Alias _
"GetWindow" (ByVal Hwnd As Long, _
ByVal wCmd As Long) As Long
Private Declare Function apiGetWindowLong Lib "user32" Alias _
"GetWindowLongA" (ByVal Hwnd As Long, ByVal _
nIndex As Long) As Long
Private Declare Function apiGetWindowText Lib "user32" Alias _
"GetWindowTextA" (ByVal Hwnd As Long, ByVal _
lpString As String, ByVal aint As Long) As Long
Private Const mcGWCHILD = 5
Private Const mcGWHWNDNEXT = 2
Private Const mcGWLSTYLE = (-16)
Private Const mcWSVISIBLE = &H10000000
Private Const mconMAXLEN = 255
Dim NomFichier As String, Wk As Workbook
'------------------------------------------------------------------------------------------------------------
Sub Départ()
Dim OpenFileName As String
Dim FolderByDefault As String
Dim OpenFile As Workbook
'************* 2 VARIABLES À DÉFINIR*********************
'nom du fichier à rechercher
'ce qui est écrit dans la barre de titr du fichier.
NomFichier = "Feuil1 - Microsoft Excel"
'Le répertoire à ouvrir par défaut au besoin mais non obligatoire
FolderByDefault = "c:UsersProfileDocuments" '"D:"
'************************************************************
Call Liste_Application
'Wk représennte le fichier déjà ouvert identifier
'au nom de "MonFichier"
If Not Wk Is Nothing Then
If FolderByDefault <> "" Then ChDrive Left(FolderByDefault, 1)
FileDialog_SelectionFichier OpenFileName, FolderByDefault
If OpenFileName <> "" Then
Set OpenFile = Workbooks(OpenFileName)
End If
End If
'ICI tu as 2 variables Workbook représentant chaque fichier.
'Wk = "Le fichier créé par l'entreprise"
'OpenFile = le fichier que tu viens de choisir et d'ouvrir
'Le reste de ta macro...
End Sub
'------------------------------------------------------------------------------------------------------------
Private Function Liste_Application()
Dim lngx As Long, lngLen As Long
Dim lngStyle As Long, strCaption As String
lngx = apiGetDesktopWindow()
lngx = apiGetWindow(lngx, mcGWCHILD)
Do While Not lngx = 0
strCaption = fGetCaption(lngx)
lngx = apiGetWindow(lngx, mcGWHWNDNEXT)
Loop
End Function
'------------------------------------------------------------------------------------------------------------
Private Function fGetCaption(Hwnd As Long) As String
Dim strBuffer As String
Dim intCount As Integer, DerLig As Long
Dim Wk As Workbook, SonNom As String
strBuffer = String$(mconMAXLEN - 1, 0)
intCount = apiGetWindowText(Hwnd, strBuffer, mconMAXLEN)
If intCount > 0 Then
fGetCaption = Left$(strBuffer, intCount)
If InStr(1, fGetCaption, MonFichier, vbTextCompare) > 0 Then
Set Wk = Workbooks(MonFichier)
End If
End If
End Function
'------------------------------------------------------------------------------------------------------------
Private Sub FileDialog_SelectionFichier(OpenFileName As String, _
Optional FolderByDefault As String)
Dim X As Long
With Application.FileDialog(msoFileDialogFilePicker)
'Définit un titre pour la boîte de dialogue
.Title = "Le tite de la fenêtre:"
'Autorise la multi-sélection
.AllowMultiSelect = False
'Le répertoire par défaut
.InitialFileName = FolderByDefault
'Efface les filtres existants.
.Filters.Clear
'Définit une liste de filtres pour le champ "Type de fichiers".
.Filters.Add "Classeurs Excel", "*.xls; *.xlsx; *.xlsm"
.FilterIndex = 1
'Indique le type d'affichage dans la boîte de dialogue
'(exemple visualisation des propriétés)
.InitialView = msoFileDialogViewProperties
'Affiche la boîte de dialogue
.Show
'Boucle sur les fichiers sélectionnés
For X = 1 To .SelectedItems.Count
OpenFileName = .SelectedItems(X)
Next
End With
End Sub
'------------------------------------------------------------------------------------------------------------
Bonjour Isabelle,
Essaie ceci. Exécute la procédure "Départ"
À mettre le tout dans un module standard.
Private Declare Function apiGetClassName Lib "user32" Alias _
"GetClassNameA" (ByVal Hwnd As Long, _
ByVal lpClassname As String, _
ByVal nMaxCount As Long) As Long
Private Declare Function apiGetDesktopWindow Lib "user32" Alias _
"GetDesktopWindow" () As Long
Private Declare Function apiGetWindow Lib "user32" Alias _
"GetWindow" (ByVal Hwnd As Long, _
ByVal wCmd As Long) As Long
Private Declare Function apiGetWindowLong Lib "user32" Alias _
"GetWindowLongA" (ByVal Hwnd As Long, ByVal _
nIndex As Long) As Long
Private Declare Function apiGetWindowText Lib "user32" Alias _
"GetWindowTextA" (ByVal Hwnd As Long, ByVal _
lpString As String, ByVal aint As Long) As Long
Private Const mcGWCHILD = 5
Private Const mcGWHWNDNEXT = 2
Private Const mcGWLSTYLE = (-16)
Private Const mcWSVISIBLE = &H10000000
Private Const mconMAXLEN = 255
Dim NomFichier As String, Wk As Workbook
'------------------------------------------------------------------------------------------------------------
Sub Départ()
Dim OpenFileName As String
Dim FolderByDefault As String
Dim OpenFile As Workbook
'************* 2 VARIABLES À DÉFINIR*********************
'nom du fichier à rechercher
'ce qui est écrit dans la barre de titr du fichier.
NomFichier = "Feuil1 - Microsoft Excel"
'Le répertoire à ouvrir par défaut au besoin mais non obligatoire
FolderByDefault = "c:UsersProfileDocuments" '"D:"
'************************************************************
Call Liste_Application
'Wk représennte le fichier déjà ouvert identifier
'au nom de "MonFichier"
If Not Wk Is Nothing Then
If FolderByDefault <> "" Then ChDrive Left(FolderByDefault, 1)
FileDialog_SelectionFichier OpenFileName, FolderByDefault
If OpenFileName <> "" Then
Set OpenFile = Workbooks(OpenFileName)
End If
End If
'ICI tu as 2 variables Workbook représentant chaque fichier.
'Wk = "Le fichier créé par l'entreprise"
'OpenFile = le fichier que tu viens de choisir et d'ouvrir
'Le reste de ta macro...
End Sub
'------------------------------------------------------------------------------------------------------------
Private Function Liste_Application()
Dim lngx As Long, lngLen As Long
Dim lngStyle As Long, strCaption As String
lngx = apiGetDesktopWindow()
lngx = apiGetWindow(lngx, mcGWCHILD)
Do While Not lngx = 0
strCaption = fGetCaption(lngx)
lngx = apiGetWindow(lngx, mcGWHWNDNEXT)
Loop
End Function
'------------------------------------------------------------------------------------------------------------
Private Function fGetCaption(Hwnd As Long) As String
Dim strBuffer As String
Dim intCount As Integer, DerLig As Long
Dim Wk As Workbook, SonNom As String
strBuffer = String$(mconMAXLEN - 1, 0)
intCount = apiGetWindowText(Hwnd, strBuffer, mconMAXLEN)
If intCount > 0 Then
fGetCaption = Left$(strBuffer, intCount)
If InStr(1, fGetCaption, MonFichier, vbTextCompare) > 0 Then
Set Wk = Workbooks(MonFichier)
End If
End If
End Function
'------------------------------------------------------------------------------------------------------------
Private Sub FileDialog_SelectionFichier(OpenFileName As String, _
Optional FolderByDefault As String)
Dim X As Long
With Application.FileDialog(msoFileDialogFilePicker)
'Définit un titre pour la boîte de dialogue
.Title = "Le tite de la fenêtre:"
'Autorise la multi-sélection
.AllowMultiSelect = False
'Le répertoire par défaut
.InitialFileName = FolderByDefault
'Efface les filtres existants.
.Filters.Clear
'Définit une liste de filtres pour le champ "Type de fichiers".
.Filters.Add "Classeurs Excel", "*.xls; *.xlsx; *.xlsm"
.FilterIndex = 1
'Indique le type d'affichage dans la boîte de dialogue
'(exemple visualisation des propriétés)
.InitialView = msoFileDialogViewProperties
'Affiche la boîte de dialogue
.Show
'Boucle sur les fichiers sélectionnés
For X = 1 To .SelectedItems.Count
OpenFileName = .SelectedItems(X)
Next
End With
End Sub
'------------------------------------------------------------------------------------------------------------
Bonjour Isabelle,
Essaie ceci. Exécute la procédure "Départ"
À mettre le tout dans un module standard.
Private Declare Function apiGetClassName Lib "user32" Alias _
"GetClassNameA" (ByVal Hwnd As Long, _
ByVal lpClassname As String, _
ByVal nMaxCount As Long) As Long
Private Declare Function apiGetDesktopWindow Lib "user32" Alias _
"GetDesktopWindow" () As Long
Private Declare Function apiGetWindow Lib "user32" Alias _
"GetWindow" (ByVal Hwnd As Long, _
ByVal wCmd As Long) As Long
Private Declare Function apiGetWindowLong Lib "user32" Alias _
"GetWindowLongA" (ByVal Hwnd As Long, ByVal _
nIndex As Long) As Long
Private Declare Function apiGetWindowText Lib "user32" Alias _
"GetWindowTextA" (ByVal Hwnd As Long, ByVal _
lpString As String, ByVal aint As Long) As Long
Private Const mcGWCHILD = 5
Private Const mcGWHWNDNEXT = 2
Private Const mcGWLSTYLE = (-16)
Private Const mcWSVISIBLE = &H10000000
Private Const mconMAXLEN = 255
Dim NomFichier As String, Wk As Workbook
'------------------------------------------------------------------------------------------------------------
Sub Départ()
Dim OpenFileName As String
Dim FolderByDefault As String
Dim OpenFile As Workbook
'************* 2 VARIABLES À DÉFINIR*********************
'nom du fichier à rechercher
'ce qui est écrit dans la barre de titr du fichier.
NomFichier = "Feuil1 - Microsoft Excel"
'Le répertoire à ouvrir par défaut au besoin mais non obligatoire
FolderByDefault = "c:UsersProfileDocuments" '"D:"
'************************************************************
Call Liste_Application
'Wk représennte le fichier déjà ouvert identifier
'au nom de "MonFichier"
If Not Wk Is Nothing Then
If FolderByDefault <> "" Then ChDrive Left(FolderByDefault, 1)
FileDialog_SelectionFichier OpenFileName, FolderByDefault
If OpenFileName <> "" Then
Set OpenFile = Workbooks(OpenFileName)
End If
End If
'ICI tu as 2 variables Workbook représentant chaque fichier.
'Wk = "Le fichier créé par l'entreprise"
'OpenFile = le fichier que tu viens de choisir et d'ouvrir
'Le reste de ta macro...
End Sub
'------------------------------------------------------------------------------------------------------------
Private Function Liste_Application()
Dim lngx As Long, lngLen As Long
Dim lngStyle As Long, strCaption As String
lngx = apiGetDesktopWindow()
lngx = apiGetWindow(lngx, mcGWCHILD)
Do While Not lngx = 0
strCaption = fGetCaption(lngx)
lngx = apiGetWindow(lngx, mcGWHWNDNEXT)
Loop
End Function
'------------------------------------------------------------------------------------------------------------
Private Function fGetCaption(Hwnd As Long) As String
Dim strBuffer As String
Dim intCount As Integer, DerLig As Long
Dim Wk As Workbook, SonNom As String
strBuffer = String$(mconMAXLEN - 1, 0)
intCount = apiGetWindowText(Hwnd, strBuffer, mconMAXLEN)
If intCount > 0 Then
fGetCaption = Left$(strBuffer, intCount)
If InStr(1, fGetCaption, MonFichier, vbTextCompare) > 0 Then
Set Wk = Workbooks(MonFichier)
End If
End If
End Function
'------------------------------------------------------------------------------------------------------------
Private Sub FileDialog_SelectionFichier(OpenFileName As String, _
Optional FolderByDefault As String)
Dim X As Long
With Application.FileDialog(msoFileDialogFilePicker)
'Définit un titre pour la boîte de dialogue
.Title = "Le tite de la fenêtre:"
'Autorise la multi-sélection
.AllowMultiSelect = False
'Le répertoire par défaut
.InitialFileName = FolderByDefault
'Efface les filtres existants.
.Filters.Clear
'Définit une liste de filtres pour le champ "Type de fichiers".
.Filters.Add "Classeurs Excel", "*.xls; *.xlsx; *.xlsm"
.FilterIndex = 1
'Indique le type d'affichage dans la boîte de dialogue
'(exemple visualisation des propriétés)
.InitialView = msoFileDialogViewProperties
'Affiche la boîte de dialogue
.Show
'Boucle sur les fichiers sélectionnés
For X = 1 To .SelectedItems.Count
OpenFileName = .SelectedItems(X)
Next
End With
End Sub
'------------------------------------------------------------------------------------------------------------
Bonjour Isabelle,
Essaie ceci. Exécute la procédure "Départ"
À mettre le tout dans un module standard.
Private Declare Function apiGetClassName Lib "user32" Alias _
"GetClassNameA" (ByVal Hwnd As Long, _
ByVal lpClassname As String, _
ByVal nMaxCount As Long) As Long
Private Declare Function apiGetDesktopWindow Lib "user32" Alias _
"GetDesktopWindow" () As Long
Private Declare Function apiGetWindow Lib "user32" Alias _
"GetWindow" (ByVal Hwnd As Long, _
ByVal wCmd As Long) As Long
Private Declare Function apiGetWindowLong Lib "user32" Alias _
"GetWindowLongA" (ByVal Hwnd As Long, ByVal _
nIndex As Long) As Long
Private Declare Function apiGetWindowText Lib "user32" Alias _
"GetWindowTextA" (ByVal Hwnd As Long, ByVal _
lpString As String, ByVal aint As Long) As Long
Private Const mcGWCHILD = 5
Private Const mcGWHWNDNEXT = 2
Private Const mcGWLSTYLE = (-16)
Private Const mcWSVISIBLE = &H10000000
Private Const mconMAXLEN = 255
Dim NomFichier As String, Wk As Workbook
'------------------------------------------------------------------------------------------------------------
Sub Départ()
Dim OpenFileName As String
Dim FolderByDefault As String
Dim OpenFile As Workbook
'************* 2 VARIABLES À DÉFINIR*********************
'nom du fichier à rechercher
'ce qui est écrit dans la barre de titr du fichier.
NomFichier = "Feuil1 - Microsoft Excel"
'Le répertoire à ouvrir par défaut au besoin mais non obligatoire
FolderByDefault = "c:UsersProfileDocuments" '"D:"
'************************************************************
Call Liste_Application
'Wk représennte le fichier déjà ouvert identifier
'au nom de "MonFichier"
If Not Wk Is Nothing Then
If FolderByDefault <> "" Then ChDrive Left(FolderByDefault, 1)
FileDialog_SelectionFichier OpenFileName, FolderByDefault
If OpenFileName <> "" Then
Set OpenFile = Workbooks(OpenFileName)
End If
End If
'ICI tu as 2 variables Workbook représentant chaque fichier.
'Wk = "Le fichier créé par l'entreprise"
'OpenFile = le fichier que tu viens de choisir et d'ouvrir
'Le reste de ta macro...
End Sub
'------------------------------------------------------------------------------------------------------------
Private Function Liste_Application()
Dim lngx As Long, lngLen As Long
Dim lngStyle As Long, strCaption As String
lngx = apiGetDesktopWindow()
lngx = apiGetWindow(lngx, mcGWCHILD)
Do While Not lngx = 0
strCaption = fGetCaption(lngx)
lngx = apiGetWindow(lngx, mcGWHWNDNEXT)
Loop
End Function
'------------------------------------------------------------------------------------------------------------
Private Function fGetCaption(Hwnd As Long) As String
Dim strBuffer As String
Dim intCount As Integer, DerLig As Long
Dim Wk As Workbook, SonNom As String
strBuffer = String$(mconMAXLEN - 1, 0)
intCount = apiGetWindowText(Hwnd, strBuffer, mconMAXLEN)
If intCount > 0 Then
fGetCaption = Left$(strBuffer, intCount)
If InStr(1, fGetCaption, MonFichier, vbTextCompare) > 0 Then
Set Wk = Workbooks(MonFichier)
End If
End If
End Function
'------------------------------------------------------------------------------------------------------------
Private Sub FileDialog_SelectionFichier(OpenFileName As String, _
Optional FolderByDefault As String)
Dim X As Long
With Application.FileDialog(msoFileDialogFilePicker)
'Définit un titre pour la boîte de dialogue
.Title = "Le tite de la fenêtre:"
'Autorise la multi-sélection
.AllowMultiSelect = False
'Le répertoire par défaut
.InitialFileName = FolderByDefault
'Efface les filtres existants.
.Filters.Clear
'Définit une liste de filtres pour le champ "Type de fichiers".
.Filters.Add "Classeurs Excel", "*.xls; *.xlsx; *.xlsm"
.FilterIndex = 1
'Indique le type d'affichage dans la boîte de dialogue
'(exemple visualisation des propriétés)
.InitialView = msoFileDialogViewProperties
'Affiche la boîte de dialogue
.Show
'Boucle sur les fichiers sélectionnés
For X = 1 To .SelectedItems.Count
OpenFileName = .SelectedItems(X)
Next
End With
End Sub
'------------------------------------------------------------------------------------------------------------
Bonjour Isabelle,
Essaie ceci. Exécute la procédure "Départ"
À mettre le tout dans un module standard.
Private Declare Function apiGetClassName Lib "user32" Alias _
"GetClassNameA" (ByVal Hwnd As Long, _
ByVal lpClassname As String, _
ByVal nMaxCount As Long) As Long
Private Declare Function apiGetDesktopWindow Lib "user32" Alias _
"GetDesktopWindow" () As Long
Private Declare Function apiGetWindow Lib "user32" Alias _
"GetWindow" (ByVal Hwnd As Long, _
ByVal wCmd As Long) As Long
Private Declare Function apiGetWindowLong Lib "user32" Alias _
"GetWindowLongA" (ByVal Hwnd As Long, ByVal _
nIndex As Long) As Long
Private Declare Function apiGetWindowText Lib "user32" Alias _
"GetWindowTextA" (ByVal Hwnd As Long, ByVal _
lpString As String, ByVal aint As Long) As Long
Private Const mcGWCHILD = 5
Private Const mcGWHWNDNEXT = 2
Private Const mcGWLSTYLE = (-16)
Private Const mcWSVISIBLE = &H10000000
Private Const mconMAXLEN = 255
Dim NomFichier As String, Wk As Workbook
'------------------------------------------------------------------------------------------------------------
Sub Départ()
Dim OpenFileName As String
Dim FolderByDefault As String
Dim OpenFile As Workbook
'************* 2 VARIABLES À DÉFINIR*********************
'nom du fichier à rechercher
'ce qui est écrit dans la barre de titr du fichier.
NomFichier = "Feuil1 - Microsoft Excel"
'Le répertoire à ouvrir par défaut au besoin mais non obligatoire
FolderByDefault = "c:UsersProfileDocuments" '"D:"
'************************************************************
Call Liste_Application
'Wk représennte le fichier déjà ouvert identifier
'au nom de "MonFichier"
If Not Wk Is Nothing Then
If FolderByDefault <> "" Then ChDrive Left(FolderByDefault, 1)
FileDialog_SelectionFichier OpenFileName, FolderByDefault
If OpenFileName <> "" Then
Set OpenFile = Workbooks(OpenFileName)
End If
End If
'ICI tu as 2 variables Workbook représentant chaque fichier.
'Wk = "Le fichier créé par l'entreprise"
'OpenFile = le fichier que tu viens de choisir et d'ouvrir
'Le reste de ta macro...
End Sub
'------------------------------------------------------------------------------------------------------------
Private Function Liste_Application()
Dim lngx As Long, lngLen As Long
Dim lngStyle As Long, strCaption As String
lngx = apiGetDesktopWindow()
lngx = apiGetWindow(lngx, mcGWCHILD)
Do While Not lngx = 0
strCaption = fGetCaption(lngx)
lngx = apiGetWindow(lngx, mcGWHWNDNEXT)
Loop
End Function
'------------------------------------------------------------------------------------------------------------
Private Function fGetCaption(Hwnd As Long) As String
Dim strBuffer As String
Dim intCount As Integer, DerLig As Long
Dim Wk As Workbook, SonNom As String
strBuffer = String$(mconMAXLEN - 1, 0)
intCount = apiGetWindowText(Hwnd, strBuffer, mconMAXLEN)
If intCount > 0 Then
fGetCaption = Left$(strBuffer, intCount)
If InStr(1, fGetCaption, MonFichier, vbTextCompare) > 0 Then
Set Wk = Workbooks(MonFichier)
End If
End If
End Function
'------------------------------------------------------------------------------------------------------------
Private Sub FileDialog_SelectionFichier(OpenFileName As String, _
Optional FolderByDefault As String)
Dim X As Long
With Application.FileDialog(msoFileDialogFilePicker)
'Définit un titre pour la boîte de dialogue
.Title = "Le tite de la fenêtre:"
'Autorise la multi-sélection
.AllowMultiSelect = False
'Le répertoire par défaut
.InitialFileName = FolderByDefault
'Efface les filtres existants.
.Filters.Clear
'Définit une liste de filtres pour le champ "Type de fichiers".
.Filters.Add "Classeurs Excel", "*.xls; *.xlsx; *.xlsm"
.FilterIndex = 1
'Indique le type d'affichage dans la boîte de dialogue
'(exemple visualisation des propriétés)
.InitialView = msoFileDialogViewProperties
'Affiche la boîte de dialogue
.Show
'Boucle sur les fichiers sélectionnés
For X = 1 To .SelectedItems.Count
OpenFileName = .SelectedItems(X)
Next
End With
End Sub
'------------------------------------------------------------------------------------------------------------
Bonjour Isabelle,
Essaie ceci. Exécute la procédure "Départ"
À mettre le tout dans un module standard.
Private Declare Function apiGetClassName Lib "user32" Alias _
"GetClassNameA" (ByVal Hwnd As Long, _
ByVal lpClassname As String, _
ByVal nMaxCount As Long) As Long
Private Declare Function apiGetDesktopWindow Lib "user32" Alias _
"GetDesktopWindow" () As Long
Private Declare Function apiGetWindow Lib "user32" Alias _
"GetWindow" (ByVal Hwnd As Long, _
ByVal wCmd As Long) As Long
Private Declare Function apiGetWindowLong Lib "user32" Alias _
"GetWindowLongA" (ByVal Hwnd As Long, ByVal _
nIndex As Long) As Long
Private Declare Function apiGetWindowText Lib "user32" Alias _
"GetWindowTextA" (ByVal Hwnd As Long, ByVal _
lpString As String, ByVal aint As Long) As Long
Private Const mcGWCHILD = 5
Private Const mcGWHWNDNEXT = 2
Private Const mcGWLSTYLE = (-16)
Private Const mcWSVISIBLE = &H10000000
Private Const mconMAXLEN = 255
Dim NomFichier As String, Wk As Workbook
'------------------------------------------------------------------------------------------------------------
Sub Départ()
Dim OpenFileName As String
Dim FolderByDefault As String
Dim OpenFile As Workbook
'************* 2 VARIABLES À DÉFINIR*********************
'nom du fichier à rechercher
'ce qui est écrit dans la barre de titr du fichier.
NomFichier = "Feuil1 - Microsoft Excel"
'Le répertoire à ouvrir par défaut au besoin mais non obligatoire
FolderByDefault = "c:UsersProfileDocuments" '"D:"
'************************************************************
Call Liste_Application
'Wk représennte le fichier déjà ouvert identifier
'au nom de "MonFichier"
If Not Wk Is Nothing Then
If FolderByDefault <> "" Then ChDrive Left(FolderByDefault, 1)
FileDialog_SelectionFichier OpenFileName, FolderByDefault
If OpenFileName <> "" Then
Set OpenFile = Workbooks(OpenFileName)
End If
End If
'ICI tu as 2 variables Workbook représentant chaque fichier.
'Wk = "Le fichier créé par l'entreprise"
'OpenFile = le fichier que tu viens de choisir et d'ouvrir
'Le reste de ta macro...
End Sub
'------------------------------------------------------------------------------------------------------------
Private Function Liste_Application()
Dim lngx As Long, lngLen As Long
Dim lngStyle As Long, strCaption As String
lngx = apiGetDesktopWindow()
lngx = apiGetWindow(lngx, mcGWCHILD)
Do While Not lngx = 0
strCaption = fGetCaption(lngx)
lngx = apiGetWindow(lngx, mcGWHWNDNEXT)
Loop
End Function
'------------------------------------------------------------------------------------------------------------
Private Function fGetCaption(Hwnd As Long) As String
Dim strBuffer As String
Dim intCount As Integer, DerLig As Long
Dim Wk As Workbook, SonNom As String
strBuffer = String$(mconMAXLEN - 1, 0)
intCount = apiGetWindowText(Hwnd, strBuffer, mconMAXLEN)
If intCount > 0 Then
fGetCaption = Left$(strBuffer, intCount)
If InStr(1, fGetCaption, MonFichier, vbTextCompare) > 0 Then
Set Wk = Workbooks(MonFichier)
End If
End If
End Function
'------------------------------------------------------------------------------------------------------------
Private Sub FileDialog_SelectionFichier(OpenFileName As String, _
Optional FolderByDefault As String)
Dim X As Long
With Application.FileDialog(msoFileDialogFilePicker)
'Définit un titre pour la boîte de dialogue
.Title = "Le tite de la fenêtre:"
'Autorise la multi-sélection
.AllowMultiSelect = False
'Le répertoire par défaut
.InitialFileName = FolderByDefault
'Efface les filtres existants.
.Filters.Clear
'Définit une liste de filtres pour le champ "Type de fichiers".
.Filters.Add "Classeurs Excel", "*.xls; *.xlsx; *.xlsm"
.FilterIndex = 1
'Indique le type d'affichage dans la boîte de dialogue
'(exemple visualisation des propriétés)
.InitialView = msoFileDialogViewProperties
'Affiche la boîte de dialogue
.Show
'Boucle sur les fichiers sélectionnés
For X = 1 To .SelectedItems.Count
OpenFileName = .SelectedItems(X)
Next
End With
End Sub
'------------------------------------------------------------------------------------------------------------
Bonsoir Isa belle
<<ensuite j'ouvre Cogniview et je crée à partir de là le fichier "Feuil1 -
Vraiment par hasard, ce ce serait pas dans Cogniview qu'il faut paramétrer le
chemin du nouveau fichier que tu crées?
Jacquouille
Bonsoir Isa belle
<<ensuite j'ouvre Cogniview et je crée à partir de là le fichier "Feuil1 -
Vraiment par hasard, ce ce serait pas dans Cogniview qu'il faut paramétrer le
chemin du nouveau fichier que tu crées?
Jacquouille
Bonsoir Isa belle
<<ensuite j'ouvre Cogniview et je crée à partir de là le fichier "Feuil1 -
Vraiment par hasard, ce ce serait pas dans Cogniview qu'il faut paramétrer le
chemin du nouveau fichier que tu crées?
Jacquouille
Regarde ce fichier : http://cjoint.com/?DLict4SOPJt
Regarde ce fichier : http://cjoint.com/?DLict4SOPJt
Regarde ce fichier : http://cjoint.com/?DLict4SOPJt