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
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+
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 !