Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 problème de macros entre excel windows et mac

Traouck

XLDnaute Junior
Bonjour,
J'avais créer un fichier plein de macro sous Windows. J'essaie de le transférer sur mac, mais tout ne marche pas bien.
visiblement j'ai un soucis avec ces 4 lignes. Sauf que je ne me souviens plus de comment marche tout ça. Quelqu'un aurait une idée?
Merci a vous
Cédric
 

Pièces jointes

  • excel.jpg
    795 KB · Affichages: 48

patricktoulon

XLDnaute Barbatruc
bonjour

si ton truc marchait avant moi je suis la reine d’Angleterre
pour info commandbarpopup c'est pour des sub menu ou menu contextuelce sont des commandbars
je te pointe l'erreur en image puisque tu envoie des images
ne pas confondre commandbarpopup et msocontrolpopup c'est pas la même chose

 

patricktoulon

XLDnaute Barbatruc
VB:
Sub test()
      Dim objpopup As CommandBarControl
    Dim objbtn As CommandBarButton
    
    With Application.CommandBars("Worksheet Menu Bar")
        resetbar
        Set objpopup = .Controls.Add(msoControlPopup, 1, True)
        With objpopup
            .Caption = "MyFunction"

            Set objbtn = .Controls.Add(msoControlButton)
            With objbtn
                .Caption = "formula Entry"
                .OnAction = ""
                .Style = msoButtonCaption
            End With


            Set objbtn = .Controls.Add(msoControlButton)
            With objbtn
                .Caption = "value Entry"
                .OnAction = ""
                .Style = msoButtonCaption
            End With

        End With
    End With
End Sub

Sub resetbar()
Application.CommandBars("Worksheet Menu Bar").Reset
End Sub
 

Dan

XLDnaute Barbatruc
Bonjour,

En supplément au mention de RyuAutodidacte, attention aux accents !
Pas d'accents dans vos noms comme j'en vois dans votre vue "Liste déroulante". C'est une mauvaise habitude de vouloir respecter la ponctuation avec VBA. Pensez Anglais uniquement.
Evitez les espaces dans les noms de feuilles, les points aussi. Préférez leur des tirets ou souligné
Si vous avez des userforms cela ne fonctionnera qu'avec Excel 2011
Sinon transformer les menus avec MAC..., veillez bien à mettre la seconde macro resetbar proposée par PatrickToulon.
Ce serait intéressant de savoir quelle version de excel vous avez.
Cordialement

 

Traouck

XLDnaute Junior
Bonjour,
Le fichier est assez ancien et entre temps j'ai un peu oublié l'utilisation des macros...
j'ai essayé ce code, mais ça bloque au niveau du texte en jaune.
J'ai mis la sub resetbar dans un module.
J'ai le pack office 365
Par contre ce fichier tourne sans soucis sur windows...



Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
With Application.CommandBars("Worksheet Menu Bar")
On Error Resume Next
.Controls("&MyFunction").Delete
On Error GoTo 0
End With
End Sub

Private Sub Workbook_Open()
Dim objPopUp As CommandBarPopup
Dim objBtn As CommandBarButton

With Application.CommandBars("Worksheet Menu Bar")
resetbar
Set objPopUp = .Controls.Add(msoControlPopup, 1, True)
With objPopUp
.Caption = "MyFunction"

Set objBtn = .Controls.Add(msoControlButton)
With objBtn
.Caption = "formula Entry"
.OnAction = ""
.Style = msoButtonCaption
End With


Set objBtn = .Controls.Add(msoControlButton)
With objBtn
.Caption = "value Entry"
.OnAction = ""
.Style = msoButtonCaption
End With

End With
End With

Call SelectAccueil

End Sub
 

Traouck

XLDnaute Junior
Et voila l'original qui ne marche pas...
J'ai bien conscience d'être un boulet avec vba, et je suis désolé de na pas pouvoir aider plus sur ce site.
Par contre si vous avez besoin de conseils en bâtiment, je peux vous aider!
Merci d'avance.
Cédric

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
With Application.CommandBars("Worksheet Menu Bar")
On Error Resume Next
.Controls("&MyFunction").Delete
On Error GoTo 0
End With
End Sub

Private Sub Workbook_Open()
Dim objPopUp As CommandBarPopup
Dim objBtn As CommandBarButton
With Application.CommandBars("Worksheet Menu Bar")
On Error Resume Next
.Controls("MyFunction").Delete
On Error GoTo 0
Set objPopUp = .Controls.Add( _
Type:=msoControlPopup, _
before:=.Controls.Count, _
temporary:=True)
End With
objPopUp.Caption = "&MyFunction"
Set objBtn = objPopUp.Controls.Add
With objBtn
.Caption = "Formula Entry"
.OnAction = "Cbm_Active_Formula"
.Style = msoButtonCaption
End With
Set objBtn = objPopUp.Controls.Add
With objBtn
.Caption = "Value Entry"
.OnAction = "Cbm_Active_Value"
.Style = msoButtonCaption
End With
Set objBtn = objPopUp.Controls.Add
With objBtn
.Caption = "Formula Selection"
.OnAction = "Cbm_Formula_Select"
.Style = msoButtonCaption
End With
Set objBtn = objPopUp.Controls.Add
With objBtn
.Caption = "Value Selection"
.OnAction = "Cbm_Value_Select"
.Style = msoButtonCaption
End With

Call SelectAccueil

End Sub
 

patricktoulon

XLDnaute Barbatruc
re
bonsoir
il me semble t'avoir déjà dis que ceci
Dim objPopUp As CommandBarPopup
n’était pas bon!!!!
!même si sur Windows l'erreur n'est pas relevée
il est fort possible que sur Mac vba soit moins souple avec ce genre d'erreur

donc
Dim objPopUp As CommandBarControl
 

Traouck

XLDnaute Junior
Effectivement, je ne sais pas pourquoi le copier collé à merder et je ne l'ai pas vu ou ne sais pas ce que j'ai fait. Vivement les vacances...
Mais ça bloque toujours au même endroit... même avec un CommandBarControl


Private Sub Workbook_Open()
Dim objPopUp As CommandBarControl
Dim objBtn As CommandBarButton

With Application.CommandBars("Worksheet Menu Bar")
resetbar
Set objPopUp = .Controls.Add(msoControlPopup, 1, True)
With objPopUp
.Caption = "MyFunction"

Set objBtn = .Controls.Add(msoControlButton)
With objBtn
.Caption = "formula Entry"
.OnAction = ""
.Style = msoButtonCaption
End With


Set objBtn = .Controls.Add(msoControlButton)
With objBtn
.Caption = "value Entry"
.OnAction = ""
.Style = msoButtonCaption
End With

End With
End With

Call SelectAccueil

End Sub
 

Discussions similaires

Réponses
9
Affichages
762
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…