Lister/sélectionner fichier/feuille ouvert dans InputBox

Bonjour à tous,

J’utilise régulièrement des macro au boulot et je voudrait facilité légèrement leur utilisation.

Je compare ou transfert des données entre deux fichiers différents. Je fais la sélection "manuellement" et je voudrais pouvoir le faire plus facilement.

Voici le code que j'utilise actuellement pour sélectionner mon fichier et la feuille dans laquelle travailler.

Sub MajFichier()
    Dim ws1, ws2, fichier, feuille, dlr, cs, cd, cdb, i, j, f, p

    fichier = InputBox("nom fichier1 :", "fichier1 -> 2")
    Workbooks(fichier).Activate
    feuille = InputBox("feuille fichier1 :", "fichier1 -> 2")
    Set ws1 = Workbooks(fichier).Worksheets(feuille)

    ws1.Activate

    fichier = InputBox("nom fichier2 :", "fichier1 -> 2")
    Workbooks(fichier).Activate
    feuille = InputBox("feuille fichier2 :", "fichier1 -> 2")
    Set ws2 = Workbooks(fichier).Worksheets(feuille)

Je voudrait pouvoir faire dans l'ordre:

1) Lister dans une fenêtre les fichiers ouvert.

2) Sélectionner le fichier dans lequel je souhaite travailler

3) Sélectionner la feuille dans laquelle travailler.

4) Stocker le résultat dans ma variable.

Merci pour votre aide :)

Bonjour,

Sur quel fichier se trouve le code ? Combien de fichiers ouverts avez-vous ? Ce sont toujours les mêmes ?

Je pense à une alternative :

- lister quelque part (un endroit réservé à ça) les fichiers ouverts,

- double-cliquer sur les noms de fichiers (ou solution du même genre),

- appuyer sur un bouton afin d'exécuter le code.

Cdlt,

Alors je stock mes macros dans excel directement (cad dans VBAproject ou personal.xlsb).

J'ai parfois plusieurs fichiers qui ne sont pas toujours nommé de la même façon.

Un cas d'utilisation par exemple : Un fournisseur me demande mes statistiques de vente pour une période déterminée et me transmet un fichier excel à remplir. Il a souvent une structure dans le nom de son fichier. Je sors mes statistiques de mon système de caisse au format excel et une macro remplis automatiquement le fichier de mon fournisseur en fonction de mon fichier interne.

Je voulais pouvoir sélectionner les deux fichiers avec lesquels la macro va fonctionner dans une liste afin d'éviter les fautes de frappe dans mon InputBox.

Je pourrais sans problème passer par un troisième fichier où je ferais la macro serait stockée et où je ferais la sélection.

En espérant avoir éclairci la situation

Re,

Je pense avoir compris. Donc il y a un fichier extrait du système de caisse (dont le nom peut être déterminé en fonction du nom du fournisseur et de la date, j'imagine) et un fichier envoyé par le fournisseur qui se trouve dans les téléchargements ?

Voilà c'est exactement ça...

En fait j'utilise ce "module" de sélection de fichier pour plusieurs macro en fonction de la manipulation que je dois faire sur mes fichiers.

D'accord. D'où la seconde inputbox pour sélectionner le nom de la feuille ? L'idéal serait de trouver une façon d'exécuter le code invariablement.

Donc je pensais à chercher le nom du fichier source (de la caisse) dans le dossier téléchargements et chercher le nom du fichier de destination (à renvoyer au fournisseur) ou alors l'obtenir grâce à une boite de dialogue de sélection de fichier.

Mais dans ce cas, il faut, à chaque exécution de ce code, que les fichiers soient dans le dossier téléchargements, qu'ils répondent au modèle, qu'on trouve un point commun sur les feuilles manipulées (l'index par exemple) et un point commun sur les plages manipulées. Est-ce que ça parait possible ?

En fait le restant de mon code pour la comparaison est déjà fais et fonctionnel (je peux le mettre ici pour ceux que ça intéresse).

J'avais en tête un ComboBox pour lister.

Je viens de trouver ceci qui fonctionne pour lister les classeurs ouverts et qui me renvois le fichier que j'ai sélectionner.

Option Explicit

Private Sub UserForm_Activate()
    Dim vWorkbook As Workbook
    ComboBox1.Clear
    For Each vWorkbook In Workbooks
        ComboBox1.AddItem vWorkbook.Name
    Next
End Sub

Private Sub CommandButton1_Click()
    If ComboBox1.ListIndex <> -1 Then
        Call YourMacro(ComboBox1)
    End If
End Sub

Private Sub YourMacro(vWorkbookName As String)
    MsgBox Workbooks(vWorkbookName).Name
End Sub

Il me reste juste à voir pour l'intégrer dans mon code et voir pour lister les feuilles

Rechercher des sujets similaires à "lister selectionner fichier feuille ouvert inputbox"