Transfert sur MAC d'un développement VBA sur PC

Bonjour

J'ai fait un développement Excel VBA sur PC qui fonctionne très bien sur PC, mais quand je le transfert sur MAC il affiche une erreur dès le lancement du programme.

Quand je me met sur l'onglet "Développeur" sur la MAC je constate que toutes les lignes de code apparaissent mais les formulaires (User form) ont disparu, ce qui est vraisemblablement la cause de l'erreur.

Bonjour,

Je vous renvoie vers un autre fil, et plus précisément la réponse de @Dan : https://forum.excel-pratique.com/excel/utiliser-projet-excel-sous-mac-199926#p1249797

Bonjour,

Cela dépend de la version excel que vous allez utiliser.
Avec excel 2011, vous pouviez utiliser, créer et modifier les USF
Pour les versions suivantes, de mémoire les USF sont utilisables mais vous ne pouvez pas en modifier ou créer le code sauf si vous passez par excel windows

Attention avec tout ce qui est ActiveX qui ne fonctionneront pas

Avec excel mac, il y a parfois des adaptations à faire pour qu'un fichier fonctionne à la fois sur Windows et sur l'OS MAC
Si je peux voir votre fichier en question, je peux vous informer de ce qu'il faudrait modifier ou ce qui ne fonctionnera pas

Cordialement

Edit : attention que la version excel windows ne fonctionne pas sur Mac. Vous devrez acheter la version excel prévue pour fonctionner sur MAC

Bonjour Dan, merci de ta réponse rapide

L'excel utilisé est un excel récent (post 2011).

Dans mon processus de recherche de l'erreur j'ai fait un abstract du début de mon programme qui ne fait qu'ouvrir des UF en chargeant préalablement des données dans un fichier base de données, mais même cela ne fonctionne pas !

Merci de me proposer d'analyser mon code, mais je ne sais pas comment te l'adresser avec le fichier base de donnée associé

Bonjour,

Saboh12617 m'a informé de votre fil et c'est lui qui vous a répondu en mentionnant un post que j'avais écrit dans le cadre d'une autre demande

Je n'ai pas compris votre phrase --> (post 2011).
Si je lis bien votre version excel est 2011 sous MAC ?
Une fois sur excel vérifiez via --> Menu Pomme --> A propos de

j'ai fait un abstract du début de mon programme qui ne fait qu'ouvrir des UF en chargeant préalablement des données dans un fichier base de données, mais même cela ne fonctionne pas !

Puis-je voir votre code d'ouverture ?
Pour placer un code, utilisez les balises de code en cliquant sur l'icone </> dans la barre de menu et collez le code dans la fenêtre puis cliquez sur Insérer

Bonjour Dan

Sur le Mac, il s'agit d'un Excel récent (acheté il y a moins de 2 ans). C'est celui d'un ami, je n'ai pas le Mac sous la main, mais si c'est important je récupérerai les référence de la version d'Excel dès que possible

Le programme complet est beaucoup plus gros, mais compte tenu des difficultés que je rencontrais, j'ai expurgé la quasi totalité du code pour essayer d'identifier progressivement d'ou venait le problème. En fait, le problème apparait dès le premier step

S'agissant du code, c'est le suivant, il est associé à l'UF dont la photo est jointe :

Private Sub UserForm_Initialize()
    ' Initialisation des flags
    FlagBDD = False
    FlagSEJ = False

    ' Informations sur le classeur courant
    workbookinitial = ThisWorkbook.Name
    pathinitial = ThisWorkbook.Path

    ' Détection du séparateur de répertoire selon le système d'exploitation
    If InStr(1, pathinitial, "\") <> 0 Then
        sep = "\"
    ElseIf InStr(1, pathinitial, "/") <> 0 Then
        sep = "/"
    Else
        MsgBox "Impossible de déterminer le séparateur de chemin", vbCritical
        Exit Sub
    End If

    ' Se placer dans le bon répertoire
    ChDir pathinitial

    ' Ouverture de la base de données principale
    Call ouv

End Sub

Private Sub CommandButton1_Click()
    ' Ouverture du formulaire Destinations
    UFdestination.Show
End Sub

Private Sub CommandButton2_Click()
    ' Ouverture du formulaire Hôtels
    UFHotel.Show
End Sub

Private Sub CommandButton3_Click()
    ' Ouverture du formulaire Transporteurs
    UFTrans.Show
End Sub

Private Sub CommandButton4_Click()
    ' Ouverture du formulaire Clients
    UFClient.Show
End Sub

Private Sub CommandButton5_Click()
    ' Ouverture du formulaire Séjours
    UFSejour.Show
End Sub

Private Sub CommandButton6_Click()
    ' Fermeture propre de l'application
    On Error Resume Next
    Workbooks(FichBDD).Save
    Workbooks(FichBDD).Close
    Unload Me
    ThisWorkbook.Close SaveChanges:=False
End Sub

Private Sub CommandButton8_Click()
    ' Ouverture du formulaire Golfs
    UFGolf.Show
End Sub

Sub ouv()
    ' Ouverture du fichier de base de données
    PathBDD = pathinitial
    FichBDD = "Base de données RDS-D.xlsx"
    nomBDD = PathBDD & sep & FichBDD

    If Dir(nomBDD) = "" Then
        MsgBox "Fichier de base de données introuvable : " & nomBDD, vbExclamation
        Exit Sub
    End If

    Workbooks.Open Filename:=nomBDD, UpdateLinks:=False
    FlagBDD = True

    ' Tri éventuel des données
    On Error Resume Next

    On Error GoTo 0
End Sub
image

Bonjour,

Ok pour votre version mais au vu de ce que vous écriviez au début du fil, je ne pense pas que vous avez la version excel 2011 et ce d'autant que si acheté il y a deux ans il y a de forte chance que le processeur type ARM est un M1 ou M2. Attendons que vous regardiez.


Pour le code je ne vois rien d'anormal à première vue. Sinon dans la Private Sub UserForm_Initialize(), faites plutôt ceci

Private Sub UserForm_Initialize()
Dim sp as string
    ' Initialisation des flags
    FlagBDD = False
    FlagSEJ = False

    ' Informations sur le classeur courant
    workbookinitial = ThisWorkbook.Name
    pathinitial = ThisWorkbook.Path

    ' Détection du séparateur de répertoire selon le système d'exploitation
    sp = Application.PathSeparator

    ' Se placer dans le bon répertoire
    ChDir pathinitial

    ' Ouverture de la base de données principale
    Call ouv

End Sub

Rem :
1. Je ne comprends pas trop le pourquoi du chdir pathinitial. Sinon sur cette ligne il vous manque le séparateur (j'ai rajouté le sp). Mais, à moins que cela n'intervienne dans le code OUV, vous auriez aussi pu éviter la variable pathinial . Du coup la ligne chdir deviendrait ChDir Thisworkbook.path

2. Vos variables Flag, pathinitial, workbookinitial sont déclarées où dans le fichier ?
3. Ne manque-t-il une ligne entre le On error resume next et le On error Goto 0 ?

Suggestion : Sinon déjà si cela ne fonctionne pas vous pourriez vous passer de cette USF et mettre tous ces boutons sur une feuille nommée MENU par exemple. A l'ouverture, on met un code qui vous amène directement sur cette feuille.
Tous cela reste à voir avec le fichier bien entendu.

Cordialement

Merci beaucoup pour ces explication

Pour ce qui concerne les versions Excel, j'ai un Excel 2019 sur le PC sur lequel je développe, mon ami à acheté son PC il y a 4 ans, avec la version excel de l'époque, c'est pourquoi je dis qu'elle est post 2011

mon ami à acheté son PC il y a 4 ans, avec la version excel de l'époque, c'est pourquoi je dis qu'elle est post 2011

Ok j'ai compris. De ce que j'ai pu prendre connaissance il semble que les accès aux USF ne sont plus possible avec la version excel 2016. Par contre vous pouvez déjà faire ceci

1. Dans l'éditeur VBA allez dans les "Références" et assurez-vous que la ligne "Microsoft Visual Basic for Applications Extensibility 5.3" est bien cochée

e51ad4b6 b867 4608 9575 354339fea49c

2. Allez dans les préférences d'Excel, onglet "Sécurité" et vérifier que la ligne "Accès approuvé au modèle d'objet du projet VBA" est bien cochée.

23ac417e 5572 4e19 b449 07bb501132d6

A voir si cela règle déjà le souci de l'affichage de l'USF

Il se peut que l'USF apparaisse plus petite ce qui est normal sur MAC il faut les adapter à l'écran. Une sorte de zoom à faire comme pour les feuilles mais dans ce cas ce sera à adapter via code VBA. Mais dites-moi toujours si vous voyez les usf ou pas à l'ouverture

Rechercher des sujets similaires à "transfert mac developpement vba"