Mon Workbook_open ne fonctionne pas

re,

Dan, quand tu dis macros désactivées, tu veux parler de la case à cocher "alerte macros" ?

Quand cette case est cochée, j'ai donc à l'ouverture le message "activer ou non les macros"

quand j'ouvre un autre fichier, la barre "rapidos" est bien dans la liste barre d'outils.

j'ai fais çà :

- Macro désactivées tu ouvres ton fichier
- Dans affichage / barre d'outils, supprime la barre RAPIDOS
- Enregistre ton fichier puis réouvre le fichier avec tes macros activées 

çà marche, mais si j'enregistre, ferme et re-ouvre çà ne marche plus !

tu y comprend quelque chose !!!

Claude.

12pasqui-v4.xlsm (42.69 Ko)

Re,

Ton pb est qu'en fermant ton fichier, il faut supprimer la barre RAPIDOS et pas la mettre à FALSE.

Dans PRIVATE...BEFORECLOSE, essaye --> Application.CommandBars("RAPIDOS").delete

Là tu comprends pourquoi bien souvent on peut être embêté par des fichiers réalisés par des "apprentis sorciers" (comme dirait un ami sur un autre forum°)

Dans ton cas, l'utilisateur verra continuellement cette barre dans excel même sans utiliser ton fichier. Il sera pas content quand il le verra...

Amicalement

Dan

re,

écoute Dan, je n'y comprend rien !!!!!

j'ai fais comme tu m'as dit et çà marche !

n'empêche que le "ThisWorbook" ne fonctionne toujours pas.

j'ai mis un MsgBox("ouverture") dans le Open

j'ai mis un MsgBox("fermeture") dans le close + le delete

Bon la barre s'affiche, je suppose que c'est parce-quelle est attachée au fichier.

C'est quand même délicat ces barres personnalisées !

et si j'avais besoin de lancer une macro à l'ouverture ??

est-ce la procédure normale, ou un dépannage ?

Pourrait-tu regarder dans "Excel Applications", "Jaquette DVD" pour voir comment se comporte la barre perso ?

Je te remercie pour ton dévouement

à te lire.....Claude.

Re,

As-tu fait ce fichier sous XL97 et si oui, y a-t-il des macros qui s'exécutent à l'ouverture.

Genre AUto open ou autre ?

Merci

Dan

bonsoir Dan et au forum,

oui c'est un gros fichier de 500K fait sous excel97 avec macros en excel4 et

avec auto_ouvrir (excel4)

Mais je viens de finir la ré-écriture en VBA, j'ai donc fais le ménage,

il n'y a plus de macros ni de noms de macros en rapport avec excel4 (j'ai vérifié avec

liste noms)

amicalement........Claude.

Bonjour,

J'ai regardé ton fichier jaquette.

Il y a une barre d'outils qui apparaît même si l'on désactive les macros et qui ne s'enlève pas à la sortie. Ce qui embêtant pour celui qui utilise ton fichier.

Heureusement que l'on peut l'enlever manuellement !

En fait c'est ce que je t'ai expliqué dans ce fil, ce sont tes macros dans THisworkbook qui ne sont pas adaptées.

Je pense que tu devrais retirer ce fichier pour éviter le désaroi de l'utilisateur et ce, le temps de remettre le nouveau que tu es en train de faire.

A te relire

Dan

Bonsoir Dan et au forum,

Tu parle du fichier "jaquette" ? mais je ne sais pas comment le retiré.

Dis-moi STP , exactement ce qu'il faut modifier, çà me servira d'exemple !

Pour l'autre fichier "Rapidos",j'ai envie de le transféré sur un nouveau classeur et de lui

donné un autre nom. Quand pense-tu ?

amicalement

Claude.

Salut le forum

J'avais tous mis dans la ficelle https://forum.excel-pratique.com/viewtopic.php?t=3315 dans le fichier à télécharger.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call SupprimerMabarre
End Sub

Private Sub Workbook_Open()
Call AjoutMaBarre
End Sub
Nad-Dan a écrit :

Là tu comprends pourquoi bien souvent on peut être embêté par des fichiers réalisés par des "apprentis sorciers" (comme disait un ami sur un autre forum)

Il faut toujours supprimer une barre à la femeture d'excel, pour ne pas mettre en

colère les non-initiés qui se retrouve avec une barre ajoutée qui ne veux plus disparaitre.

Je pourrait mettre un fichier qui supprime toutes tes barres, et ne les réactivent pas à la

fermeture, tu serais pas vraiment content à la ré-ouverture de ton Excel.

Mytå

Re le forum

Juste à lire la ficelle de Yves sur https://forum.excel-pratique.com/viewtopic.php?t=3593

Une barre récalcitrante....

Mytå

Bonjour,

Myta, tu es on ne peut plus clair et surtout de rappeler le fil de Yves.

De mon coté, je prévois souvent d'appeler en premier la macro qui supprime une barre perso avant de la reconstruire. Du genre :

Call SupprimerMabarre

Call ajoutbarre

A noter qu'il faut prévoir une gestion d'erreur au cas où la barre n'est pas présente lors de l'exécution de la macro supprimerbarre.

Amicalement

Dan

Bonjour au forum,

Pas facile tout çà ! , j'ai vraiment du mal sur ce coup là !!!

Je vois (mais de très loin) ce que vous voulez dire.

J'ai essayé ceci : dans le ThisWorkbook

Private Sub Workbook_Open()
'''''''Application.CommandBars("DVD2").Visible = True
Call AjoutMaBarre
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'''''''Application.CommandBars("DVD2").Visible = False
Call SupprimerMabarre
End Sub

et ceci dans un module

Option Explicit

Public Sub AjoutMaBarre()
    Dim vMaBarre As CommandBar
    Dim vNomMaBarre As String

    Set vMaBarre = CommandBars.Add(Name:="DVD2", Position:=msoBarTop, temporary:=False) ''''Plante ici
        vMaBarre.Visible = True
    Set vMaBarre = Nothing
End Sub

Public Sub SupprimerMabarre()
    On Error GoTo Sortie_Sur_Erreur
    Application.CommandBars("DVD2").Delete
Exit Sub

Sortie_Sur_Erreur:
    MsgBox ("La barre d'outils n'existe pas")
End Sub

mais çà plante à l'ouverture, au Set vMaBarre.....

Suis-je sur la bonne voie ??

à vous lire, bien amicalement

Claude.

Re,

Dans THISWORKBOOK c'est bon.

Dans le module, mets ceci :

Option Explicit
Public Sub AjoutMaBarre()
'Macro par DAN pour Dubois le 30/01/08
    Dim vMaBarre As CommandBar
Dim vMaBarrebutton As CommandBarButton
    Call SupprimerMabarre
    Set vMaBarre = CommandBars.Add(Name:="DVD2", Position:=msoBarTop, temporary:=True)
    Set vMaBarrebutton = vMaBarre.Controls.Add(msoControlButton, , , , True)
    With vMaBarrebutton 'définir les boutons
        .Caption = "&tata"
        .FaceId = 2
        .Style = msoButtonIconAndCaption
        .OnAction = ThisWorkbook.Name & "!DVD"
    End With
vMaBarre.Visible = True
End Sub

Public Sub SupprimerMabarre()
    On Error Resume Next
    Application.CommandBars("DVD2").Delete
    On Error GoTo 0
End Sub

Maintenant, il faut bien sûr recréer les boutons qui sont dans ta barre puisqu'à chaque reprise elle sera supprimée. le plnatage venait de là.

Je t'ai mis un exemple dans la macro.

Amicalement

Dan

re,

Je crois commencer à comprendre !

on crée la barre à chaque ouverture, et on la supprime à la fermeture.

Dans mon cas, il me faut dans la barre, des "menus" contenant des boutons.

faut-il un With à chaque bouton ?

j'ai fait çà, mais c'est pas bon !

Option Explicit
Public Sub AjoutMaBarre()
'Macro par DAN pour Dubois le 30/01/08
    Dim vMaBarre As CommandBar
Dim vMaBarrebutton As CommandBarButton
    Call SupprimerMabarre
    Set vMaBarre = CommandBars.Add(Name:="DVD2", Position:=msoBarTop, temporary:=True)
    Set vMaBarrebutton = vMaBarre.Controls.Add(msoControlButton, , , , True)
    With vMaBarrebutton 'définir les boutons
        .Caption = "&Aide" '''nom du bouton
        .FaceId = 2
        .Style = msoButtonIconAndCaption
        .OnAction = ThisWorkbook.Name & "!aide" ''nom de la macro
 ''2ème bouton****************(qui écrase le 1er)
         .Caption = "&Disque" '''nom du bouton
        .FaceId = 3
        .Style = msoButtonIconAndCaption
        .OnAction = ThisWorkbook.Name & "!disque" ''nom de la macro
    End With
vMaBarre.Visible = True
End Sub

Et si j'ai une vingtaine de boutons ... çà fait un gros module !

Ai-je bien compris ???

à te lire Dan et merci pour ta patience.

Claude.

re,

J'ouvre un nouveau post "Barre d(outil", car là on s'éloigne du sujet initial.

à suivre

Claude.

re,

Tu dois créer tes boutons en répétant les instructions :

With vMaBarrebutton 
....
End with

A te relire

Dan

Bonjour au forum,

Conclusion du post : c'est facile de créer une barre d'outil, c'est galère pour s'en défaire !!

J'ai ouvert un nouveau fil "Barre d'outil perso" , pour apprendre à éviter les pièges.

Merci à tous

Claude.

Bonsoir au forum,

Peut-être une piste !!

dans ThisWorkbook , le Private Sub Workbook_Open () re-fonctionne quand je supprime

ces deux fonctions.

'Function semaine(jour)
        'semaine = DatePart("ww", jour)
'End Function
'Function Lundi_suivant(jour)
       ' Lundi_suivant = jour + 7 - WeekDay(jour) + 2
       ' If WeekDay(jour) = 1 Then Lundi_suivant = Lundi_suivant - 7
'End Function

elles sont placées dans un module avec d'autres macros.

Nota : quand j'étais en Excel4, ces fonctions étaient les seules en VBA

avez-vous une explication ?

peut-être changer de module ?

amicalement

Claude.

Bonsoir,

Dans THISWORKBOOK, tu as quoi comme code ?

A te relire

Dan

Salut Dan,

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Effacer_Menu
MsgBox ("fermeture")
End Sub

Private Sub Workbook_Open()
Créer_Menu
MsgBox ("ouverture")
End Sub

créer_menu

Sub Créer_Menu()
 With CommandBars.Add(Name:="Rapid", Position:=msoBarTop, temporary:=True)
        'Premier menu et sous-menu
            With .Controls.Add(msoControlPopup)
                .Caption = "PROCESS"
******là j'ai tout les boutons***
End With
Application.CommandBars("Rapid").Visible = True
End Sub

et pour fermer

Function Effacer_Menu()
    On Error Resume Next
    Application.CommandBars("Rapid").Delete
    On Error GoTo 0
End Function

c'est tout ce qu'il y a dans le ThisWorkbook

j'ai mis des MsgBox pour tester.

à te lire

Claude.

Re,

Pas sûr que cela solutionne ton pb mais dans la macro Function Effacer_Menu() essaye en remplaçant FUNCTION par SUB (au début et à la fin de la procédure)

Après Sub Créer_Menu(), mets EFFACER_MENU.

A te relire

Dan

Rechercher des sujets similaires à "mon workbook open fonctionne pas"