Raccourci en vba

lagodille

XLDnaute Occasionnel
Bonjour à tous,

Ci-joint mon fichier dans lequel je sauvegarde dans le répertoire « DOSSIER » et crée un raccourci sur le bureau mais je n’arrive pas à supprimer l’ancien raccourci d'où une accumulation de raccourci sur le bureau non valables.

merci de votre aide

cordialement
Pascal
 

Pièces jointes

  • ONLINE 11-10-15 124230.xls
    41 KB · Affichages: 46

Staple1600

XLDnaute Barbatruc
Re : Raccourci en vba

Re


david84
je suis sous(encore sous Seven 64bits) et Excel 2013.
Toi, tu sur Excel 2010 d'après ton profil.
Ceci explique peut-être cela
Tant que je n'actualise pas l'affichage du Bureau (peut importe la manière) les raccourcis supprimés restent affichés
Dès que j'actualise seul reste le dernier raccourci créé.
 

Staple1600

XLDnaute Barbatruc
Re : Raccourci en vba

Re

david84
Et réécrit comme ceci (avec des endives ;) )
Ça marche mieux sur Windows X ?
Code:
Sub refresh()
Dim strDesktop
With CreateObject("WScript.Shell")
    strDesktop = .SpecialFolders("Desktop")
    .AppActivate strDesktop
    .Sleep 800
    .SendKeys "{F5}"
End With
End Sub
 

david84

XLDnaute Barbatruc
Re : Raccourci en vba

Non c'est pareil...ce qui m'interpelle dans ton code c'est le .Sleep 800 car quand je déclare l'objet WScript.Shell en early binding
Code:
Dim objSh As WshShell
Set objSh = New WshShell
de manière à bénéficier de l'autocomplétion, je trouve bien la propriété SpecialFolders ainsi que les méthodes
AppActivate et SendKeys mais pas Sleep...donc pour moi c'est logique que ça plante à cette ligne (Visual basic m'affiche d'ailleurs "propriété ou méthode non gérée par cet objet").
je testerai demain les 2 procédures sur une version Excel 2007 (donc par définition en 32 bits)/Windows7 pour voir ce que cela donne.
A+
 

Staple1600

XLDnaute Barbatruc
Re : Raccourci en vba

Bonsoir à tous


david84
Quel que soit la source, je trouve toujours des exemples utilisant Sleep
Code:
Sub refresh()
' Desktop.vbs - to Refresh Icons on the Desktop
' Example VBScript with Sleep and err.number
' Author Jeremy H. & Guy Thomas [url=http://computerperformance.co.uk/]Windows Server 2012, Exchange advice. Help solving computer problems. PowerShell VBScript[/url]
' Version 2.3 - October 2005
' -------------------------------------------------------------'
Dim WSHShell, strDesktop
Set WSHShell = WScript.CreateObject("WScript.Shell")
strDesktop = WSHShell.SpecialFolders("Desktop")
WSHShell.AppActivate strDesktop
WScript.Sleep 500
WSHShell.SendKeys "{F5}"
If Err.Number = 0 Then
     MsgBox "Desktop Refreshed "
     Else:
     MsgBox "Error " & Err.Number
     Err.Number = 0
End If
End Sub
Peut-être que cela vient du fait que c'est un script VBS et pas du VBA

Pourtant Sleep existe dans VBscript, non ?
Ce lien n'existe plus
 
Dernière édition:

david84

XLDnaute Barbatruc
Re : Raccourci en vba

Bonjour,
je viens de tester sur un ordinateur équipé d'Excel 2007/Windows7:
Code:
Sub CreerRaccourci()Dim raccourci As Object, bureau$, fLNK$
bureau = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\"
With ActiveWorkbook
    'Vérifie l'existence d'un chemin pour le classeur
    If .Name <> .FullName Then
    fLNK = Dir$(bureau & "ONLINE*xls" & ".lnk")
    If (Len(fLNK) > 0) Then
    Kill bureau & fLNK
    'refresh
    End If
    With CreateObject("WScript.Shell")
    Set raccourci = .CreateShortcut(bureau & ActiveWorkbook.Name & ".lnk")
    End With
    'Crée le raccourci sur le bureau Windows
    raccourci.TargetPath = .FullName
    raccourci.Save
    End If
End With
End Sub

en plaçant le refresh en commentaire et j'ai toujours un seul raccourci présent sur le bureau (donc là où j'ai enregistré le fichier que j'ai nommé ONLINE.xls) même si je lance la procédure plusieurs fois.

Quant au Sleep cela plante.
Mais ce que je ne comprends pas c'est pourquoi cela ne plante pas chez toi.

A+
 

Discussions similaires

Réponses
1
Affichages
244
Réponses
12
Affichages
358
Réponses
3
Affichages
1 K

Statistiques des forums

Discussions
312 431
Messages
2 088 367
Membres
103 833
dernier inscrit
Arno42160