[Résolu] [Calc]Lister fichiers non ouverts d'un répertoire

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
FranckGa30
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 10 avr. 2019 07:52

[Résolu] [Calc]Lister fichiers non ouverts d'un répertoire

Message par FranckGa30 »

Bonjour à tous et à toutes,

Je suis en train de développer un petit outil sous Calc.
Cet outil sera sous la forme d'un formulaire destiné à remplir automatiquement plusieurs fichiers communs.
Ce "programme" sera placé sur un réseau et pourra être utilisé par plusieurs utilisateurs simultanément.

Pour détourner le problème j'ai pensé faire plusieurs copies du programme :
MonOutil.Base1.ods
MonOutil.Base2.ods
MonOutil.Base3.ods
...
MonOutil.Base10.ods
Et créer un "lanceur" de l'outil.

Je cherche donc un petit programme qui serait juste destiné à proposer à l'utilisateur de sélectionner une base "Libre".
Je vois ça sous la forme d'une petite boîte de dialogue dans laquelle il y aurait une liste de choix proposant les différents fichiers qui ne sont pas en cours d'utilisation.

Quelqu'un saurait-il faire ça ????
Dernière modification par FranckGa30 le 16 avr. 2019 19:04, modifié 3 fois.
LibreOffice 4.3.7.2 sous Windows 7 professionnel (Service Pack 1) ... Obligation de version
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Un seul fichier avec plusieurs utilisateurs

Message par Dude »

Salut,

Calc est un tableur et n'est pas conçu pour de l'accès multi-utilisateurs.
FranckGa30 a écrit :Cet outil sera sous la forme d'un formulaire destiné à remplir automatiquement plusieurs fichiers communs.
Tout ceci est du ressort du module Base.
Rien ne t'empêchera ensuite de récupérer les informations dans un classeur ensuite.
FranckGa30
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 10 avr. 2019 07:52

Re: [Calc] Un seul fichier avec plusieurs utilisateurs

Message par FranckGa30 »

Bonjour Dude et merci pour ta réponse.
Mon souci est que je ne connais pas du tout Base. Je ne l'ai même jamais ouvert :D
C'est pour celà que je cherche à contourner le problème.
J'ajoute que l'outil que je développe est destiné à des utilisateurs plutôt réfractaire à l'outil informatique.
Ils ont l'habitude de travaille avec Calc ou Writer ... mais leur compétences s'arrêtent là, tout comme la mienne :lol:
LibreOffice 4.3.7.2 sous Windows 7 professionnel (Service Pack 1) ... Obligation de version
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Un seul fichier avec plusieurs utilisateurs

Message par Dude »

FranckGa30 a écrit :Ils ont l'habitude de travaille avec Calc ou Writer
Un formulaire sous Base n'est rien d'autre qu'un document Writer.
FranckGa30 a écrit : différents fichiers qui ne sont pas en cours d'utilisation.
Comme toujours, un peu de recherche dans ce forum où pratiquement toutes les questions ont déjà des (débuts de) réponses :
https://forum.openoffice.org/fr/forum/v ... ier+ouvert

Mais franchement, bonjour le casse-tête ensuite pour consolider de multiples classeurs.

Bon courage
FranckGa30
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 10 avr. 2019 07:52

Re: [Calc] Un seul fichier avec plusieurs utilisateurs

Message par FranckGa30 »

Je ne comprends pas trop ta réponse :(
Je suis désolé mais je commence juste à utiliser Calc et je n'ai que quelques vagues notions de programmation.
Si je comprends bien la commande ".isReadonly()" permet de charger le document en lecture seule.

Or ce que je voudrai faire c'est de proposer à l'utilisateur de choisir uniquement parmi les fichiers disponibles ... sans avoir à lancer chaque "Base".
LibreOffice 4.3.7.2 sous Windows 7 professionnel (Service Pack 1) ... Obligation de version
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: [Calc] Un seul fichier avec plusieurs utilisateurs

Message par Hubert Lambert »

Bonjour,

Calc permet nativement de travailler à plusieurs sur un même fichier : https://help.libreoffice.org/index.php? ... oration/fr.
Si cela ne rencontre pas ton problème, pourrais-tu le préciser ?
Cordialement.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
FranckGa30
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 10 avr. 2019 07:52

Re: [Calc] Un seul fichier avec plusieurs utilisateurs

Message par FranckGa30 »

Bonjour Hubert et avant tout, un grand merci pour ta réponse.

Malheureusement la solution que tu me proposes n'est pas envisageable dans mon cas.
En effet, les utilisateurs ont des tâches différentes.
Je m'explique ;)
Un utilisateur pourra par exemple faire une simple saisie de données alors qu'en même temps un autre utilisateur utilisera l'outil dans un but d'édition d'un rapport de calcul.
Il ne m'est pas possible d'envisager que les 2 utilisateurs travaillent sur le même fichier car leurs tâches ne sont pas "compatibles".

Ce que je cherche à faire est beaucoup plus simple ;) .... car si je veux que l'outil propose plusieurs fonctions (afin de pouvoir "regrouper" certaines tâches dans un même fichier), je peux tout à fait envisager plusieurs fichiers identiques indépendants ;)

Ainsi, pour faire simple voilà ce que je souhaite faire :

Dans un dossier j'aurai mes outils (ie : exactement le même programme mais avec des noms différents)
Toto.Base1.ods, Toto.Base2.ods, Toto.Base3.ods, ... etc.
Pour que l'utilisateur n'ait pas à lancer chaque base les unes à la suite des autres :
> Toto.Base1.ods et s'apercevoir que le fichier est déjà utilisé par Paul,
> Toto.Base2.ods et s'apercevoir qu'il est déjà utilisé par Jacques
> ... etc.

Je voudrais créer un fichier "Go.ods" :mrgreen:

Ce fichier "Go" afficherait un boite de dialogue "Sélectionnez une base utilisateur dans la liste ci-dessous".
Et dans la liste proposée ne figurerait que les fichiers qui ne sont pas en cours d'utilisation : Toto.Base5.ods, Toto.Base6.ods ...
Mais pas Toto.Base1.ods ni Toto.Base2.ods qui sont en cours d'utilisation par Paul et Jacques.

Voilà la mission .... si tu l'acceptes :lol:
LibreOffice 4.3.7.2 sous Windows 7 professionnel (Service Pack 1) ... Obligation de version
Avatar de l’utilisateur
OOo - Ekel
SuppOOrter
SuppOOrter
Messages : 1273
Inscription : 10 nov. 2006 15:04
Localisation : F-Oise

Re: [Calc] Un seul fichier avec plusieurs utilisateurs

Message par OOo - Ekel »

Bonsoir,

Et pourquoi pas assigner un fichier XXX.Base.ods à un utilisateur ?

Chaque utilisateur ayant le sien, pas risque qu'il utilise celui d'un autre déjà en cours d'usage, non ?

Trop simple ou les utilisateurs ne sont pas assez disciplinés pour que cela aille ?

Cordialement.
Ekel

KUbuntu Jammy Jellyfish (22.04) : LibreOffice 24.2.0.3 Officielle
AMD Ryzen 5 5600G
AMD Radeon RX 6650 XT
22" + 22"
16 Go
____________________
Pour les règles du jeu.
Pour marquer Résolu.
Pour joindre un fichier.
FranckGa30
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 10 avr. 2019 07:52

Re: [Calc] Un seul fichier avec plusieurs utilisateurs

Message par FranckGa30 »

Merci OOo - Ekel,

ça aurait pu être une bonne solution, mais les utilisateurs sont très nombreux alors qu'ils n'utilisent l'outil que rarement (1 à 2 fois par mois)
Aussi, créer 100 copies de mon fichier alors que l'outil ne devrait pas compter plus de 10 utilisateurs simultanés me paraît un peu abusif :mrgreen:
Ceci dit je retiens ta proposition pour une paire d'utilisateurs qui eux seront amenés à utiliser l'outil quotidiennement ;)
LibreOffice 4.3.7.2 sous Windows 7 professionnel (Service Pack 1) ... Obligation de version
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
Messages : 2744
Inscription : 16 avr. 2010 13:31

Re: [Calc] Un seul fichier avec plusieurs utilisateurs

Message par OOotremer971 »

Bonjour,

J'ai du mal à saisir le rapport qu'il y a entre le titre de ton sujet : Un seul fichier avec plusieurs utilisateurs
et ta requête :
FranckGa30 a écrit :une liste de choix proposant les différents fichiers qui ne sont pas en cours d'utilisation.


Si tu souhaites que ton sujet soit utile à d'autres personne à la recherche de solution sur cette problématique, je te conseille vivement de modifier son titre (dans le premier message)

Lister les fichiers non ouverts d'un répertoire, par exemple. Merci !


Pour ce qui concerne ton soucis, logiquement, lorsqu'un fichier est ouvert, il se crée automatiquement un fichier .~lock du même nom dans le répertoire concerné.

L'idée est de créer une liste des fichiers .ods contenus dans ton répertoire, et une autre liste des fichier dont le préfixe est .~lock.
Ensuite, on supprime de la liste des fichiers .ods, tous les fichiers du même nom que ceux de la liste contenant le préfixe .~lock

Il faudra mettre dans le code le bon chemin vers ton répertoire : en remplaçant "/home/oootremer971/Documents/Forum/TestDir/"

Avant d'aller plus loin, à tester pour voir si le principe convient à la situation.

Code : Tout sélectionner

REM  *****  BASIC  *****
REM https://forum.openoffice.org/fr/forum/viewtopic.php?f=8&t=60291

Option Explicit

Sub ListerLesFichiersDunRepertoireBis

'""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
'        mettre ici le chemein vers le bon répertoire            '"
Const repertoire = "/home/oootremer971/Documents/Forum/TestDir/" '"
'""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

Dim fichier As String, l1 As String, l2 As String, elem As String
Dim j As Long
Dim cl2 As Variant

l1 = "" : l2 = ""

'on demande à la fonction Dir de rechercher tous les fichiers .ods du répertoire
fichier = Dir(repertoire & "*.ods", 0)
Do While Len(fichier) > 0
'on écrit le nom trouvé dans une liste
l1 = l1 & fichier & chr(10)
'on passe au suivant
fichier = Dir
loop
'là on fait la même chose avec les fichiers .~lock dans une autre liste
fichier = Dir(repertoire & "*.~lock.*", 0)
Do While Len(fichier) > 0
'ici en plus de créer une liste, on élimine le prefixe .~lock et le suffixe #
l2 = l2 & mid(fichier,8,Len(fichier)-8)  & chr(10)
fichier = Dir
Loop
'on efface de la liste1 les éléments trouvés en liste2 
cl2 = split(l2,chr(10))
for j = Ubound(cl2) to 0 step -1		
	if cl2(j) <> "" Then
		elem = cl2(j) & chr(10)		
		if InStr(1, l1, elem, 1) Then
			mid(l1,InStr(1, l1, elem, 1),len(elem),"")	
		End if
	end if	
next
mid(l1,len(l1),1,"")	
msgBox l1
end sub
et le fichier pour tester :

A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10 et 11
FranckGa30
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 10 avr. 2019 07:52

Re: [Calc] Lister les fichiers non ouverts d'un répertoire

Message par FranckGa30 »

Bonjour OOotremer971 ... et merci pour ta réponse :bravo: ... C'est exactement ce que j'attendais

J'ai changé le titre du message pour que le sujet soit plus parlant :wink:

Je vais essayer de finir tout seul pour ne pas trop accaparer ton cerveau et en laisser un peu pour les autres :lol:

Il faut juste que j'affecte ta liste dans une zone de liste ... je garde espoir :mrgreen:

Encore une fois MERCI beaucoup pour ton aide ... et peut-être à bientôt car je ne suis pas sorti du sable avec mon projet :fou:
LibreOffice 4.3.7.2 sous Windows 7 professionnel (Service Pack 1) ... Obligation de version
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
Messages : 2744
Inscription : 16 avr. 2010 13:31

Re: [Calc] Lister les fichiers non ouverts d'un répertoire

Message par OOotremer971 »

FranckGa30 a écrit :Il faut juste que j'affecte ta liste dans une zone de liste ... je garde espoir :mrgreen:
Tu devrais trouver des exemple sur ce forum, si non ouvre un nouveau sujet en y joignant un fichier contenant l'ébauche de ton formulaire et le code pour générer la liste.

A+
 Ajout : on peut faire plus simple en créant d'abord la liste des fichiers .~lock. De cette façon, lorsque l'on crée la liste des fichiers .ods il plus aisé de vérifié à chaque tour de boucle que le fichier .ods trouvé existe ou pas dans liste des .~lock. Si il existe on ne l'ajoute pas à la liste si non on l'ajoute :

Code : Tout sélectionner

REM  *****  BASIC  *****
REM https://forum.openoffice.org/fr/forum/viewtopic.php?f=8&t=60291

Option Explicit

Sub ListerFichiersNonOuverts

'""""""""""""""""""""""""""""""""""""""""""""""""""""""""
'    mettre ici le chemein vers le bon répertoire      '"
Const repertoire = "/home/oootremer971/Téléchargements/" '"
'""""""""""""""""""""""""""""""""""""""""""""""""""""""""

Dim fichier As String, l1 As String, l2 As String
l1 = "" : l2 = ""
fichier = Dir(repertoire & "*.~lock.*", 0)
Do While Len(fichier) > 0
l1 = l1 & fichier & chr(10)
fichier = Dir
Loop
fichier = Dir(repertoire & "*.ods", 0)
Do While Len(fichier) > 0
	if InStr(1, l1, fichier, 0) = 0 Then 
		l2 = l2 & fichier & chr(10)
	end if
fichier = Dir
loop
mid(l2,len(l2),1,"")	
msgBox l2
end sub
 
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10 et 11
FranckGa30
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 10 avr. 2019 07:52

Re: [Résolu] [Calc]Lister fichiers non ouverts d'un répertoi

Message par FranckGa30 »

C'est une nouvelle fois PARFAIT !!!! :super:
Merci pour ton aide très précieuse
@+
LibreOffice 4.3.7.2 sous Windows 7 professionnel (Service Pack 1) ... Obligation de version