Besoin d'une aide sur macro Excel VBA

r e m y

Membre vénérable
Club iGen
4 Novembre 2000
41 540
4 334
63
St Germain en Laye - FRANCE
J'aurais besoin d'une petite aide car je n'arrive pas à trouver la bonne syntaxe de ma macro VBA.

J'ai une macro que je lance depuis un fichier Excel et qui doit en ouvrir un autre.
J'ai inséré le code

Dim wb As Workbook
Dim ws As Worksheet
Set wb = Workbooks.Open("chemin du fichier à ouvrir:fichier.xlsm")
Set ws = wb.Worksheets(1)

L'ouverture du fichier se passe sans souci.

Par contre, je voudrais ajouter un test de façon à ne pas chercher à ouvrir le fichier si il est déjà ouvert... et c'est là que je bloque.

Un grand merci d'avance à celui ou celle qui me proposera la solution
 
Une solution consiste à tester la présence par l'activation d'une des feuilles :

On Error GoTo Suite
If Workbooks("MonClasseur.xlsm").Sheets(1).Activate Then
' a = MsgBox("Coucou !", vbOKOnly, "Déjà là !") ' c'est juste pour contrôler...
Exit Sub
End If
Suite:
' Workbooks.Open Filename:="Macintosh HD:Users:remy:Documents:MonClasseur.xlsm" ' version Excel 2011
Workbooks.Open Filename:="/Users/remy/Documents/MonClasseur.xlsm" ' version Excel 2016
 
Très bonne idée!
Je vais utiliser ca, merci!
 
Impeccable! ça fonctionne.

J'ai légèrement modifié pour ouvrir toujours sur la dernière feuille du classeur que j'ouvre avec un
Sheets(Sheets.Count).Select

Merci encore de l'idée! :up:
 
Oui, j'ai fait ça vite fait, "brut de fonderie". Tu peux aussi avoir intérêt à mettre une ligne On Error GoTo 0 après le test, pour réinitialiser la gestion d'erreur et éviter les mauvaises surprises en cas de problème.
 
Ca m'a permis de réaliser qu'Office 2016 change la syntaxe des chemins...
si on ouvre un fichier comportant des chemins dans des macros créées avec Office 2011 (voire 2004), Office 2016 sait traduire et modifie lui-même les macros?
Ou il va falloir, le jour où je passerai à Office 2016, que je recherche tous les chemins dans mes classeurs de macros pour les réécrire selon la nouvelle syntaxe?
 
Ca m'a permis de réaliser qu'Office 2016 change la syntaxe des chemins...
Oui, ils ont fini par laisser tomber la compatibilité avec les anciennes versions et sont (enfin, pourrait-on dire) passés au format posix. J'imagine que ça fait partie du "package" négocié avec Apple pour la conformité aux nouvelles normes. Ils auraient certainement pu s'y mettre avant, par exemple lors du retour du VBA avec Office 2011. Mais bon...

si on ouvre un fichier comportant des chemins dans des macros créées avec Office 2011 (voire 2004), Office 2016 sait traduire et modifie lui-même les macros ?
Ben, ça dépend de comment c'est écrit. Si tu utilises des variables pour les chemins d'accès et le séparateur, ça devrait marcher. Si c'est "en dur"(comme dans l'exemple que j'ai donné plus haut), ça ne marchera pas. Logique...

Une instruction comme celle-ci te donnera la bonne réponse dans chacun des cas de figure :

MsgBox (ThisWorkbook.Path & Application.PathSeparator)


Ou il va falloir, le jour où je passerai à Office 2016, que je recherche tous les chemins dans mes classeurs de macros pour les réécrire selon la nouvelle syntaxe ?
Disons que ça te donnera l'occasion de les retravailler. ;)
 
Oui tu as raison, j'en profiterai pour en réécrire certaines.
Parce qu'à force de faire du "quick and dirty" et de rajouter des lignes, "améliorer" le fonctionnement, ajuster... ça finit par être de moins en moins quick et de plus en plus dirty! :D

Bon cela dit, Office 2011 fonctionne toujours parfaitement, donc ça va attendre encore quelques mois (années?).
 
Bonjour à tous, je remonte ce post car dans la version 2016, on ne peut pas choisir le chemin autre que le disque principal, je cherche à ouvrir/enregistrer un fichier excel qui se situe sur un disque réseau monté et je ne trouve pas la formulation du chemin.
 
A priori, rien de sorcier, c'est /Volumes/disque réseau/dossier/classeur.xlsx. Non ?

En cas de doute, tu peux toujours trouver le chemin d'accès à un fichier en en faisant glisser l'icône vers une fenêtre TextEdit (ou une fenêtre du Terminal, évidemment)...
 
A priori, rien de sorcier, c'est /Volumes/disque réseau/dossier/classeur.xlsx. Non ?
Merci pour ta réponse Aliboron, mais cela ne fonctionne pas, j'ai ma macro qui fonctionne très bien avec un fichier déposé dans le dossier de téléchargement (/users/nomutilisateur/Downloads/nomfichier.csv), mais dès que je fais la même chose avec une clé USB (/Volumes/nomdelaclef/nomfichier.csv) ou disque réseau monté (/Volumes/nomdudisque/nomfichier.csv), cela ne fonctionne pas erreur 1004 (fichier non trouvé), je n'arrive pas a trouver la solution pour ouvrir un fichier à part sur le disque principal.

En cas de doute, tu peux toujours trouver le chemin d'accès à un fichier en en faisant glisser l'icône vers une fenêtre TextEdit (ou une fenêtre du Terminal, évidemment)...
Merci pour cette astuce, je ne savais pas
 
Dernière édition par un modérateur:
.../... dès que je fais la même chose avec une clé USB (/Volumes/nomdelaclef/nomfichier.csv) ou disque réseau monté (/Volumes/nomdudisque/nomfichier.csv), cela ne fonctionne pas erreur 1004 (fichier non trouvé), je n'arrive pas a trouver la solution pour ouvrir un fichier à part sur le disque principal.
Curieux. Chez moi, ça fonctionne sans problème lorsque le volume (sur NAS ou clé USB) est monté. S'il n'est pas monté, évidemment, j'ai droit à l'erreur 1004.
 
Quelle Version d'excel (moi V15.21.1)
Euh... à l'heure actuelle tu devrais être en version 16.16.10 pour Office 2016 (ou 16.25 Office 2019). La version 15.21 date d'avril 2016. Trois ans sans faire aucune mise à jour, respect ! Il y a une mise à jour chaque mois (autour du 15) et un automate qui fait très bien son travail, pourvu qu'on le laisse faire...
Dans ton cas, la version de l'automate de mise à jour est elle même tellement dépassée qu'elle ne trouvera rien. Il te faut télécharger directement l'installeur de la version actuelle depuis cette page...

Je doute que ça ait vraiment une incidence sur le problème évoqué mais, au moins, ça te permettra d'avoir un éditeur VBA décent (celui de l'époque était inutilisable ou presque).
 
Merci Aliboron, je vais finir le fichier du client avec cette erreur, il pourra au moins travailler depuis le poste comptable, je ferais le test de mise a jour ensuite et de cette histoire de chemin, ça donnera toujours l'occasion d'une amélioration du système par la suite