macro:input box = variable

  • Initiateur de la discussion Initiateur de la discussion jean michel
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

jean michel

Guest
bonjour,
je débute en macro et j'aurai besoin de votre aide


je voudrais qu'une macro avant dêtre lancée ouvre un fichier dans le même répertoire. Ce nom de fichier devra être saisi dans une inputbox.

pourriez vous svp m'indiquer la démarche
merci
 
salut Jean-Michel, le forum

code:
Code:
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.

voilà.
A+
😉
 
ZZR09 écrit:
salut Jean-Michel, le forum

code:
Code:
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.

voilà.
A+
😉
 
Re,

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).

Avec l'instruction
Code:
CheminOuvrirfichier=Application.GetOpenFilename(...)
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)

Message édité par: zzr09, à: 06/09/2005 16:35
 
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!

A+
:side:
 
bon merci ZZ

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.

Merci pour ton aide
jm
 
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 :

ChDir = ThePath (le fameux lol)

Message édité par: _Thierry, à: 07/09/2005 09:17
 
Salut Thierry, le forum

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 :

ChDir = ThePath (le fameux lol)<br><br>Message édité par: _Thierry, à: 07/09/2005 09:17
 
ok ZZ ca marche mais si devant la fenêtre open je click cancel il continue à lancer la macro suivante

(car en effet je lui dis d'ouvrir puis de lancer une macro)

comment lui dire que si je click cancel alors il exit sub

merci
 
Salut Jean-Michel,

Essaye de rajtouer la ligne suivante, juste après l'instruction GetOpenFilName.

code:
Code:
If CheminOuvrirFichier = False Then Exit Sub

Si j'ai bon souvenir, l'application GetOpenFilName renvoie la valeur False si on annule l'opération.

A+
😉
 
Bonjour

Juste une petite précicion pour ZZR09 🙂

'LOL' Ca signifie : Laughing Out Loud (Mort de rire en français MDR)

Si tu fais une petite recherche sur les archives en particulier tu trouveras des fils sur ce sujet

Tien en voilà un avec des liens en plus donc tu en profiteras doublement

Lien supprimé

Bonne journée

Message édité par: Pascal76, à: 07/09/2005 15:51
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
6
Affichages
636
Réponses
4
Affichages
331
Retour