LE NEWSMAGAZINE Nº1 DES NOUVELLES TECHNOLOGIES
176 utilisateurs connectés

Macros excel ouverture fichier à dupliquer

Quenlutincile le 09 décembre 2008 à 14h02
Bonjour, :hello:

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 :love: . (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... :non:

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
willyplaisir le 09 décembre 2008 à 15h40
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 :salut:


-->Message édité par willyplaisir le 09/12/2008 15:43:32<--
Quenlutincile le 11 décembre 2008 à 12h59
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<--
willyplaisir le 11 décembre 2008 à 13h55
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.
:salut:
-->Message édité par willyplaisir le 11/12/2008 13:56:25<--
Quenlutincile le 11 décembre 2008 à 17h47
Bonsoir,

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<--
Quenlutincile le 06 janvier 2009 à 10h30
Bonjour et bonne année 2009,

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<--
Quenlutincile le 22 janvier 2009 à 09h06
Bonjour,
Toujours pas de nouvelles sur mon problème.
Personne ne sais résoudre ? :sweat: étonnant !

nb : depuis Lundi, je suis passé sur Excel 2007 (même problème).

A+
michel_m le 22 janvier 2009 à 10h59
Bonjour,

Tu as 2 possibilités pour résoudre ton problème

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
-------
Amicalement
Michel
Quenlutincile le 22 janvier 2009 à 14h00
Bonjour,
Merci Michel_m, j'ai essayé la solution 1 et cela marche très bien.
Super :love:

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.

Merci
michel_m le 22 janvier 2009 à 14h11
Désolé, mais je n'ai pas 2007

Donc, d'autres que moi pourront certainement t'aider

-------
Amicalement
Michel
Quenlutincile le 22 janvier 2009 à 16h05
michel_m a écrit :
Désolé, mais je n'ai pas 2007
Donc, d'autres que moi pourront certainement t'aider


Ok merci quand même.
nb : a priori, les macro s'écrivent de la même façon.

a+


À PROPOS DU FORUM MICRO HEBDO

LES FORUMS THÉMATIQUES ET TECHNIQUES

LES FORUMS GÉNÉRAUX

ARCHIVES DU FORUM

publicité
01Informatique
01 INFORMATIQUE
L'hebdo de référence des décideurs informatiques.
Micro Hebdo
MICRO HEBDO
L'hebdo qui vous simplifie la micro
et Internet.
L'Ordinateur Individuel
L'ORDINATEUR INDIVIDUEL
Le mensuel informatique qui vous informe et vous conseille.
Nous contacter  |  Charte de confiance  |  Voir notice légale

01net.  -  01men  -  RMC  -  BFM Radio  -  BFM TV  -  TousLesPodcasts  -  01informatique.fr  -  Association RMC-BFM
Tous droits réservés © 1999 - 2009 Internext - 01net.