begin process at 2012 02 09 03:18:37
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

VBA

 > CHANGER ICONE, TITRE ET DIVERS D'UNE APPLI SOUS EXCEL

CHANGER ICONE, TITRE ET DIVERS D'UNE APPLI SOUS EXCEL


 Description

Cliquez pour voir la capture en taille normale
Il s'agit de montrer comment changer divers paramètres d'apparence d'une appli tournant sous excel mais où excel n'est plus apparent.
Le développement complet est sous VBA.
Le fichier excel complet est trop lourd pour être mis sur le site je mets donc le code du "This Workbook" si dessous .
Pour ce qui est des menus et le reste du code soit je l'envoie à qui me le demande, soit je le mets sur le site : en compressé 1.2 MO je ne sais pas si c'est possible.
L'image montre ce que l'on peut obtenir en sortie sur un projet réalisé...
jmluc@jmlucienvb.org

Source

  • XXXXXDébut du rajout Icone
  • Const FichierIco As String = "Logo JML.ico"
  • Private Declare Function FindWindowA Lib "User32" _
  • (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  • Private Declare Function GetClassLongA Lib "User32" _
  • (ByVal hWnd As Long, ByVal nIndex As Long) As Long
  • Private Declare Function SetClassLongA Lib "User32" _
  • (ByVal hWnd As Long, ByVal nIndex As Long, _
  • ByVal dwNewLong As Long) As Long
  • Private Declare Function LoadImageA Lib "User32" _
  • (ByVal hInst As Long, ByVal lpsz As String, ByVal un1 As Long, _
  • ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long) As Long
  • Dim HIcon As Long, hWnd As Long
  • 'XXXX Fin de la première partie
  • Private Sub Workbook_Open()
  • 'XXXXXXXX Partie Icone
  • Dim FIcone As String
  • FIcone = Me.Path & "\" & FichierIco 'Chemin vers l'icone si elle est dans le répertoire
  • If Dir$(FIcone) <> "" Then
  • hWnd = FindWindowA(vbNullString, Application.Caption)
  • HIcon = GetClassLongA(hWnd, -14)
  • SetClassLongA hWnd, -14, LoadImageA(0, FIcone, 1, 0, 0, &H10)
  • End If
  • 'XXXXXXXXX Fin partie icone
  • 'Interdiction du contrôle "X"
  • Application.OnKey "^x", ""
  • Application.OnKey "^v", ""
  • Application.WindowState = xlNormal
  • 'Application.EnableEvents = False
  • 'Application.Width = 760
  • 'Application.Height = 480
  • Call Mxx_A00_DisplayMainExcelFile
  • 'Paramétrage pour interdire la sortie
  • final_end = False
  • 'Etat de la scroll verticale
  • numberSCROLLROW = 1
  • EtatDuFractionnement = False
  • 'Ouvrir toujours sur la feuille SYSAttente
  • ActiveWorkbook.Sheets(11).Activate
  • End Sub
  • Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Excel.Range, Cancel As Boolean)
  • 'MsgBox "non"
  • Cancel = True
  • End Sub
  • Private Sub Workbook_Deactivate()
  • 'Pour interdire une ouverture intempestive d'un autre fichier dans l'instance
  • 'Ce programme fait appel à deux APIs qui sont déclarées dans le module MAPIs_Declare
  • On Error GoTo gestErr
  • If ActiveWorkbook.Name <> ThisWorkbook.Name Then
  • Nom = ActiveWorkbook.Name
  • FName = ActiveWorkbook.Path & "\" & Nom
  • ActiveWorkbook.Close SaveChanges:=False
  • FName = LongToShort(FName)
  • Tmp = ShellExecute(0, "open", "Excel.exe", FName, 0&, 1)
  • Exit Sub
  • End If
  • gestErr:
  • If Err.Number = 0 Or Err.Number = 91 Then Exit Sub
  • MsgBox Err.Number
  • End Sub
  • Private Sub Workbook_BeforeClose(Cancel As Boolean)
  • 'Application.EnableEvents = True
  • If final_end Then
  • 'XXXXX Partie Icone
  • If HIcon Then
  • SetClassLongA hWnd, -14, HIcon
  • End If
  • 'XXXXX Fin partie icone
  • 'A réactiver pour test
  • Call fin
  • Else
  • Cancel = True
  • 'ActiveWorkbook.Sheets(11).Activate
  • Application.WindowState = xlMinimized
  • End If
  • End Sub
XXXXXDébut du rajout Icone
Const FichierIco As String = "Logo JML.ico"

Private Declare Function FindWindowA Lib "User32" _
  (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function GetClassLongA Lib "User32" _
  (ByVal hWnd As Long, ByVal nIndex As Long) As Long

Private Declare Function SetClassLongA Lib "User32" _
  (ByVal hWnd As Long, ByVal nIndex As Long, _
  ByVal dwNewLong As Long) As Long

Private Declare Function LoadImageA Lib "User32" _
  (ByVal hInst As Long, ByVal lpsz As String, ByVal un1 As Long, _
  ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long) As Long

Dim HIcon As Long, hWnd As Long
'XXXX Fin de la première partie

Private Sub Workbook_Open()
    
    'XXXXXXXX Partie Icone
    Dim FIcone As String
    FIcone = Me.Path & "\" & FichierIco 'Chemin vers l'icone si elle est dans le répertoire
   
    If Dir$(FIcone) <> "" Then
    hWnd = FindWindowA(vbNullString, Application.Caption)
    HIcon = GetClassLongA(hWnd, -14)
    SetClassLongA hWnd, -14, LoadImageA(0, FIcone, 1, 0, 0, &H10)
    End If
    'XXXXXXXXX Fin partie icone
      
    
    'Interdiction du contrôle "X"
    Application.OnKey "^x", ""
    Application.OnKey "^v", ""
    
    Application.WindowState = xlNormal
    'Application.EnableEvents = False
    
    'Application.Width = 760
    'Application.Height = 480
    
    
    Call Mxx_A00_DisplayMainExcelFile
    
    'Paramétrage pour interdire la sortie
    final_end = False
    
    'Etat de la scroll verticale
    numberSCROLLROW = 1
        
    EtatDuFractionnement = False
    
    'Ouvrir toujours sur la feuille SYSAttente
    ActiveWorkbook.Sheets(11).Activate
    
End Sub

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Excel.Range, Cancel As Boolean)
'MsgBox "non"
 Cancel = True
End Sub

Private Sub Workbook_Deactivate()
    'Pour interdire une ouverture intempestive d'un autre fichier dans l'instance
    'Ce programme fait appel à deux APIs qui sont déclarées dans le module MAPIs_Declare
        
        On Error GoTo gestErr
    
    If ActiveWorkbook.Name <> ThisWorkbook.Name Then
        
        Nom = ActiveWorkbook.Name
        FName = ActiveWorkbook.Path & "\" & Nom
        
        ActiveWorkbook.Close SaveChanges:=False
           
        FName = LongToShort(FName)
                        
        Tmp = ShellExecute(0, "open", "Excel.exe", FName, 0&, 1)
        Exit Sub
     End If
     
gestErr:
        If Err.Number = 0 Or Err.Number = 91 Then Exit Sub
        
        MsgBox Err.Number
                   
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    'Application.EnableEvents = True
    
    If final_end Then
        
        'XXXXX Partie Icone
        If HIcon Then
            SetClassLongA hWnd, -14, HIcon
        End If
        'XXXXX Fin partie icone
        
    'A réactiver pour test
    Call fin
    Else
    
    Cancel = True
    
    'ActiveWorkbook.Sheets(11).Activate
    Application.WindowState = xlMinimized
      
    
    End If
    
End Sub



 Conclusion

n'hésitez pas à me contacter pour plus amples infos
jmlucienvb


 Sources de la même categorie

Source avec Zip GESTION PERSONNEL par oudlarbi
Source avec Zip Source avec une capture CALENDRIER EN VBA POUR EXCEL 2010 par nounou94
Source avec Zip Source avec une capture MANIPULER LES FENETRES ENFANT D'EXCEL par bigfish_le vrai
Source avec Zip Source avec une capture COLLECTION ID par Le Pivert
Source avec Zip Source avec une capture VBA MASQUE DE SAISIE NUMÉRIQUE par acive

Commentaires et avis

Commentaire de logedu le 13/06/2004 13:00:52

C'est intéressant de pouvoir personnaliser une appli excel.
Mais comment changer la barre de titre (elle reste "Microsoft Excel - nomfichier") ?


A part ça je relève plusieurs erreurs :

- 'l'icône dans la barre des tâche est bien changée mais
l'icône dans la barre de titre est remplacée par un rectangle blanc(et non la nouvelle icône)

-la variable final_end n'est pas déclarée comme publique, donc la procédure de sortie ne marche donc pas

-proc Open
1.appel à proc inconnue : Mxx_A00_DisplayMainExcelFile
2.propriété numberSCROLLROW n'existe pas
-&gt; d'abord activer la fenêtre (et non après)
-&gt; puis executer activewindow.SCROLLROW
3.la variable EtatduFractionnement n'a pas été définie

-proc Before close
appel à proc inconnue : fin

-proc workbook desactivate : les API LongToShort(FName) et ShellExecute(0, "open", "Excel.exe", FName, 0&, 1) n'ont pas été déclarées et donc on a un message d'erreur

Commentaire de jmlucienvb le 14/06/2004 08:21:31

Pour répondre aux questions posées :
- Icone : dans le prog il faut que l'icone soit dans le même répertoire que le prog xls. Il faut aussi que cela soit une icone bonne taille et .ico
il n'y a aucune raison que cela ne marche pas.
- Application.caption="Le nom que tu veux" change le titre
-Les procédures qui ne marche pas c'est essentiellement parce que ces quelques lignes sont extraites d'un prog plus complet non instalable sur ce site (taille)...
Comme je l'ai dit ceux qui le veulent suffit de me demander y'en a qui l'ont fait...:
jean-marc.lucien@acoss.fr
ou
jmluc@jmlucienvb.org

Commentaire de _kan_ le 16/12/2004 22:25:22

suberbe ton code !!

si tu peux m'envoyer le reste d'ailleurs !!

Commentaire de bimas le 24/02/2006 14:35:20

Merci pour ton aide. Le code marche parfaitement.

J'ai développé une application sous Excel VBA et je voudrai savoir aussi si il est possible au demarrage de l'application Excel de cacher que Excel demarre avant que mon application ne demarre. Car au demarrage on voit bien Excel demarre.

1/ mettre une page vide jusqu'au demarrage de mon application
2/ permettre de mettre une image ou autre données pendant le demarrage de l'application excel.


Merci d'avance

Commentaire de akh25 le 26/02/2009 00:53:33

Je serais aussi intéressé. Peux tu me l'envoyer par mail. Merci

Commentaire de bmcj le 06/07/2011 14:45:43

Bonjour.
svp, j'ai besoin du fichier complet traitant des menus en PJ sur bcgvia@gmail.com.
veuillez me l'envoyer le plus tôt possible.
Merci pour du bon code.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,229 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales