Ogham_1
Messages postés4Date d'inscriptiondimanche 30 octobre 2005StatutMembreDernière intervention23 novembre 2007
-
4 oct. 2007 à 23:15
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 2018
-
8 oct. 2007 à 22:56
dim Bonjour as string
J'aurais une petite question, dans le cadre de mon taff, j'ai a developpé une macro en VBA.
La macro contient une form avec different control dessus, label/calendrier etc.
J'ai rajouter la possibilite de pouvoir réduire la form, comme n'importe quelle fenetre Windows avec :
[
Dim hWnd As Long
hWnd = FindWindowA(vbNullString, Me.Caption)
SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) Or &H20000
]
Dans ma form, j'ai la possibilite d'ouvrir un classeur sur un lecteur réseau. Ca s'ouvre y'a pas de souci, je le vois bien.
Le souci est que cela fonctionne correctement (bizare ça). mais que je n'arrive pas a reprendre "la main" sur le classeur Excel.
1- ma fenêtre form est bien reduite en bas a gouche du bureau
2- je vois bien mon classeur ouvert
3- je n'ais pas la main sur le dit classeur !!!
--------------------------
Seconde question
[
utilisateur = Environ("USERPROFILE")
MsgBox utilisateur 'juste pour verifier que le path est bon
Kill ("%utilisateur%" & "\Desktop\Status.txt")
]
Il ne trouve pas le repertoire c:\winnt\profiles
une idée ?
la msgbox elle renvoie bien la bonne valeur
---------------------------
Et une petite troisieme parce que j'abuse
[
Dim Ouvrirfichiers As Variant
ChDir ("lien ...")
Ouvrirfichiers = Application.GetOpenFilename("classeur Microsoft excel, *.xls", FilterIndex:=2, Title:="Fichier inventaires", MultiSelect:=True)
'MsgBox Ouvrirfichiers
'ChDir "lien ..."
]
Je fais ca trois fois dans ma form, pour charger 3 classeurs à différent endroits, avec lien ...\ qui change , une seule me propose le bon endroit par défaut dans ma boite de dialogue Fichier.
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 5 oct. 2007 à 20:16
salut,
Option Explicit
'
Private Const SW_MINIMIZE = 6&
Private Const CSIDL_DESKTOP = &H0
'
Private Type SHITEMID
cb As Long
abID As Byte
End Type
Private Type ITEMIDLIST
mkid As SHITEMID
End Type
'
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As
Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Private Declare Function SHGetSpecialFolderLocation Lib
"shell32.dll" (ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As ITEMIDLIST) As Long
'
'
'
Private Sub Question1()
' normal que ton code
BLOQUE la fenêtre
' tu ne dois pas modifier
le style de la fenêtre mais juste la réduire!
Dim lhwnd As Long
lhwnd = FindWindow(vbNullString, Me.Caption)
ShowWindow lhwnd, SW_MINIMIZE
End Sub
'
'
'
Private Sub Question2()
' normal que ton fichier soit introuvable, tout le monde n'a pas
le bureau nommé "desktop"
' de plus utilisateur
était une variable, donc pas de "%VARIABLE%", syntaxe pas connue par
KILL
' tu dois juste récupérer proprement le
vrai chemin!
Dim lRet As Long, sPath As String, IDL As ITEMIDLIST
lRet = SHGetSpecialFolderLocation(0, CSIDL_DESKTOP,
IDL)
If lRet = 0 Then
sPath = Space(512)
Call SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal sPath)
sPath = Left$(sPath, InStr(sPath, Chr$(0)) -
1)
If Not (RightB$(sPath, 2) = "") Then sPath = sPath & ""
Call Kill(sPath & "Status.txt")
End If
End Sub
'
'
'
Private Sub Question3()
' là désolé je pige
pas....
' pis surtout je fais pas de VBA
:p
End Sub
++
PCPT [AFCK]
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Ogham_1
Messages postés4Date d'inscriptiondimanche 30 octobre 2005StatutMembreDernière intervention23 novembre 2007 8 oct. 2007 à 15:12
Re, deja merci bien de te pencher sur mes soucis, si tu ne faios pas de VBA.
1)
Alors j'ai donc tester ta solution pour ma premiere question :
=> au lancement de ma macro, il me met une erreur 400, apparement ma form serait deja lancée, alors que bien evidemment je n'ai rien.
en modifiant un petit peu, je n'ai plus l'erreur en revanche ma form est cachée, bien chargée mais non visible.
et le classeur est toujours indisponible. grr
2)
le dossier desktop existe forcement, car les GPO en place dans l'entreprise creer un dossier contenant le profil dans
c:\WINNT\Profiles
Car avec le code actuel, cela fonctionne avec mon login, mais pas sur une autre machine.
Cela n'as pas bcp d'interet car la macro ne devrait pas etre "deployéeé, masi c'etait juste histoire de rentre l'appli" portable sur la machine voisine sans rentrer dans la macro...
Si il y'a que ca qui ne fonctionne pas, je peux le faire
3)
Je suis passe par un autre moyen pour aller chercher mes fichiers, en utilisant les common dialog. tu n'as qu'a les parametrer, repertoire filtre etc.
cependant, une fois mon CD_test.showopen fait, (bon repertoire & bon filtre), il ne m'ouvre pas le classeur en arriere. la fenetre se referme et il ne se passe rien
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 8 oct. 2007 à 22:56
salut Ogham_1
1)
erreur 400 : [vamsgmodshowingform.htm Feuille déjà affichée; affichage modal
impossible]
ton erreur est au lancement de la macro, un rapport avec mon code apporté?
le lances-tu (minimized) avant qu'il n'y ait eu un SHOW ?
classeur toujours indisponible après tres "bidouilles"... beh faudrait savoir quelles sont-elles ^^
idem pour le handle trouvé, il faut être certain de celui que tu veux, celui d'un formulaire ou de l'application?....
2)
ok si GPO. encore faut il-être certain de "desktop" ou "bureau"
que te donnais le msgbox utilisateur? que te retourne mon code?
çà ne change rien néanmoins qu fait qu'une variable est appelée par
variable
et non
"%variable%"
ne pas confondre une variable VB/VBA et une variable d'environnement Win ;)
3)
compris...
beh là j'vais pas pouvoir t'aider (tu me diras j'peux lancer excel.... ^^)
pareil, que te retourne msgbox ouvrirfichiers?
en VB6 il faut relever l'erreur pour le CommonDialog, n'y a t'il pas une syntaxe équivalente pour VBA?
que t'indique l'aide en ligne ou locale avec GetOpenFilename?
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp