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 windowsAttention 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 pasCordialement
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
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 SubRem :
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
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.
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