Sur Excel 2000, j'ai un bouton dans la barre d'outil qui m'active une macro qui ouvre un fichier ou s'il est déjà ouvert de l'afficher à l'écran. Cette macro m'a été indiquée sur le forum il y a plusieurs années . (voir macro en fin de message).
Cette macro est valable pour le fichier Adhérents.xls seulement.
Je souhaite l'appliquer sur d'autres fichiers ouverts régulièrement (une cinquantaine).
Je trouve lourd de devoir dupliquer cette macro pour 50 fichiers ; de plus si je dois changer de répertoire de sauvegarde ou d'ordinateur, il faudra que je change les 50 macros...
Y a-t-il une solution (sous programme) qui permet d'éviter la recopie de la totalité de la macro ?
Je m'explique. Dans la macro 1, j'indique le nom du fichier1 seulement ; dans la macro 2, j'indique le nom du fichier2 seulement ; etc...
puis ces macros lancent la macro Adhérents() pour la suite.
Ainsi, pour tout changement, je n'aurait qu'une macro à modifier.
Merci d'avance pour vos remarques.
A+
Ci dessous macro actuelle : Sub Adhérents()
Dim Dossier As String, Fichier As String, Chemin As String
Dossier = "C:\Documents and Settings\xxx\Mes documents\Adhérents\"
Fichier = "Adhérents.xls"
Chemin = Dossier & Fichier
Dim Presence As Boolean
Presence = False
For Each w In Workbooks
If w.Name = Fichier Then Presence = True
Next w
If Presence = True Then
Workbooks(Fichier).Activate
Else
Workbooks.Open Filename:=Chemin
End If
End Sub
bonjour
te propose cette soluton simple:par hypothèse tu as mis tes fichiers à ouvrir dans le dossier adhérents, sinon il faut indiquer le chemin dans la macro
Sub ouvrirfichiers()
Dim Dossier As String, Fichier As String, Chemin As String
Dossier = "C:\Documents and Settings\xxx\Mes documents\Adhérents\"
' ici tu mets la liste des noms de fichiers+ recherche
Fichier = "Adhérents.xls"
recherche
Fichier = "exemple1.xls"
recherche
Fichier = "exemple2.xls"
recherche
Fichier = "exemple3.xls"
recherche
End Sub
'---------------------
sub recherche()
Chemin = Dossier & Fichier
Dim Presence As Boolean
Presence = False
For Each w In Workbooks
If w.Name = Fichier Then Presence = True
Next w
If Presence = True Then
Workbooks(Fichier).Activate
Else
Workbooks.Open Filename:=Chemin
End If
End Sub
'------------------------
puis fais un test
-->Message édité par willyplaisir le 09/12/2008 15:43:32<--
Bonjour willyplaisir (et les autes aussi). Merci pour ton aide.
La macro recherche plante à ce niveau
Workbooks.Open Filename:=Chemin
Je n'arrive pas à corriger. Je ne suis pas un expert en macro. Peux-tu m'aider ?
Si j'ai bien compris le fonctionnement global,
La macro ouvrirfichiers permet de recencer la liste des fichiers que je souhaite ouvrir en l'exécutant.
La macro recherche fait tout le travail.
Je peux créer autant de macros selon le modèle ouvrirfichiers si je souhaite ouvrir des fichier différents par un clic sur un bouton créé.
A+
-->Message édité par Quenlutincile le 11/12/2008 17:47:49<--
bonjour,
oui tu as compris la logique du programme tout simple!
je voudrais savoir si ta macro initiale fonctionnait?
Dossier = "C:\Documents and Settings\xxx\Mes documents\Adhérents\"
ici xxx c'est ton nom
lance l'explorateur pour verifier le chemin exacte où se trouve le dossier Adhérents. Si le chemin est different alors copie ce chemin dans ta macro
Dossier =" ici chemin exact"
et teste ta macro.
-->Message édité par willyplaisir le 11/12/2008 13:56:25<--
Oui, la macro initiale fonctionne toujours (je m'en sert plusieurs foirs par jours).
Dans le chemin, comme tu l'indiques, j'ai juste remplacé le nom par des xxx.
nb : j'ai fais des copier/coller entre Visual Basic et ce forum pour poster ma macro et pour recopier la tienne afin de ne pas faire d'erreur de frappe.
A+
-->Message édité par Quenlutincile le 11/12/2008 17:49:01<--
J'ai toujours pas de nouvelles car la macro de willyplaisir du 09/12/08 ne fonctionne toujours pas.
Elle bloque toujours à Workbooks.Open Filename:=Chemin
Voila les 2 macros telles quelles sont actuellement :
-------------------
Sub ouvrirfichiers()
Dim Fichier As String
Fichier = "Adhérents.xls"
recherche
End Sub
---------------------
Sub recherche()
Dim Dossier As String,Chemin As String
Dossier = "C:\Documents and Settings\403bm\Mes documents\Adhérents\"
Chemin = Dossier & Fichier
Dim Presence As Boolean
Presence = False
For Each w In Workbooks
If w.Name = Fichier Then Presence = True
Next w
If Presence = True Then
Workbooks(Fichier).Activate
Else
Workbooks.Open Filename:=Chemin
End If
End Sub
------------
Je pense que dans la macro recherche, il n'est pas conservé en mémoire la valeur de Fichier indiqué dans la macro ouvrirfichiers.
Car quand je rajoute... Fichier = "Adhérents.xls" ... dans la macro recherche tout fonctionne correctement.
Quelqu'un peut-il m'aider ?
Merci.
A+
-->Message édité par Quenlutincile le 06/01/2009 14:00:13<--
1/déclarer "Fichier" en variable globale (à placer sur une ligne au dessus de toutes les macros)
public Fichier as string
et supprimer dim fichier as string dans sub ouvrirfichiers()
2/ paramètrer ta sub recherche
Sub recherche(fichier as string )
Dim Dossier As String,Chemin As String
et dans dans ta macro d'ouverture
Sub ouvrirfichiers()
recherche("Adhérents.xls")
End Sub
Bonjour, Merci Michel_m, j'ai essayé la solution 1 et cela marche très bien.
Super
Par contre je suis embêté avec Excel2007. Je m'explique :
Sur la version 2000, j'avais créé des barres d'outils avec des boutons personnalisés ainsi que plusieurs menus dans lesquels j'avais affecté des macros permettant de lancer automatiquement les fichiers voulus (afin d'éviter de faire fichier / ouvrir / puis aller chercher le fichier dans l'arborescence).
Aujourd'hui avec Excel2007, rien de tout cela n'est possible.
On ne peut que personnaliser la barre d'outil Accès rapide. De plus, on est limité dans le choix des boutons (on peut pas éditer ou modifier les boutons, on ne peut pas mettre du texte à la place du dessin...). Me dire si je me trompe.
En plus, On ne peut pas paramétrer les boutons des rubans qui parfois ne sont pas choisis judicieusement par Microsoft.
Quel recul de Microsoft !!
Quelle solution y aurait-il pour l'ouverture rapide de mes fichiers ? (mes dossier sont classés dans divers sous-...-sous-répértoires ; certains ont un numéro comme nom et ne veulent rien dire pour moi quand on affiche la liste des documents récents).
Est-il possible de créer une macro qui lance un menu (ou choix) faisant apparaître une liste de noms qui quand je clique sur l'un d'entre eux me permette d'ouvrir automatiquement le fichier correspondant. Est-ce faisable et pas très compliqué ? Je ne vois pas d'autre solution.