Visual Basic |
Bienvenue invité ( Connexion | Inscription )
Visual Basic |
31 Oct 2015, 11:43
Message
#1
|
|
Nouveau Membre Groupe : Membres Messages : 18 Inscrit : 15 Mar 2014 Membre no 189 751 |
Bonjour à tous,
Je suis à la fac et j'ai un cours d'informatique cette année, dans lequel on va devoir faire un projet avec VBA. J'ai Office 2016 et je n'arrive pas à utiliser VBA comme sur Windows. Dans Excel, je vais dans développeur, puis Visual Basic, mais je ne peux rien écrire. En plus de ça, les codes VBA sont tous écrits en colonne (une lettre par ligne) et impossible à modifier quand je prends des projets déjà faits. Quelqu'un pourrait-il m'éclairer ? Merci |
|
|
31 Oct 2015, 13:34
Message
#2
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 4 197 Inscrit : 1 Jan 2008 Lieu : Toulouse.cong Membre no 103 942 |
Excel 2016 n'est certainement pas la bonne application pour travailler en VBA. L'éditeur est plus que lamentable et les fonctionnalités très limitées. Franchement, pour ça il vaut nettement mieux installer une version Windows dans une machine virtuelle Parallels Desktop (ou similaire) ou, sinon, utiliser Excel 2011 qui a au moins un éditeur décent.
Selon ce que tu auras à faire, il est fort possible que l'utilisation d'une version Windows soit indispensable (poser la question au prof) car, souvent, les développeurs sous Windows ignorent totalement les versions Mac, les différences à prendre en compte dans l'écriture, et utilisent allègrement des fonctionnalités "Windows only". En tout état de cause, il y a un site très intéressant pour tout ce qui concerne les spécificités du travail sur les versions Mac, c'est celui de Ron de Bruin (très intéressant aussi pour tout ce qui est sous Windows, bien entendu). -------------------- |
|
|
31 Oct 2015, 13:50
Message
#3
|
|
Nouveau Membre Groupe : Membres Messages : 18 Inscrit : 15 Mar 2014 Membre no 189 751 |
Merci pour la réponse !
Par contre je comprends toujours pas pourquoi je ne peux rien taper sur VBA |
|
|
31 Oct 2015, 16:04
Message
#4
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 4 197 Inscrit : 1 Jan 2008 Lieu : Toulouse.cong Membre no 103 942 |
Par contre je comprends toujours pas pourquoi je ne peux rien taper sur VBA Y'a rien de particulier à comprendre. C'est juste les joies de cette nouvelle version d'Excel… en attendant que les futures mises à jour viennent remettre ça d'aplomb (?) -------------------- |
|
|
24 Nov 2015, 22:20
Message
#5
|
|
Nouveau Membre Groupe : Membres Messages : 18 Inscrit : 15 Mar 2014 Membre no 189 751 |
Merci pour la réponse, par contre c'est normal que j'ai le même problème sous Windows ? j'ai récupéré un projet vba et je peux pas lire le code.
Merci |
|
|
25 Nov 2015, 01:04
Message
#6
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 4 197 Inscrit : 1 Jan 2008 Lieu : Toulouse.cong Membre no 103 942 |
j'ai récupéré un projet vba et je peux pas lire le code. Le module est peut-être protégé... -------------------- |
|
|
25 Nov 2015, 20:33
Message
#7
|
|
Nouveau Membre Groupe : Membres Messages : 18 Inscrit : 15 Mar 2014 Membre no 189 751 |
Impossible d'y accéder du coup ?
je trouve ça bizarre, il me semble pas qu'il ait été bloqué, on me l'a donné pour avoir un modèle pour le projet que j'ai à faire.. Merci Même pour mon projet, fait sous Windows en cours, j'ai ça Ce message a été modifié par max9851 - 25 Nov 2015, 20:34.
Fichier(s) joint(s)
|
|
|
18 Jun 2016, 18:05
Message
#8
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 2 306 Inscrit : 27 Jul 2008 Lieu : Besançon Membre no 118 630 |
J'ai récupéré un fichier macro .xlam (avant en .xla) de mon Office 2011. Ca fonctionne sur Office 2016, mais j'ai eu du mal à trouver où foutre ce foutu fichier. J'ai fais "enrigistrer une macro" dans le classeur personnel de macro, comme ça j'ai pu trouver le dossier "~:Library:Containers:com.microsoft.Excel:Data:Library:Application Support:User:" et j'y ai mis ma macro "MacroVisualBasic.xlam".
Par contre, si je modifie le code, impossible d'enregistrer les modifications. Je suis con ou c'est un bug ? (ou les deux ) Deux solutions, soit je la modifie depuis l'autre Mac sous Office 2011, soit je recrée un fichier Macro, j'y recopie toutes mes macros, je fais mes modif, et je ré-enregistre en .xlam . -------------------- |
|
|
18 Jun 2016, 18:59
Message
#9
|
|
Oui ? Groupe : Membres Messages : 3 889 Inscrit : 24 Jun 2003 Lieu : BZH Membre no 8 224 |
On peut aussi faire des macros VBA dans Libre Office.
Si l'idée est de s'initier au VBA, c'est completement indiqué. Et encore une fois, j'ai du mal à comprendre comment un prof peut faire la promotion d'un logiciel propriétaire et payant -------------------- "Je sais que vous croyez comprendre ce que vous pensez que j'ai dit, mais je ne suis pas sûr que vous réalisiez que ce que vous avez entendu n'est pas ce que je pense."
(Alan Greenspan) |
|
|
19 Jun 2016, 00:10
Message
#10
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 4 197 Inscrit : 1 Jan 2008 Lieu : Toulouse.cong Membre no 103 942 |
.../... j'ai eu du mal à trouver où foutre ce foutu fichier. J'ai fais "enrigistrer une macro" dans le classeur personnel de macro, comme ça j'ai pu trouver le dossier "~:Library:Containers:com.microsoft.Excel:Data:Library:Application Support:User:" et j'y ai mis ma macro "MacroVisualBasic.xlam". Oui, ces emplacements (Containers, Group Containers) ainsi que certaines restrictions sont imposés par Apple aux développeurs pour pouvoir figurer dans l'App Store. Par contre, si je modifie le code, impossible d'enregistrer les modifications. Je suis con ou c'est un bug ? (ou les deux ) Curieux, de nouveau. Je ne rencontre pas de souci de ce point de vue, apparemment : il m'est demandé si je veux remplacer le classeur qui porte le même nom au même emplacement, mais c'est tout. Peut-être une nouvelle contrainte liée à El Capitan (je suis toujours sous Yosemite) ? Peut-être un bug dans la version que tu utilises (en tant que "Insider Fast", j'ai actuellement la version 15.24 (160624) mais je n'ai pas souvenir de changements sur ce genre de choses, du moins récemment) ? Au passage, un peu de lecture à propos de ces particularités d'emplacements sur le site de Ron de Bruin. -------------------- |
|
|
19 Jun 2016, 09:49
Message
#11
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 2 306 Inscrit : 27 Jul 2008 Lieu : Besançon Membre no 118 630 |
Je parle de modifier mon fichier .xlam Aliboron. Tu parles aussi d'un .xlam ou autre ? Car pour les autres ça marche, il me demande si je veux enregistrer de manière classique.J'ai la version 15.23 sortie il y a 2 ou 3 jours je crois.
Et je ne savais pas que Libre Office faisait tourner des macros ? Et encore moins des VisualBasic ! Ce message a été modifié par Tom25 - 19 Jun 2016, 09:51. -------------------- |
|
|
19 Jun 2016, 13:17
Message
#12
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 4 197 Inscrit : 1 Jan 2008 Lieu : Toulouse.cong Membre no 103 942 |
Je parle de modifier mon fichier .xlam Aliboron. Tu parles aussi d'un .xlam ou autre ? Car pour les autres ça marche, il me demande si je veux enregistrer de manière classique. J'ai la version 15.23 sortie il y a 2 ou 3 jours je crois. Il s'agit bien d'un .xlam. Mais en y revenant aujourd'hui, je vois ce que tu veux dire. Hier, j'avais laissé le classeur initial ouvert (donc pas seulement le projet VBA, mais aussi la feuille de calcul). Du coup, pas de souci pour l'enregistrer. Mais aujourd'hui, je constate ce que tu décris, puisqu'on n'a plus accès à la feuille de calcul (et donc plus au dialogue d'enregistrement). Même en passant par "Fenêtre" > "Afficher..." Faut que j'enquête ! Et je ne savais pas que Libre Office faisait tourner des macros ? Et encore moins des VisualBasic ! Pour ce qui est du VBA, il ne faut rien exagérer. Disons que ça permet vaguement de récupérer les macros VBA si elles ne sont pas trop élaborées (et on a un avertissement qui indique que toute modification ne pourra être enregistrée qu'au format OpenDocument). Mais, quand on connaît déjà les soucis de compatibilité Windows/Mac OS X en matière de VBA, on comprend bien que ça risque vite de coincer avec LibreOffice. LibreOffice a son propre langage de macros (LibreOffice Basic) mais permet aussi d'utiliser d'autres langages (Python, par exemple). -------------------- |
|
|
19 Jun 2016, 13:35
Message
#13
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 4 197 Inscrit : 1 Jan 2008 Lieu : Toulouse.cong Membre no 103 942 |
.../... Faut que j'enquête ! Bon, visiblement, les .xlam étant par principe destinés à être en lecture seule, ce ne devrait pas fondamentalement être un problème. Mais quand même, quand on est en phase de développement ou de correction, ça peut être pratique. Grâce à Jon Peltier, voilà une solution simple de contournement. En collant ce petit bout de code dans le module, on peut déclencher l'enregistrement : Code Sub SaveMe() ThisWorkbook.Save End Sub Problème : cette macro est du coup également enregistrée dans le module, ce qui peut présenter des inconvénients (elle reste disponible pour un utilisateur éventuellement moins expérimenté). Contournement du contournement, en collant cette ligne dans la fenêtre "Exécution" on peut déclencher un enregistrement sans souci : Code Workbooks("ClasseurMacro.xlam").Save Voilà, voilà... Ce message a été modifié par Aliboron - 19 Jun 2016, 13:43. -------------------- |
|
|
19 Jun 2016, 18:11
Message
#14
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 2 306 Inscrit : 27 Jul 2008 Lieu : Besançon Membre no 118 630 |
Merci de tes infos précieuses.
Code Sub SaveMe() ThisWorkbook.Save End Sub Donc je vais dans menu Outils -> Macro -> Macros… et je colle "SaveMe" et je clique "exécuter". C'est ça ? Ou alors, quand je lis ci-dessous, je colle ça "Workbooks("ClasseurMacro.xlam").Save" directement dans la fenêtre obtenu via menu Outils -> Macro -> Macros… et je n'ai pas besoin de coller le code que tu donnes dans le module ? en collant cette ligne dans la fenêtre "Exécution" on peut déclencher un enregistrement sans souci : Code Workbooks("ClasseurMacro.xlam").Save Voilà, voilà... Merci encore. Je vais faire 2 ou 3 tests, j'ai une sauvegarde de mon .xlam . Edit : Bon ben j'ai collé ta Procédure dans mon Module "ClasseurMacro.xlam" puis j'ai ouvert Outils -> Macro -> Macros… et j'ai collé "SaveMe". Ca a sauvegardé. Je ne comprends pas ce que tu appelles la fenêtre "Exécution" ? Ce message a été modifié par Tom25 - 19 Jun 2016, 18:18. -------------------- |
|
|
19 Jun 2016, 23:15
Message
#15
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 4 197 Inscrit : 1 Jan 2008 Lieu : Toulouse.cong Membre no 103 942 |
Donc je vais dans menu Outils -> Macro -> Macros… et je colle "SaveMe" et je clique "exécuter". C'est ça ? Oui, avec l'inconvénient que, désormais, cette procédure est incluse dans ton .xlam Ou alors, quand je lis ci-dessous, je colle ça "Workbooks("ClasseurMacro.xlam").Save" directement dans la fenêtre obtenu via menu Outils -> Macro -> Macros… et je n'ai pas besoin de coller le code que tu donnes dans le module ? Dans la fenêtre "Exécution", plus exactement, celle qui permet de tester les instructions en les faisant exécuter directement (il suffit de faire un retour chariot en fin de ligne). Je ne comprends pas ce que tu appelles la fenêtre "Exécution" ? Celle qui se trouve au-dessous des boutons de déboggage : [attachment=53078:Capture_d_____cran.png]
-------------------- |
|
|
20 Jun 2016, 08:01
Message
#16
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 2 306 Inscrit : 27 Jul 2008 Lieu : Besançon Membre no 118 630 |
Super merci, je me demandais pourquoi ils avaient laissé une zone en bas. Dans L'Éditeur AppleScript, il y a la même zone mais ça affiche le résultat du programme (ou le log des instructions du programme). Là je ne voyais rien défiler mais je n'avais pas cherché.
Merci, c'est impec -------------------- |
|
|
20 Jun 2016, 08:46
Message
#17
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 4 197 Inscrit : 1 Jan 2008 Lieu : Toulouse.cong Membre no 103 942 |
je me demandais pourquoi ils avaient laissé une zone en bas. C'était pourtant déjà l'emplacement par défaut de cette fenêtre "Exécution" dans le précédentes versions de l'éditeur VBA. Bon, ceci dit, elle n'est pas très connue et pas toujours très utilisée. Elle peut pourtant être bien utile pour des tests instantanés en cours de développement. D'un autre côté, il est sûr que la mouture 2016, pour ce qui est de développement, ce n'est pas vraiment un outil bien pratique (c'est le moins qu'on puisse dire). -------------------- |
|
|
28 Jun 2016, 20:03
Message
#18
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 2 306 Inscrit : 27 Jul 2008 Lieu : Besançon Membre no 118 630 |
J'ai placé mon fichier Macro.xlam dans le dossier où il enregistre par défaut le classeur de document personnel, soit :
Code StartupDisk:Users:moi:Library:Containers:com.microsoft.Excel:Data:Library:Application Support:User:MacroVisualBasic.xlam Ca marche pour les fonctions. Si j'utilise une fonction perso dans une feuille de calcul ça marche même quand j'ouvre le fichier depuis mon autre ordi avec Office 2011. Par contre, si je crée un bouton et que je lui affecte une macro ça marche sur le même Ordi. Par contre si j'ouvre mon classeur sur l'autre ordi avec Office 2011, là ça ne va pas car il mémorise non pas juste le nom de la macro, mais tout son path "StartupDisk:Users:moi:Library:Containers:com.microsoft.Excel:Data:Library:A pplication Support:User:MacroVisualBasic.xlam!MaMacro" et comme ce n'est pas le même path sur l'autre ordi avec l'autre Office (même avec le même Office ça ne marcherait pas d'ailleurs, vu que le nom d'utilisateur et le nom du stqrtupdisk peuvent différer. Comment faire ? Merci -------------------- |
|
|
28 Jun 2016, 21:28
Message
#19
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 4 197 Inscrit : 1 Jan 2008 Lieu : Toulouse.cong Membre no 103 942 |
Comment faire ? Il va falloir faire un peu de "Compilation conditionnelle", qui permet d'adapter la macro à la version de Mac OS X. En l'occurrence tu peux te référer à cette page de Ron de Bruin -------------------- |
|
|
29 Jun 2016, 20:33
Message
#20
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 2 306 Inscrit : 27 Jul 2008 Lieu : Besançon Membre no 118 630 |
Merci, j'ai regardé un peu. Par contre je ne comprends pas, je ne pourrai pas lancer de Macros puisque le path de ce fichier Macro n'est pas bon sur l'autre Mac.
-------------------- |
|
|
29 Jun 2016, 23:26
Message
#21
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 4 197 Inscrit : 1 Jan 2008 Lieu : Toulouse.cong Membre no 103 942 |
je ne comprends pas, je ne pourrai pas lancer de Macros puisque le path de ce fichier Macro n'est pas bon sur l'autre Mac. Ben, a priori c'est à ça que sert la compilation conditionnelle : tu saisis les deux chemins d'accès possibles et tu affectes à une variable la valeur correspondant à la version de Mac OS X concernée. Ça ne peut pas s'appliquer dans ton cas ? -------------------- |
|
|
3 Jul 2016, 10:42
Message
#22
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 2 306 Inscrit : 27 Jul 2008 Lieu : Besançon Membre no 118 630 |
J'ai placé un classeur .xlam contenant mes fonctions dans le dossier où Excel place par défaut les macros personnelles. Dans ce classeur j'ai une procédure (code ci-dessous) qui m'ouvre mon classeur de Macro Procédures (celles qu'on appelle via un bouton ou un raccourci clavier).
Code Option Explicit ' Force à déclarer les variables ' Les dossiers Excel Démarre et le dossier des macros Personnelles n'acceptent pas les Alias et mes boutons de Macros ' mémorisent le Path de la Macro. Et ces dossiers ne sont pas les mêmes pour Excel 2011 et Excel 2016 ' Donc je lance un fichier Macro se trouvant à un endroit commun Sub Auto_Open() Dim FileToLaunch As String FileToLaunch = "" On Error GoTo ErrorHandler1 ' FileToLaunch = MacScript("return (path to startup disk) as string") ' Avec le séparateur de fin, ":" ou "/" ' FileToLaunch = MacScript("return (characters 1 thru -2 of ((path to startup disk) as string)) as string") ' Juste le nom du disque ' MsgBox "Disque de démarrage : '" & FileToLaunch & "'" If Val(Application.Version) < 15 Then ' FileToLaunch = "Applications:DiversLogs:OfficeMacrosPersos:" FileToLaunch = "DossSystAide:OfficeMacrosPersos:" ' FileToLaunch & ":" & ' Pour disque démarrage devant Else ' Inutile de mettre le disque de démarrage devant, ci-dessus ou ci-dessus on est sur le disque de démarrage ' FileToLaunch = "/Applications/DiversLogs/OfficeMacrosPersos/" FileToLaunch = "/DossSystAide/OfficeMacrosPersos/" ' FileToLaunch & "/" & ' Pour disque démarrage devant End If FileToLaunch = FileToLaunch & "MacroProcVisualBasic.xlsm" ' FileToLaunch = FileToLaunch & "TestLancOnLaunch.xlsm" ' MsgBox "On va ouvrir : '" + FileToLaunch + "'" Workbooks.Open (FileToLaunch) If False Then ErrorHandler1: Beep MsgBox "Impossible d'ouvrir : '" + FileToLaunch + "'" End If End Sub J'ai donc placé mon classeur de macros procédures "MacroProcVisualBasic.xlsm" dans un dossier "OfficeMacrosPersos " lui même dans un dossier "DossSystAide" à la racine de mon disque de démarrage. Peut importe où on la place, il faut qu'elle soit dans le même dossier sur les deux Macs (et évidement il faut modifier les deux paths du code donné ci-dessus en conséquence). Le path Office 2016 est en ShellPath (séparateur /) et le Path Office 2011 est en AbsolutePath (séparateur : ). Comme ça, tous mes classeurs où j'ai des boutons qui appellent mes macros communes qui sont dans "MacroProcVisualBasic.xlsm" fonctionnent quelque soit l'endroit d'où je les lance (mon nouveau Mac avec Office 2016 ou l'ancien Mac avec Office 2011). -------------------- |
|
|
Nous sommes le : 19th April 2024 - 22:00 |