Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Option Explicit
Public ThePath, FichierActuel as string
sub ouvrir ()
dim ThePath, FichierActuel, OuvrirFichier as string
dim fich1
thepath=thisworkbook.path
CheminOuvrirfichier=Application.GetOpenFilename('Tous les fichiers Excel(*.xls), *.xls', , 'Veuillez sélectionner le nom du fichier à ouvrir')
OuvrirFichier=dir(CheminOuvrirfichier,vbnormal)
'On vérifie qu'il n'est pas déjà ouvert sinon, on l'active
For Each fich1 In Workbooks
If fich1.Name = OuvrirFichier Then
'C'est OK, le fichier est ouvert
Windows(OuvrirFichier).Activate
GoTo fich1Actif
End If
Next
'Si on est là c'est que le fichier n'est pas ouvert, on va le faire
Workbooks.Open FileName:=CheminOuvrirfichier
'C'est OK, le fichier est ouvert
GoTo fich1Actif
fich1Actif:
End Sub
cela te permet de charger le fichier actuel en mémoire (et de pouvoir le réactiver par la suite.
GetOpenFilname est la boîte de dialogue d'Excel, il renvoie le fichier et son chemin.
la boucle for each, next vérifie que le fichier sélectionné n'est pas déjà ouvert et l'active dans le cas contraire).
si le fichier n'a pas été activé, il est ouvert.
Option Explicit
Public ThePath, FichierActuel as string
sub ouvrir ()
dim ThePath, FichierActuel, OuvrirFichier as string
dim fich1
thepath=thisworkbook.path
CheminOuvrirfichier=Application.GetOpenFilename('Tous les fichiers Excel(*.xls), *.xls', , 'Veuillez sélectionner le nom du fichier à ouvrir')
OuvrirFichier=dir(CheminOuvrirfichier,vbnormal)
'On vérifie qu'il n'est pas déjà ouvert sinon, on l'active
For Each fich1 In Workbooks
If fich1.Name = OuvrirFichier Then
'C'est OK, le fichier est ouvert
Windows(OuvrirFichier).Activate
GoTo fich1Actif
End If
Next
'Si on est là c que le fichier nest pas ouvert, on va le faire
Workbooks.Open FileName:=CheminOuvrirfichier
'C'est OK, le fichier est ouvert
GoTo fich1Actif
fich1Actif:
End Sub
cela te permet de charger le fichier actuel en mémoire (et de pouvoir le réactiver par la suite.
GetOpenFilname est la boîte de dialogue d'Excel, il renvoie le fichier et son chemin.
la boucle for each, next vérifie que le fichier sélectionné n'est pas déjà ouvert et l'active dans le cas contraire).
si le fichier n'a pas été activé, il est ouvert.
en fait, ThePath est une variable du genre string (une chaine de caractères). ce nom est souvent utilisé pour désigner le chemin d'un dossier.
Pour récupérer le chemin actuel :
Code:
dim The Path as string
ThePAth = ThisWorkbook.Path
ThisWorkbook sésigne le fichier actuel et .Path son chemin.
En fait, c'est lui qui me renseigne sur mon positionnement, c'est bien plus efficace.
Comme tu faisais une interface utilisateur,
j'ai utilisé l'application GetOpenFileName qui est la boîte de dialogue 'Ouvrir' d'Excel (pour plus de précision, il faut voir l'aide de VisualBasic sur cette application, elle est bien faite).
je lui indique que le fichier désigné par l'applicationGetOpenFileName sera ma variable mémorisant le chemin et le fichier
pour récupérer le Nom du fichier, j'utilise l'instruction Dir()
avec les arguments suivant : vbNormal pour le nom du fichier et vbDirectory pour le chemin.
Voilà!
A+
Ah mais je viens de relire, dans mon cas,
ThePAth ne sert à rien, tu peux le supprimé.
J'étais parti sur une idée puis j'ai fait autre chose (GetOpenFileName)
Salut,
fich1, cet une variable de type variant.
comme le type variant est par défaut, il n'est pas nécessaire d'écrire tout le code dim fich1 as variant.
Dans ce code, il instruit la boucle For each fich1 in workbooks... Next
Pour chacunes des variables fich1 parmis les classeurs ...
fich1 représentera ici un classeur!
mais j'ai encore une question (je maitirse pas le vba comme tu vois)
je voudrais simplement dire à la macro :
d'ouvrir la boîte de dialogue dans le même répertoire que le fichier actuellement ouvert est ou se situe la macro .
Pas besoin de faire un test si le fichier est déjà ouvert car en fait je pose la question ds une msg avt.
très franchement, depuis deux mois que j'apprends les macros, j'ai récupéré tant d'idées partout que je ne saurrai pas rendre à Jupiter ce qui lui appartient
Par contre, cela m'a beaucoup aidé et j'espère en faire profiter les autres.
Pour ChDir, j'irai voir ce que c'est dans l'aide.
Sinon pour ThePath, merci et n'ait pas d'inquiètude, conformement à l'esprit forum, je le transmettrai
Ben tiens puisque t'es là : Qu'est-ce que c'est lol ?
_Thierry écrit:
Bonjour ZZr, Jean Michel
Tiens tiens ce fameux 'ThePath' me dit quelque chose et je sais très bien d'où il vient...
Bonne Journée [ol]@+Thierry[/ol]
EDITION !!!
Pour ta dernière question, pour orienter le GetFileOpen, il suffit de placer avant :
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.