2 classeurs (bon d'interventions, services de soins et services technique

Bjr,

HELP !!

Je dois réaliser des bons d'intervention pour des services de soins et service technique d'un ehpad (maison de retraite). J'ai donc créé 2 classeurs, un pour les différents services de l'établissement (en réseau) et un pour le service technique, également dans l'établissement. Dans le 1er (bon d'intervention "services", se trouve un formulaire d'intervention, créé via userform en VBA avec différents champs (date, heure, nom de l'agent...) aussi des listes déroulantes (services, corps de métiers) et 2 boutons ("fermer" et "envoyer demande"), lorsque ce dernier est terminé d'être remplis, les données sont enregistrées dans le scd classeur ("service technique")... Je précise que je suis novice et qu'une personne m'à aidé pour la création dans la VBA.

Sur le scd classeur, le personnel technique recoit les demandes des services et doit analyser chaque intervention pour procéder aux réparations & aménagements, sur ce classeur se trouve 2 feuilles ("base de données" et "résultats"), les données apparaissent, mais le format "date" est inversé (les jours et les mois), pourtant (et sans y toucher), dans le code, le format est correcte.

Des macros ont également été créées (boutons "selectionner" "imprimer" et "quitter").

Lorsque que je clique sur "selectionner", au autre formulaire récapitulatif (userform) apparaît, et le personnel technique doit préciser son nom ainsi que le temps passé à l'intervention sur des champs prévus à cet effet, une fois remplis, il valide les travaux et surtout, il valide le bon, pour que dans la feuille "résultats", les informations s'actualisent, pour à l'avenir, établir des statistiques, via des tableaux croisés dynamiques. Sur cette dernière feuille, dans le tableau, la première ligne reste vide.

Mes problèmes rencontrés :

* le format de la date (inversé)

* lorsque je valide le bon d'intervention (classeur "services") et que l'autre classeur "services techniques" est ouvert, ce dernier se ferme automatiquement.

* 1ère ligne vide sur le classeur du service technique

ps: voir les photos ci-jointes

Je vous avoue être complêtement paumé !

J'espère avoir été assez clair, car c'est pour moi le fouillis ! En espérant sincèrement obtenir de l'aide, je vous souhaite à tous, que du meilleur pour cette nouvelle année 2019.

Cordialement,

Tristan

excel excel1 excel2 excel3

Bonjour,

je pense qu'un fichier serait plus pertinent qu'une collection de photos ... si tu avais un bout de fichier même anonymisé, tu serais assuré (ou presque) d'avoir une réponse

Bjr,

oui en effet, vous avez raison. Je joins donc mes fichiers...

A l'intérieur se trouve des informations obsolètes pour essais...

Le classeur "Demande d'intervention" est donc destiné aux services de l'établissement (13 au total) en corrélation avec le service technique (classeur "Service technique")...

Merci d'avance à ceux qui prendrons un peu de temps pour m'éclairer.

Cordialement

139intervention-1.xlsm (64.32 Ko)

Bonjour,

Personne n'a pris le relais, peut-être que la demande était trop longue ... je vais donc prendre le relais même si cela me démontre encore une fois que les userform ne sont pas la panacée ! je préfère réserver un onglet spécifique pour mettre à jour les données.

Sur ce premier point d'abord ...

mais le format "date" est inversé (les jours et les mois), pourtant (et sans y toucher), dans le code, le format est correcte.

oui le code est correct quand tu alimentes la textbox

TextBox_Date.Value = Format(Now, "dd/mm/yyyy")

mais quand tu récupères la valeur

Cells(no_ligne, 1) = TextBox_Date.Value

tu récupères non pas une date, non pas une valeur, mais du texte et là on laisse alors excel (d'origine anglo-saxonne) l’interpréter comme il veut ... et en priorité en mois/jour/année !!

Il faut d'abord transformer ce texte en date via un DateSerial ... je vais regarder cela tout à l'heure.

A minima mets :

Cells(no_ligne, 1) = CDate(TextBox_Date.Value)

un bout d'essai ci-après

52date-userform.xlsm (14.09 Ko)

tu peux aussi utiliser un calendrier

exemple ci-après (qui n'est pas de moi)

49saisie-date-v2.xlsm (43.30 Ko)

* lorsque je valide le bon d'intervention (classeur "services") et que l'autre classeur "services techniques" est ouvert, ce dernier se ferme automatiquement.

Pour ce point, c'est en effet lié à ces instructions :

        'Ouvre le classeur B
        Workbooks.Open Filename:=ThisWorkbook.Path & "\service technique.xlsm"
        Sheets("BD").Select
        ActiveSheet.Unprotect
'...
      ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
      ActiveWorkbook.Close savechanges:=True

ce qui signifie qu'il faudrait tester si le classeur est déjà ouvert, si oui ne pas fermer

=>

1- ajoute cette fonction

Function FichierEstOuvert(ByRef FichierTeste As String) As Boolean
    Dim Fichier As Long
    On Error GoTo Erreur
    Fichier = FreeFile
    Open FichierTeste For Input Lock Read As #Fichier
    Close #Fichier
    FichierEstOuvert = False
    Exit Function
Erreur:
    FichierEstOuvert = True
End Function

2- ajoute un terme :

Dim DejaOuvert as Boolean

et ensuite :

3-

        'Ouvre le classeur B
        DejaOuvert = FichierEstOuvert(ThisWorkbook.Path & "\service technique.xlsm")
        Workbooks.Open Filename:=ThisWorkbook.Path & "\service technique.xlsm"
        Sheets("BD").Select
        ActiveSheet.Unprotect
'...
      ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
      if not DejaOuvert  then ActiveWorkbook.Close savechanges:=True

Un exemple

* 1ère ligne vide sur le classeur du service technique

je n'ai pas vu ... peux-tu préciser ?

Merci pour votre aide,

malheureusement cela ne fonctionne pas. Ducou, j'ai gardé mes deux fichiers éxistants (services + technique), et j'ai crééé un troisième fichier (tampon), avec une macro lui demandant d'ouvrir ce 3ème fichier et de prendre les données, puis fermeture. Cela-dit, lorsque j'enregistre plusieurs "demandes" dans le formulaire du fichier "services", que je valide, le tampon s'effectue, sauf que sur le fichier réccupérateur "technique", ce dernier n'enregistre que la dernière demande :$ zut, zut et rezut !

Je rappelle que ces fichiers (ou classeurs) st destinés pour un EHPAD (Maison de retraite), afin que tous les services de soins puissent déclarer une demande de réparation au service technique pour qu'un technicien donc intervienne. Le fichier "services" possède un formulaire à remplir, qui en cliquant sur un bouton macro "enregistrer", cette demande est notifié ds un classeur "tampon" ds une base de données...Le classeur "technique" lui comporte le même tableau de base de données avec un bouton "rafraichir" qui effectue l'ouverture du "tampon" et vient prendre les données.

Apres tests, tout fonctionne, sauf lorsque j'enregistre plusieurs demandes (fichier "services") en enregistrant, le fichier "technique" lui, ne prend que la dernière demande, je n'arrive pas à m'en sortir ! cela fait 3 mois que je suis dessus, et je suis désespéré, merci d'avance, si j'obtiens une réponse ou une aide.

Tristan

Rechercher des sujets similaires à "classeurs bon interventions services soins technique"