Problème d'ouverture de fichier

Bonjours à tous,

Voulant ouvrir un fichier avec une macro l’erreur 5 s'affiche et me surligne un morceau de code du fichier en question et non du code qui fait ouvrir le fichier.

Ce code ( ci-joint)est utilisé pour créé un ruban.

Private Sub Workbook_Open()
    Dim CmdBar As CommandBar
    Dim Bouton As CommandBarButton

    'Agrandissement des icones
    Application.CommandBars.LargeButtons = False

    'Création de la barre d'outils nommée 'MaBarrePerso'
[color=#FF0000]Set CmdBar = Application.CommandBars.Add(Name:="Rechercher ", Position:=msoBarTop, Temporary:=True)[/color]

    'Ajout d'1 bouton dans la barre d'outils
    Set Bouton = CmdBar.Controls.Add(Type:=msoControlButton)
    With Bouton
        .Caption = "Rechercher"
        'Définit "l'image" qui va s'afficher sur le bouton
        .FaceId = 25
        'Définit quelle macro est associée au bouton.
        'Cette macro sera lancée à chaque fois que vous cliquez sur le bouton.
        .OnAction = "Cherche_suivant"
        .Style = msoButtonIconAndCaptionBelow
        .TooltipText = "Recherche dnas la colonne CLIENT le(s) nom(s) correspondant(s)"
    End With

        CmdBar.Visible = True

    'Création de la barre d'outils nommée 'MaBarrePerso'
    Set CmdBar = Application.CommandBars.Add(Name:="Suivant", Position:=msoBarTop, Temporary:=True)

    'Ajout d'1 bouton dans la barre d'outils
    Set Bouton = CmdBar.Controls.Add(Type:=msoControlButton)
    With Bouton
        .Caption = "Suivant"
        'Définit "l'image" qui va s'afficher sur le bouton
        .FaceId = 133
        'Définit quelle macro est associée au bouton.
        'Cette macro sera lancée à chaque fois que vous cliquez sur le bouton.
        .OnAction = "Cherche_suivant"
        .Style = msoButtonIconAndCaptionBelow
        .TooltipText = "Passe au prochain nom correspondant"
    End With

        CmdBar.Visible = True

    'Création de la barre d'outils nommée 'MaBarrePerso'
    Set CmdBar = Application.CommandBars.Add(Name:="    ", Position:=msoBarTop, Temporary:=True)

    'Ajout d'1 bouton dans la barre d'outils
    Set Bouton = CmdBar.Controls.Add(Type:=msoControlButton)
    With Bouton
        'Définit "l'image" qui va s'afficher sur le bouton
        .FaceId = 1
    End With

        CmdBar.Visible = True

        'Création de la barre d'outils nommée 'MaBarrePerso'
    Set CmdBar = Application.CommandBars.Add(Name:="Impression commande CVR", Position:=msoBarTop, Temporary:=True)

    'Ajout d'1 bouton dans la barre d'outils
    Set Bouton = CmdBar.Controls.Add(Type:=msoControlButton)
    With Bouton
        'Définit "l'image" qui va s'afficher sur le bouton
        .FaceId = 986
        'Définit quelle macro est associée au bouton.
        'Cette macro sera lancée à chaque fois que vous cliquez sur le bouton.
        .OnAction = "Impression_cde_CVR"
        .Caption = "Impression commande CVR"
        .Style = msoButtonIconAndCaptionBelow
        .TooltipText = "Ouvre le fichier Bon de commande CVR"
    End With

        CmdBar.Visible = True

    'Création de la barre d'outils nommée 'MaBarrePerso'
    Set CmdBar = Application.CommandBars.Add(Name:="Modification commande CVR", Position:=msoBarTop, Temporary:=True)

    'Ajout d'1 bouton dans la barre d'outils
    Set Bouton = CmdBar.Controls.Add(Type:=msoControlButton)
    With Bouton
        'Définit "l'image" qui va s'afficher sur le bouton
        .FaceId = 3272
        'Définit quelle macro est associée au bouton.
        'Cette macro sera lancée à chaque fois que vous cliquez sur le bouton.
        .OnAction = "Modif_cde_CVR"
        .Caption = "Modification commande CVR"
        .Style = msoButtonIconAndCaptionBelow
        .TooltipText = " "
    End With

        CmdBar.Visible = True

    'Création de la barre d'outils nommée 'MaBarrePerso'
    Set CmdBar = Application.CommandBars.Add(Name:="      ", Position:=msoBarTop, Temporary:=True)

    'Ajout d'1 bouton dans la barre d'outils
    Set Bouton = CmdBar.Controls.Add(Type:=msoControlButton)
    With Bouton
        'Définit "l'image" qui va s'afficher sur le bouton
        .FaceId = 1
    End With

        CmdBar.Visible = True

        'Création de la barre d'outils nommée 'MaBarrePerso'
    Set CmdBar = Application.CommandBars.Add(Name:="Impression ordre livraison (n°lot)", Position:=msoBarTop, Temporary:=True)

    'Ajout d'1 bouton dans la barre d'outils
    Set Bouton = CmdBar.Controls.Add(Type:=msoControlButton)
    With Bouton
        'Définit "l'image" qui va s'afficher sur le bouton
        .FaceId = 986
        'Définit quelle macro est associée au bouton.
        'Cette macro sera lancée à chaque fois que vous cliquez sur le bouton.
        .OnAction = "Cde_des_VR_lot"
        .Caption = "Impression ordre livraison (n°lot)"
        .Style = msoButtonIconAndCaptionBelow
        .TooltipText = "Imprime l'ordre de livraison en fonction des numéros de lots"
    End With

        CmdBar.Visible = True

        'Création de la barre d'outils nommée 'MaBarrePerso'
    Set CmdBar = Application.CommandBars.Add(Name:="Impression ordre livraison (n°commande)", Position:=msoBarTop, Temporary:=True)

    'Ajout d'1 bouton dans la barre d'outils
    Set Bouton = CmdBar.Controls.Add(Type:=msoControlButton)
    With Bouton
        'Définit "l'image" qui va s'afficher sur le bouton
        .FaceId = 986
        'Définit quelle macro est associée au bouton.
        'Cette macro sera lancée à chaque fois que vous cliquez sur le bouton.
        .OnAction = "Cde_des_VR_cde"
        .Caption = "Impression ordre livraison (n°commande)"
        .Style = msoButtonIconAndCaptionBelow
        .TooltipText = "Imprime l'ordre de livraison en fonction des numéros de commandes"
    End With

        CmdBar.Visible = True

        'Création de la barre d'outils nommée 'MaBarrePerso'
    Set CmdBar = Application.CommandBars.Add(Name:="Impression planning par jour", Position:=msoBarTop, Temporary:=True)

    'Ajout d'1 bouton dans la barre d'outils
    Set Bouton = CmdBar.Controls.Add(Type:=msoControlButton)
    With Bouton
        'Définit "l'image" qui va s'afficher sur le bouton
        .FaceId = 986
        'Définit quelle macro est associée au bouton.
        'Cette macro sera lancée à chaque fois que vous cliquez sur le bouton.
        .OnAction = "Impr_planning_jour"
        .Caption = "Impression planning par jour"
        .Style = msoButtonIconAndCaptionBelow
        .TooltipText = "Imprime le planning du jour en fonction de la semaine demandée"
    End With

        CmdBar.Visible = True

        'Création de la barre d'outils nommée 'MaBarrePerso'
    Set CmdBar = Application.CommandBars.Add(Name:="Impression du planning complet", Position:=msoBarTop, Temporary:=True)

    'Ajout d'1 bouton dans la barre d'outils
    Set Bouton = CmdBar.Controls.Add(Type:=msoControlButton)
    With Bouton
        'Définit "l'image" qui va s'afficher sur le bouton
        .FaceId = 986
        'Définit quelle macro est associée au bouton.
        'Cette macro sera lancée à chaque fois que vous cliquez sur le bouton.
        .OnAction = "Impr_du_Planning"
        .Caption = "Impression du planning complet"
        .Style = msoButtonIconAndCaptionBelow
        .TooltipText = "Imprime le planning complet de la semaine demandée"
    End With

        CmdBar.Visible = True

        'Création de la barre d'outils nommée 'MaBarrePerso'
    Set CmdBar = Application.CommandBars.Add(Name:="Impression CVR livraison", Position:=msoBarTop, Temporary:=True)

    'Ajout d'1 bouton dans la barre d'outils
    Set Bouton = CmdBar.Controls.Add(Type:=msoControlButton)
    With Bouton
        'Définit "l'image" qui va s'afficher sur le bouton
        .FaceId = 986
        'Définit quelle macro est associée au bouton.
        'Cette macro sera lancée à chaque fois que vous cliquez sur le bouton.
        .OnAction = "Impr_CVR_Livraison"
        .Caption = "Impression CVR livraison"
        .Style = msoButtonIconAndCaptionBelow
        .TooltipText = " "
    End With

        CmdBar.Visible = True

        'Création de la barre d'outils nommée 'MaBarrePerso'
    Set CmdBar = Application.CommandBars.Add(Name:="Impression commandes soldées", Position:=msoBarTop, Temporary:=True)

    'Ajout d'1 bouton dans la barre d'outils
    Set Bouton = CmdBar.Controls.Add(Type:=msoControlButton)
    With Bouton
        'Définit "l'image" qui va s'afficher sur le bouton
        .FaceId = 986
        'Définit quelle macro est associée au bouton.
        'Cette macro sera lancée à chaque fois que vous cliquez sur le bouton.
        .OnAction = "Cond_exp"
        .Caption = "Impression commandes soldées"
        .Style = msoButtonIconAndCaptionBelow
        .TooltipText = "Imprime la liste des commandes soldées de la semaine demandée"
    End With

        CmdBar.Visible = True

        'Création de la barre d'outils nommée 'MaBarrePerso'
    Set CmdBar = Application.CommandBars.Add(Name:="Visu_NC", Position:=msoBarTop, Temporary:=True)

    'Ajout d'1 bouton dans la barre d'outils
    Set Bouton = CmdBar.Controls.Add(Type:=msoControlButton)
    With Bouton
        'Définit "l'image" qui va s'afficher sur le bouton
        .FaceId = 931
        'Définit quelle macro est associée au bouton.
        'Cette macro sera lancée à chaque fois que vous cliquez sur le bouton.
        .OnAction = "Visu_NC"
        .Caption = "Visu_NC"
        .Style = msoButtonIconAndCaptionBelow
        .TooltipText = "Affiche le numéro NC recherché"
    End With

        CmdBar.Visible = True

End Sub

La ligne en rouge est la ligne surligné lors de l'erreur

EDIT:la phrase est en bleu bizarre vers le début

Bonjour arthur,

Ta ligne de code VBA est celle-ci :

Set CmdBar = Application.CommandBars.Add(Name:="Rechercher ", Position:=msoBarTop, Temporary:=True)

Je crois qu'il te suffit juste d'enlever l'espace en trop à la fin du nom ➯ Name:="Rechercher"

NB : dans un programme mis entre balises de code, n'utilise pas de mise en couleur, ça ne marche pas ; c'est pourquoi {color=#FF0000] et {/color] n'ont pas été interprétés et sont restés tels quels (j'ai mis { au lieu de [ pour ne pas déclencher la balise).

dhany

Merci de ta réponse,

j'ai tester mais cela ne fonctionne pas , a tu une autre idée ??

EDIT: La macro fonctionne mais bug seulement lors que le fichier est lancé par macro .... bizzare

Tu a écrit :

La macro fonctionne mais bug seulement lorsque le fichier est lancé par macro .... bizarre

Ta macro est la sub Workbook_Open (qui est normalement placée dans ThisWorkbook) ; donc elle s'exécute à l'ouverture du classeur (ou si on est sur ce code VBA et qu'on appuie sur F5) ➯ je ne comprends pas ta phrase : « le fichier est lancé par macro ».

Tu as demandé si j'ai une autre idée ; non, désolé : je laisse la suite à un autre intervenant.

dhany

Bonjour Arthur,

J'ai regardé ton code mais cela n'est pas suffisant.

Pourrais-tu fournir un bout de ton fichier(au moins les parties concernées par ton Workbook_Open) que je vois ce qu'il se passe stp ?

Bon...jour !

Les joyeusetés de 2016 ?

Avec 2016 les classeurs s'ouvrent dans des fenêtres distinctes... Donc si le classeur est lancé par un autre classeur il y a probablement un conflit entre le ruban de la fenêtre du "lanceur" et le classeur appelé...

Bon je dis ça j'ai rien dit... Suis pas un pro hein !

Faudrait peut être voir à embarquer directement le ruban personnalisé avec le classeur plutôt que tous ces salamalecs hérités des versions antérieures d'Excel : Depuis 2010 Excel offre de nombreuses possibilités de personnalisation du ruban sans passer par des scripts VBA...

Et chacun sait bien que la compatibilité remontante n'est pas le fort des versions successives d'Excel !

A+

bonjour galopin,

j'utilise un script VBA car le fichier est sur un serveur et les ruban personnalisés créé par l'outil d'Excel ne s'exportez pas automatiquement :/

,du coter du code rien n'est en faute et tu a raison, le code "BUG" seulement lorsque d'autre fichier excel sont ouvert . y a t'il un moyen d'attribuer le ruban à un fichier en particulier afin d'executer le code du ruban sur seulement le fichier voulu ?

Merci de ton aide

Cordialement.

Bonsoir,

Je suis certain qu'il existe au moins un moyen d'affecter un ruban perso à un classeur sans affecter les autres classeurs. Le hic c'est que ça intègre bien le visuel et le code VBA de tes macros mais la partie construction du ruban s'effectue à l'aide d'un logiciel externe :

Custom UI Editor For Microsoft Office

Je vais essayer de te passer un classeur vierge avec ta personnalisation : Prévoir un délai car j'ai un WE fort chargé !

A+

Bonjour

Finalement j'ai eu le temps de te bricoler un classeur identique avec menu intégré. (en pièce jointe)

Le menu s'affiche dans l'onglet "Perso" me dire si tu veux le nommer différemment sinon...

TAPUKA exporter toutes les feuilles et le VBA de ton ancien fichier (sauf le Workbook_Open : il n'y en a plus besoin)

Supprimer ma feuille1

Renommer le classeur à l'identique

et tu auras un fichier impeccable. (Compatibilité 2010 et supérieur...)

A+

[EDIT]

Si tu trouves ça trop compliqué, tu peux aussi faire le contraire :

Dans ton fichier supprimer (ou renommer) le Workbook_Open afin de le rendre inopérant...

Refermer le classeur.

Ouvrir mon classeur avec le logiciel cité plus haut (Custom UI...)

Copier la totalité du texte, sans rien y modifier pas une virgule ni un espace, ni un commentaire. Ce texte est alors dans le presse papier...

Ouvrir TON classeur avec le logiciel cité plus haut (Custom UI...) mon classeur doit alors se refermer sans sauvegarder aucune modification.

Coller le contenu du presse-papier dans ton classeur (la page blanche qui vient de s'ouvrir.

Sauvegarder et quitter (Custom UI...)

TON classeur a maintenant un menu personnalisé embarqué qui ne provoquera plus d'erreur. (si tu n'as fait aucune modification à l'occasion du copier/Coller !)

En cas d'erreur dans la mise en place du code du ribbon

2 hypothèses sont possible en fonction de vos paramètres avancés d'Excel :

Soit un message d'erreur s'affiche lors de l'ouverture, soit il n'y a aucun message, mais dans les 2 cas le ribbon personnalisé ne s'affiche pas.

A+

23arthur.xlsm (19.88 Ko)

Un petit up pour vous permettre de voir que j'ai rajouté quelques commentaires importants.

Merci beaucoup pour ton aide galopin01

et désoler du retard de réponse

Mieux vaut tard que jamais !

Rechercher des sujets similaires à "probleme ouverture fichier"