Macro pour reprendre le focus sur son classeur et le fermer

Bonjour, désolé pour le retard, je me suis fais encore avoir en rédigeant le message mais ma petite fille demande toute mon attention, cela prend du temps et lors de l'envoi Erreur 404, LOL

Donc je reprends, j'ai remplacé ma macro par la votre. Je l'ai testé en supprimant le sous dossier 2023 et elle fonctionne à partir du fichier DONNEES.

J'ai donc testé à nouveau la Sub Close_File mais il semble que ne va pas au delà de

If Err.Number > 0 Then MsgBox "le fichier ne semble pas être ouvert ou de nom incorrect !", vbCritical: Exit Sub

car le message ne s'affiche pas et le call n'est pas exécuter alors que la facture se ferme.

MsgBox "Votre fichier a été fermé !!!", 64
Call TesteSiDossierExiste

Donc à partir de la j'ai testé la macro TesteSiDossierExiste qui lance également DeplacerFichier, le fichier est déplacer en actionnant le bouton ARCHIVE LA DERNIERE FACTURE.

J'ai à nouveau testé le même bouton mais en lançant cette fois ci la Sub Close_File et là le process se fait jusqu'au bout. Sans dossier 2023, il m'affiche le message "Votre fichier a été fermé" et déplace le fichier. Process fonctionne également avec le dossier 2023.

J'espère que nous alors pouvoir avancer.

En parcourant à nouveau la Sub Close_File, j'ai remarqué que le As String était en commentaire j'ai enlevé < ' > et j'ai refait les testes cela ne change rien par rapport à mon dernier message.

Sub Close_File()
Dim File_Path 'As String
File_Path = ThisWorkbook.Sheets(1).Range("C34").Value

Bonjour,

En parcourant à nouveau la Sub Close_File, j'ai remarqué que le As String était en commentaire j'ai enlevé < ' > et j'ai refait les testes cela ne change rien par rapport à mon dernier message.

Oui vous pouvez le laisser. Je l'avais désactivé pour tester quelque chose mais ce n'est pas de là que vient le souci

1. Donc actuellement votre bouton dans le fichier donnees est relié à quel code ?
2. Pour le déplacement du fichier, je me demande pourquoi vous n'avez pas fait simplement un SAVE AS dans le répertoire de l'année choisie plutot que de faire des déplacement

Autre point : Vous n'avez pas répondu à la question de savoir pourquoi vous avez fait deux fichiers ? --> Point 2 --> https://forum.excel-pratique.com/s/goto/1120461

Ok je laisse l'apostrophe.

1. Actuellement le bouton est relié à la SUB Close_File et tout fonctionne.

2. SAVE AS pour enregistrer sous, n'est pas le but car lorsque l'utilisateur appuie sur le bouton BL1 (qui est masqué actuellement) dans la facture

le classeur est sauvegardé sous le numéro de facture. De plus je viens de m'apercevoir que le message délivré n'est pas le bon dans la macro

TesteSiDossierExiste en effet il s'agit de déplacer le fichier dans le dossier ARCHIVES FACTURES donc au lieu de mettre

    If MsgBox("   Le dossier pour sauvegarder les FACTURES EN COURS n'existe pas..." & Chr(10) & Chr(10) & "   Souhaitez-vous le créer ?", 4 + 64, "Création du dossier...") = vbYes Then 'Demander si le dossier doit être créé

Je dois mettre...

    If MsgBox("   Le dossier pour déplacer les factures dans le dossier ARCHIVES  FACTURES n'existe pas..." & Chr(10) & Chr(10) & "   Souhaitez-vous le créer ?", 4 + 64, "Création du dossier...") = vbYes Then 'Demander si le dossier doit être créé

Cela ne change rien au fonctionnement mais c'est utile à la compréhension.

La facture se trouvant dans le dossier FACTURES EN COURS, le déplacement est nécessaire car la facture est considérée comme clôturer donc elle n'a plus lieu d'être dans ce dossier. En effet le process permet à l'utilisateur de travailler que sur les documents en cours par l'intermédiaire d'une autre macro située dans un autre classeur qui liste uniquement les factures en cours.

Le 2. sur le message d'hier 18:54

Vous évoquez de ne faire qu'un seul fichier (FACTURE + DONNEES je suppose) mais à ce stade, je n'ai peut être pas toutes les connaissances nécessaires pour faire cela.

Il est vrai que je peux faire le remplissage des données BL depuis une autre feuille qui se trouvera dans la FACTURE. Cela je pense que je peux le refaire.

Je peux également récupérer les données de réductions dans une autre feuille MAIS par contre, je ne sais absolument pas comment m'y prendre pour faire la partie déplacement du fichier sans le classeur DONNEES.

1. Actuellement le bouton est relié à la SUB Close_File et tout fonctionne.

Ok. sujet clos

2. .... TesteSiDossierExiste en effet il s'agit de déplacer le fichier dans le dossier ARCHIVES FACTURES donc au lieu de mettre

J'ai corrigé de mon coté


Le code Sub FermeFactureEnCours() ne sert plus dans votre cas. Vous pouvez le désactiver puisque le bouton va exécuter le code Close_file puis tester si le dossier existe et le créer le cas échéant et ensuite déplacer le fichier en question vers le dossier année


Vous évoquez de ne faire qu'un seul fichier (FACTURE + DONNEES je suppose) mais à ce stade, je n'ai peut être pas toutes les connaissances nécessaires pour faire cela.

Pour vous répondre à cela. L'idée était celle-ci :
- une facture modèle vierge dans le fichier Donnée
- lorsque vous faites une nouvelle facture, vous dupliquez la facture modèle et lui donner une référence
- une fois la facture terminée, vous la sauvegardez dans le répertoire année (existant ou à créer)
- une fois sauvegardée, vous supprimez la Facture créée depuis la feuille Facture Modèle du fichier Donnée
Cette manière de faire ne correspond peut être pas à ce que vous voulez au final mais c'était nettement plus simple coté VBA

1. Ok

2. J'ai supprimé Sub FermeFactureEnCours() depuis que j'ai testé la Sub Close_File.

Pour vous répondre à cela. L'idée était celle-ci :

- une facture modèle vierge dans le fichier Donnée

Concernant le fichier modéle ok je ne voyais pas les choses ainsi comme quoi un regarde neuf c'est beaucoup bien mieux.

- lorsque vous faites une nouvelle facture, vous dupliquez la facture modèle et lui donner une référence

Concernant la suite c'est moins évident pour moi. En effet dans ma logique il faudrait que je duplique La facture proprement dite

ainsi que les feuilles BL, AVOIR et TARIF pour que la copie fonctionne car pour continuer à saisir des données après la première sauvegarde

il faut absolument ces feuilles.

- une fois la facture terminée, vous la sauvegardez dans le répertoire année (existant ou à créer)

Donc là je la sauvegarde dans le dossier ARCHIVES FACTURES

- une fois sauvegardée, vous supprimez la Facture créée depuis la feuille Facture Modèle du fichier Donnée

Je fais un Kill pour la supprimer dans FACTURES EN COURS (là il faut que je cherche pour savoir comment procéder, encore de longues soirées LOL)

Cette manière de faire ne correspond peut être pas à ce que vous voulez au final mais c'était nettement plus simple coté VBA

La façon de faire me convient du moment que j'arrive à mettre en place tout cela mais encore une fois en VBA j'ai pas tout.

Il va falloir faire une grosse feuille de route et revoir l'ensemble.

Je suppose qu'il va falloir clôturer ce fil et revenir lorsque j'aurais un problème. Si c'est le cas, je vous remercie pour votre patience et vos conseils.

Dan, un trés grand merci pour votre aide.

Je fais un Kill pour la supprimer dans FACTURES EN COURS (là il faut que je cherche pour savoir comment procéder, encore de longues soirées LOL)

Que voulez-vous dire ? Pourquoi un Kill ? si vous déplacez le fichier, il ne sera plus dans le dossier factures en cours

Concernant la suite c'est moins évident pour moi. En effet dans ma logique il faudrait que je duplique La facture proprement dite ainsi que les feuilles BL, AVOIR et TARIF pour que la copie fonctionne car pour continuer à saisir des données après la première sauvegarde

Pourquoi devez-vous dupliquer la facture ?


quelques questions :
- Lorsque vous créez une facture vous partez d'un fichier vierge ?
- Lorsque vous sauvegardez la facture, vous devez conserver tous les codes présents dans le fichier ?

L'idée que j'avais était que la facture sauvegardée était juste un fichier avec les données, donc sans formules et sans code VBA

1.Le Kill s'était une idée comme une autre. Je suis pour le déplacement du fichier.

2. Effectivement je pars d'un fichier vierge. Généralement au début du mois et chaque mois l'utilisateur ouvre la facture vierge, crée sa nouvelle facture sur le modèle vierge contenant les feuilles où se trouve les tableaux de données (Clients et Tarifs) et autres, il va saisir les premiers éléments qui concernent le BL1 (Bordereau de Livraison pour la semaine 1) et sauvegarder une copie de la facture avec comme nom le numéro de facture. La semaine suivante, BL2, il ouvre à nouveau ce fichier où il n'a besoin en terme de données que de la feuille Tarifs puisqu'il a déjà saisie les coordonnées de son client et ainsi de suite jusqu’à BL5. L'entreprise où je donne un coup de main fait dans l'élevage de cochons en plein et de la transformation. Le patron ne veut pas établir une facture à chaque livraison et si cela avait été le cas cela aurait été encore plus simple pour moi.

Donc oui, je dois garder pas mal de choses pour poursuivre la facture. Juste pour la petite histoire, il y a déjà trois ans, je voyais le patron faire ses factures à la main sur des carnets à souche, un retard monstre pour les envoyer et se faire payer. D'où l'idée de la facture Excel. Il ne voulait pas d'un logiciel tout fait, l'usine à gaz. etc...

Bonjour,

En lisant votre réponse au point 2, j'ai vu que votre fichier contient pas mal de feuilles masquées.
Là je pense qu'il vaut mieux conserver votre façon de faire. Le cas échéant il faudrait certainement repenser pas mal de choses
L'embêtant est que vous conserver toutes les feuilles et tous les codes à la sauvegarde du fichier facture.
Il faut aussi supposer que vous ne changez pas les tarifs entre deux BL par exemple

Je vois deux ou trois choses à modifier toute fois notamment dans le fichier Facture

1. Dans Thisworkbook, rajoutez ce code pour remettre en place la barre de formule que vous masquez à l'ouverture

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayFormulaBar = True
End Sub

2. Dans Thisworkbook, le code Open pourrait être ceci

Private Sub Workbook_Open()

On Error Resume Next
Application.Width = 900   'Largeur du classeur
Application.Height = 760 'Hauteur du classeur
Application.Left = 400   'Bord Gauche de l'écran
Application.Top = 10     'Haut de l'écran
On Error GoTo 0

With Sheets("FACTURE") '.Select
    If .Range("N1").Value = "BL1" Then
        .Unprotect
        'ActiveSheet.Shapes.Range(Array("Ellipse 2")).Visible = msoFalse 'Remise à zéro
        .Shapes.Range(Array("Ellipse 3")).Visible = msoFalse 'BL1
        .Shapes.Range(Array("Ellipse 4")).Visible = msoTrue 'BL2,3,4
        .Protect

        With Sheets("BL")
            .Unprotect
            .Shapes.Range(Array("Ellipse 7")).Visible = msoTrue 'Créer PDF
            .Protect
        End With
    End If
End With

Application.DisplayFormulaBar = False 'Barre de formule
With ActiveWindow
    .DisplayHeadings = False ' Entête de ligne et colonne
    .DisplayGridlines = False 'Quadrillage de la feuille
End With

Sheets("TARIF").Visible = False
Sheets("TARIF_P").Visible = False
Sheets("TARIF_RS").Visible = False
Sheets("TARIF_RV").Visible = False
Sheets("CLIENTS").Visible = False

'Call FermeSuiviDesFacture
FormulaireSaisieClients.Show 'Lance le formulaire
End Sub

3. Module 4 : vous pouvez le supprimer. Le code Fermesuivifacture ne sert plus

Votre avis ?

Sinon c'est tout de même un beau travail que vous avez fait là

Bonsoir Dan,

Je ne suis pas derrière mon PC et je vous répondrez plus précisément demain. Je prends acte de vos remarques et suggestions judicieuses. C'est vrai que c'est embêtant de garder les codes et feuilles mais c'est du sur-mesure, je ne pense pas qu'il y en ait beaucoup comme celle-ci. Au regard du code sur le Thisworkbook, le code Open je pense que je pourrais améliorer quelques unes de mes macros qui se trouvent dans d'autres classeurs. C'est judicieux de remettre la barre de formule pour la suite. C'est inspirant.

Vos avis et vos corrections ont été très importantes pour moi et je suis extrêmement touché par votre compliment.

A bientôt et bonne soirée.

Hello Dan

Encore un grand merci et c'est parfait sur le dernier code joint.

Bon courage à pour la suite.

Rechercher des sujets similaires à "macro reprendre focus classeur fermer"