VBA - InputBox, recherche d'un fichier et enregistrement

Bonjour à vous tous,

1)

Je cherche à utiliser la date inscrite au format MM.AAAA dans une InputBox - information utilisée entre autre pour inscrire la date du décompte dans le titre du document - afin d'ouvrir également le fichier du mois précédent.

Ces fichiers sont chaque mois enregistrés sous la forme

Décompte 01.2008

Décompte 02.2008

Décompte 03.2008

etc.

et lorsque l'utilisateur indique, par l'intermédiaire de la InputBox, qu'il établi par exemple le document "04.2008", le programme devrait aller chercher le fichier nommé "Décompte 03.2008".

Dans l'exemple ci-dessus,

Date_décompte = InputBox(Message, Title, Default) 

serait égal à 04.2008

2)

Est-il ensuite possible d'utiliser cette même date afin d'enregistrer automatiquement le nouveau fichier au bon endroit avec le nouveau nom (dans cet exemple "Décompte 04.2008") ?

Je nage complètement ! Pourriez-vous m'aider ?

Aves mes amitiés

Bonjour,

Ce ne serait pas la suite de ceci ? --> https://www.excel-pratique.com/forum/viewtopic.php?t=5414 et aussi --> https://www.excel-pratique.com/forum/viewtopic.php?p=30000

D'abord évite d'enregistrer des fichiers dont le nom comporte un point.

Mets plutôt --> 04-2008 ou 04_2008.

a te relire

Dan

Salut Dan,

Oui, c'est effectivement toujours le même travail. Je progresse gentiment. Mais parfois il y a de nouvelles idées qui apparaissent, d'où mes questions « saucissonnées ».

Je préfèrerais me servir du format MM.AAAA car les utilisateurs de mon fichier on l'habitude de travailler avec ce format. Mais si ça représente de réels avantages de changer, pourquoi pas.

Merci d'avance à tous ceux qui tenteront de m'aider.

Cordialement

Re,

en combinant ce que l'on t'a déjà donné, tu pourrais aisément construire ta macro.

Lorsque je te lis, il y a une chose que je comprends pas. tu dis :

exemple le document "04.2008", le programme devrait aller chercher le fichier nommé "Décompte 03.2008".

Pourquoi ne pas demander directement le bon fichier dans l'inputbox ?

Par ailleurs que se passe-t-il si le fichier s'appelle "Décompte 01.2008" ?. Là on doit ouvrir quel fichier ?

puis

est-il ensuite possible d'utiliser cette même date afin d'enregistrer automatiquement le nouveau fichier au bon endroit avec le nouveau nom

Le nouveau fichier vient de "decompte 03.2008" ou "04" ?

Concernant les points, tu dois savoir qu'en informatique le point est utilisé pour précéder les extensions de fichier ou par le système.

Essaie d'enregistrer une fichier commençant par un point par exemple pour voir le message qui te sera renvoyé....

Et en cas de crash, essaye de retrouver tes fichiers...L'ordi risque de les confondre avec d'autres.

Enfin je ne te conseille pas cela.

A te relire

Dan

Dan,

Je suis vraiment désolé, mais malgré l'aide que j'ai déjà reçu, je n'arrive pas à m'en sortir tout seul.

Contrairement à ce que j'ai dit dans mon message précédent, les fichiers ne sont pas enregistrés avec une date comportant des points, mais effectivement de la manière suivante : 2008_03_Décompte, 2008_04_Décompte, etc. Veuillez m'excuser pour cette fausse information.

Par contre il serait bon que l'utilisateur puisse malgré tout entrer son information sur la date dans la InputBox au format MM.AAAA car ce format correspond à celui qu'on a l'habitude d'inscrire pour d'autres utilisations.

Cette information sert pour l'instant - comme je l'ai indiqué dans mon premier message ci-dessus - à inscrire le titre dans le document lui-même (par exemple "Décompte d'avril 2008"). C'est la raison pour laquelle je demande d'inscrire dans la InputBox la date du mois actuel.

Mais je pensais que cette date pouvait également avoir une deuxième utilisation, c'est-à-dire servir à ouvrir automatiquement le fichier du mois précédent avec lequel il est nécessaire de faire des comparaisons. J'imaginais donc qu'on pourrait ouvrir le fichier "2008_03_Décompte" lorsqu'il était inscrit dans la InputBox qu'on préparait le décompte d'avril 2008.

En suivant cette logique, lors de la préparation du décompte de janvier 2009, la comparaison devrait se faire avec le fichier "2008_12_Décompte".

Selon le point 2 de mon premier message, la date inscrite dans la InputBox pourrait avoir une troisième utilisation : Elle pourrait servir à "ENREGISTRER SOUS" le décompte du mois actuel en lui donnant son nouveau nom actualisé (par exemple "2008_04_Décompte"), ce que je ne sais pas faire non plus. Mon fichier de base, comportant toutes les macros, serait alors refermé sans modification et prêt pour le mois suivant (pour cette dernière partie c’est bon, j’ai déjà un code).

A nouveau merci à toi Dan de te soucier de mon problème, ainsi qu’à tous ceux qui cherche peut-être à m’aider sans que je le sache.

Bonne soirée

Re,

OK. Merci de tes explications, j'ai commencé à te prérparer un fichier. Je reviens vers toi avec une solution et peut être (sait-on jamais..) quelques questions.

Si tu as un fichier à placer, n'hésite pas car dans ce cas je construirai le programme en correspondance avec tes données.

Amicalement

Dan

Dan,

Je n’avais jamais voulu placer mon fichier sur la toile, car il est notamment très grand, il contient des données confidentielles, il n'a pas cessé dévoluer depuis quelques temps et surtout il contient plusieurs macros qui font référence à des chemins particuliers pour atteindre d’autres fichiers.

Mais je vais quand même essayer de te fournir tout ça au plus vite, malheureusement pas avant ce soir, lorsque je serais rentré à la maison où j’ai mon fichier et que j’ai eu le temps d’effacer les données confidentielles. A laisser alors quelques heures en veilleuse ! ?

A bientôt

re,

Ok. Je pense qu'au vu de tes explications, cela ira sans ton fichier.

Cette information sert pour l'instant - comme je l'ai indiqué dans mon premier message ci-dessus - à inscrire le titre dans le document lui-même (par exemple "Décompte d'avril 2008"). C'est la raison pour laquelle je demande d'inscrire dans la InputBox la date du mois actuel.

Où doit-on inscrire cette référence ?

A te relire

Dan

Nulle part ! Ou plutôt cette partie est déjà faite.

J'ai simplement expliquer que j'emploi une InputBox pour une autre utilisation et que je voudrais récupérer l'information à disposition (la date et le mois) pour ces deux nouvelles utilisations (ouvrir le fichier du mois précédent et enregistrer le fichier avec son nouveau nom, selon mon premier courrier ci-dessus).

Bonne après-midi.

re,

OK. Essaie avec ce code qui ouvrira ton fichier du mois précédent qui sauvegardera ton fichier du mois courant.

En résumé :

  • Ouverture de ton fichier modèle
  • Inputbox où l'on met la date
  • Ouverture du fichier mois -1
  • enregistrement de ton fichier modèle sous le nom du mois et année courante

A noter que tout tes fichiers sont supposés être dans le même répertoire que ton fichier contenant la macro ci-après.

Sub Ouverture_Fichier_mois_précédent()
'Macro par Dan pour yvouille le 02/06/08
Dim chemin As String, message As String, title As String, default As String, Date_décompte As String, _
vmois As String, annee As String, vmois1 As String
Application.ScreenUpdating = False
chemin = ThisWorkbook.Path
message = "Décompte de MM.AAAA ??"
title = "Date du décompte"
default = ""
Date_décompte = InputBox(message, title, default)
vmois = Left(Date_décompte, 2)
annee = Right(Date_décompte, 4)
Select Case vmois
    Case "0" & 2 To 10
    vmois1 = "0" & vmois - 1
    Case Is = "0" & 1
    vmois1 = 12
    annee1 = annee - 1
    Case Is > 10
    vmois1 = vmois - 1
    Case ""
    Exit Sub
End Select
Workbooks.Open Filename:=chemin & "\" & annee1 & "_" & vmois1 & "_Décompte" & ".xls"
ThisWorkbook.SaveAs Filename:=chemin & "\" & annee & "_" & vmois & "_Décompte" & ".xls"
End Sub

A te relire

Dan

Dan,

Il me faudra bien quelques jours pour tester ton code et essayer de l'appliquer à mon fichier.

Aussi, pour l'instant, je ne peux que te remercier pour tout le travail que tu as déjà fait pour moi.

Je reprendrai contact avec toi au plus vite afin de te faire part de l'avancement de mes travaux ..... et peut être aussi avec de nouvelles questions.

Encore merci et à très bientôt.

Dan,

A part deux petites adaptations nécessaires - celles-ci sont indiquées dans le code ci-dessous par le commentaire "RAJOUT" - tes deux propositions répondent parfaitement à mes attentes.

        message = "Décompte de MM.AAAA ??"
        title = ""
        default = ""
        Date_décompte = InputBox(message, title, default)

        vmois = Left(Date_décompte, 2)
        annee = Right(Date_décompte, 4)
        Select Case vmois
            Case "0" & 2 To 10
            vmois1 = "0" & vmois - 1
            annee1 = annee ' RAJOUT
            Case Is = "0" & 1
            vmois1 = 12
            annee1 = annee - 1
            Case Is > 10
            vmois1 = vmois - 1
            annee1 = annee ' RAJOUT
            Case ""
            Exit Sub
        End Select
        Workbooks.Open Filename:=chemin & "\" & annee1 & "_" & vmois1 & "_Quellensteuer" & ".xls"

Tu m'as vraiment été d'un grand secours et je t'en remercie sincèrement.

Il n'est pas impossible que ce travail réapparaisse sur le Forum un jour, car il me manque encore un ou deux codes afin qu'il soit complet.

Meilleures salutations.

Rechercher des sujets similaires à "vba inputbox recherche fichier enregistrement"