Lien Hypertexte

- as-tu essayé ceci ... https://forum.excel-pratique.com/viewtopic.php?p=806774#p806774

Je ne peux pas car je suis en 64 bits... Mais tu m'avais filé une application (.exe) liste_fenetres

qui m'écrit toute mes fenêtres dans le bloc note et me permet de connaitre exactement le nom.

- est-ce que SolidEdge ouvre autant de fenêtres que de fichiers ? (comme excel le ferait)

Malheureusement oui et non, il les ouvre comme "internet" disons. c’est plutot des onglets...

C'est pour cela que j'en ouvre 1 j'effectue ce que je veux, puis j'en ouvre un autre etc etc..

D'ailleurs je viens de recommencer mes sendkeys etc être sur que ça suis et là ça y est, ça fonctionne !!!!!!!!!

Par contre il l'effectue trop rapidement parfois je pense et du coup il saute des sendkeys. J'ai mis des tempos et nickel là j'ai fait 5fois de suite sans erreurs...

- est-ce que SolidEdge ouvre autant de fenêtres que de fichiers ? (comme excel le ferait)

Malheureusement oui et non, il les ouvre comme "internet" disons. c’est plutot des onglets...

C'est pour cela que j'en ouvre 1 j'effectue ce que je veux, puis j'en ouvre un autre etc etc..

D'ailleurs je viens de recommencer mes sendkeys etc être sur que ça suis et là ça y est, ça fonctionne !!!!!!!!!

Par contre il l'effectue trop rapidement parfois je pense et du coup il saute des sendkeys. J'ai mis des tempos et nickel là j'ai fait 5fois de suite sans erreurs...

du coup, le problème est résolu ! probablement aussi grâce à DoEvents()

- as-tu essayé ceci ... https://forum.excel-pratique.com/viewtopic.php?p=806774#p806774

Je ne peux pas car je suis en 64 bits... Mais tu m'avais filé une application (.exe) liste_fenetres

qui m'écrit toute mes fenêtres dans le bloc note et me permet de connaitre exactement le nom.

Justement, je l'ai adaptée aux versions 64bits et je voudrais savoir si cela fonctionne car je ne peux pas tester.

du coup, le problème est résolu ! probablement aussi grâce à DoEvents()

C'est même sûr car ça ne fonctionnait pas avant celà !

Justement, je l'ai adaptée aux versions 64bits et je voudrais savoir si cela fonctionne car je ne peux pas tester.

Du coup ce qui ne fonctionne pas c'est ceci qui ce trouve en rouge:

#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
    Private Declare Function IsWindowVisible Lib "USER32" (ByVal hwnd As Long) As Long

il me met le message erreur suivant:

"Le code contenu dans ce projet doit etre lus à jour pour pouvoir etre utilisé sur les systèmes 64 bits. Vérifiez et mettez à jour les instructions Declare, puis marquez-les avec l'attribut PtrSafe"

Bon ben ok ... pfttt

Mais si tu veux l'utiliser, garde uniquement ce qui est entre #else et #endif, cela devrait fonctionner (mais ce ne sera pas universel entre 32 et 64bits.

Du coup ce qui ne fonctionne pas c'est ceci qui ce trouve en rouge:

#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
    Private Declare Function IsWindowVisible Lib "USER32" (ByVal hwnd As Long) As Long

il me met le message erreur suivant:

"Le code contenu dans ce projet doit etre lus à jour pour pouvoir etre utilisé sur les systèmes 64 bits. Vérifiez et mettez à jour les instructions Declare, puis marquez-les avec l'attribut PtrSafe"

Peux-tu essayer en remplaçant
VBA7
par
win64
? Merci.

Alors, j'ai modifié le code :

#If Not VBA7 Then
    Declare PtrSafe Function GetWindowTextLength Lib "USER32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
    Declare PtrSafe Function GetWindowText Lib "USER32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
    Declare PtrSafe Function EnumWindows Lib "USER32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
    Private Declare PtrSafe Function IsWindowVisible Lib "USER32" (ByVal hwnd 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
    Declare PtrSafe Function IsWindowVisible Lib "USER32" (ByVal hwnd As LongPtr) As Boolean
#End If

Là ce n'est plus rouge et il ne me met plus le message d'erreur. Mais du coup il n'est plus en 32bits...

Lorsque je clic sur le bouton "TESTER LE VERSION VBA" il me met le msgbox "VBA7 is not ok"

Que je remplace VBA7 par Win64 c'est la même chose il me met toujours ce message.

Si je clic sur les autres bouton

j'ai une erreur ici:

AddressOf EnumWindowsProc, 0

Pour ce code :

Sub ListAppli()
Application.ScreenUpdating = False
    [A1].CurrentRegion.Offset(1, 0).ClearContents
    EnumWindows AddressOf EnumWindowsProc, 0
    Cells.Columns.AutoFit
Application.ScreenUpdating = True
End Sub

ok merci, je bâche, je reprendrai quand j'aurais accès à un office 64bits.

Bon en tout cas le Sujet "Lien Hypertexte" c'est bon ça fonctionne Merci Beaucoup Steelson !!

PS: Quel est le langage avec les #... c'est du C ?

PS: Quel est le langage avec les #... c'est du C ?

C'est du VBA, mais c'est courant en C en effet, il s'agit d'une directive "préprocesseur" permettant de mieux s'adapter à la machine (mac, win16/32/64, VBA6/7) ... https://docs.microsoft.com/en-us/office/vba/language/concepts/getting-started/compiler-constants
Rechercher des sujets similaires à "lien hypertexte"