[Résolu][Calc] Gestion convocation

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 !
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
Messages : 2744
Inscription : 16 avr. 2010 15:31

[Résolu][Calc] Gestion convocation

Message par OOotremer971 »

Bonjour,

Pour faire suite à ce fil : colorer des lignes sous conditions

Un premier jet qui peut encore être amélioré en fonction des contraintes que l'utilisateur final est susceptible de devoir affronter. Je me suis autoriser quelques libertés qui n'apparaissaient pas dans le cahier des charges, réversibles si besoin :
-) J'ai mis une liste déroulante dans les colonnes J,M,P afin de sélectionner A ou P pour absent ou présent, cela limite les erreurs de saisie.
-) Lorsqu'une des colonnes J,M,P contient la lettre P, la ligne est volontairement verrouillée. Pour effectuer une éventuelle correction sur une ligne, il faut sélectionner "Corriger" dans la colonne R et modifier ce qui doit l'être sur cette ligne. Elle sera à nouveau protégée lorsqu'un P aura été saisi.Pour communiquer entre la feuille1 et la feuille2, j'ai besoin d'un identifiant unique pour retrouver les lignes écartée lors de la première absence. Je me suis basé sur la colonne A en espérant que chaque ligne possède un numéro différent.

Le fichier est conçu pour fonctionner ligne par ligne. Si il devait être alimenté par copier coller d'un autre fichier, il faudrait copier/coller les données de la colonne A à I (pas plus). La colonne J devra être remplie manuellement ligne par ligne pour que le système fonctionne correctement.

Je te laisse tester, n’hésite pas à te plaindre si ça ne fonctionne pas correctement et n'hésite pas non plus à persévérer pour comprendre comment il fonctionne.

Code : Tout sélectionner

Option Explicit
 

Sub Main(oEvt)
if oEvt.supportsService("com.sun.star.table.Cell") then
	Dim oDoc As Object, oCa As Object
	Dim nSheet As Long, nCol As Long, nRow As Long
	oDoc = Thiscomponent : oCa = oEvt.CellAddress
	nSheet = oCa.Sheet : nCol = oCa.Column : nRow = oCa.Row
	Select Case nCol
		Case 9, 12, 15, 17
			Select Case oEvt.String
			 Case "A"
			 	If nCol = 15 Then
			 		oDoc.Sheets(nSheet).GetCellRangeByPosition(0,nRow,16,nRow).CellStyle = "AA"
					oDoc.Sheets(nSheet).GetCellByPosition(16,nRow).SetString("RENONCE")
			 	End If
			 	If nCol = 12 Then
			 		oDoc.Sheets(nSheet).GetCellRangeByPosition(0,nRow,nCol,nRow).CellStyle = "A"
			 		oDoc.Sheets(nSheet).GetCellRangeByPosition(nCol+1,nRow,16,nRow).CellStyle = "STD"
			 	End If
			 	If nCol = 9 Then
			 		Dim y As Long, ref As Long, Formule1 As String, Formule2 As String
			 		ref = oDoc.Sheets(nSheet).GetCellByPosition(0,nRow).Value
					y = EmptyFirstLine(nSheet+1)
			 		oDoc.Sheets(nSheet).GetCellRangeByPosition(0,nRow,nCol,nRow).CellStyle = "A"
			 		oDoc.Sheets(nSheet).GetCellRangeByPosition(nCol+1,nRow,16,nRow).CellStyle = "STD"
			 		oDoc.Sheets(nSheet+1).GetCellRangeByPosition(0,y,9,y).SetDataArray(oDoc.Sheets(nSheet).GetCellRangeByPosition(0,nRow,9,nRow).DataArray)
					oDoc.Sheets(nSheet+1).GetCellRangeByPosition(0,y,9,y).CellStyle = "A"
					Formule1 ="=IF(ISERROR(VLOOKUP($A"&Cstr(nRow+1)&";$Feuille2.$A$1:$L$1000;COLUMN();0));""""&T(STYLE(""STD""));TEXT(VLOOKUP($A"&Cstr(nRow+1)&";$Feuille2.$A$1:$L$1000;COLUMN();0);""JJ/MM/AA""))&T(STYLE(""A""))"
					Formule2 ="=IF(ISERROR(VLOOKUP($A"&Cstr(nRow+1)&";$Feuille2.$A$1:$L$1000;COLUMN();0));""""&T(STYLE(""STD""));TEXT(VLOOKUP($A"&Cstr(nRow+1)&";$Feuille2.$A$1:$L$1000;COLUMN();0);""HH:MM:SS""))&T(STYLE(""A""))"
					oDoc.Sheets(nSheet).GetCellByPosition(nCol+1,nRow).SetFormula(Formule1)
					oDoc.Sheets(nSheet).GetCellByPosition(nCol+2,nRow).SetFormula(Formule2)
			 	End If
			 Case "P"
			 	oDoc.Sheets(nSheet).GetCellRangeByPosition(0,nRow,nCol,nRow).CellStyle = "P"
			 	oDoc.Sheets(nSheet).GetCellRangeByPosition(nCol+1,nRow,16,nRow).CellStyle = "GR"
			 	oDoc.Sheets(nSheet).GetCellByPosition(16,nRow).SetString("")
			 
			 Case "Modifier"
			 	oDoc.Sheets(nSheet).GetCellRangeByPosition(0,nRow,16,nRow).CellStyle = "STD"
			 	oDoc.Sheets(nSheet).GetCellByPosition(17,nRow).SetString("")	
		End Select
	End select
End if
End Sub

Function EmptyFirstLine(index As Long) As Long
EmptyFirstLine = Thiscomponent.Sheets(index).Columns.GetByName("A").queryEmptyCells.RangeAddresses(0).StartRow
End Function


et le fichier pour tester :
Pièces jointes
GestionConvocations.ods
(12.42 Kio) Téléchargé 118 fois
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10 et 11
Norvak
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 01 août 2019 10:36

Re: [Calc] Gestion convocation

Message par Norvak »

Bonjour,
merci d'avoir pris du temps pour m'aider, cependant je ne sais pas si je dois l'executer ta macro ou si elle est déjà censé fonctionner?
Car j'ai fait un test ça n'a pas marché puis ensuite je suis aller outils > macros > executer une macro > gestion convocation> standard > module 1 > main et cela m'a mis un message d'erreur :
erreur msg.png
erreur msg.png (9.7 Kio) Consulté 2046 fois
Que dois je faire?
Merci d'avance.
openoffice 4.1.6, windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25143
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: [Calc] Gestion convocation

Message par Dude »

La macro est branchée sur l'événement de feuille "Contenu modifié".
Elle ne doit pas être exécutée en direct car elle attends les coordonnées de la cellule active.
Norvak
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 01 août 2019 10:36

Re: [Calc] Gestion convocation

Message par Norvak »

Dude a écrit :La macro est branchée sur l'événement de feuille "Contenu modifié".
Elle ne doit pas être exécutée en direct car elle attends les coordonnées de la cellule active.
Bonjour,
Excuse moi mais j'ai rien compris à ton msg, ... :super:
openoffice 4.1.6, windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25143
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: [Calc] Gestion convocation

Message par Dude »

Et moi, je n'ai pas compris ce que tu n'as pas compris.
Norvak
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 01 août 2019 10:36

Re: [Calc] Gestion convocation

Message par Norvak »

Dude a écrit :La macro est branchée sur l'événement de feuille "Contenu modifié".
Je ne vois pas où est "contenue modifié"? sur la piècejointe il ya feuille 1 et 2.De quoi parles tu par "contenu modifié"
Dude a écrit :Elle ne doit pas être exécutée en direct car elle attends les coordonnées de la cellule active.
ne doit pas être exécutée en direct c'est à dire?
cellule active?
openoffice 4.1.6, windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25143
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: [Calc] Gestion convocation

Message par Dude »

Norvak a écrit :De quoi parles tu par "contenu modifié"
Clique sur l'image pour en voir l'animation
Clique sur l'image pour en voir l'animation
Norvak a écrit :ne doit pas être exécutée en direct c'est à dire?
Norvak a écrit :je suis aller outils > macros > executer une macro > gestion convocation> standard > module 1 > main et cela m'a mis un message d'erreur
Norvak
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 01 août 2019 10:36

Re: [Calc] Gestion convocation

Message par Norvak »

ok mais du coup comment je fais pour tester son tableau?
openoffice 4.1.6, windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25143
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: [Calc] Gestion convocation

Message par Dude »

Il me semble que OOotremer971 te donne un mode d'emploi au départ non ?

Néanmoins comme le code qu'il publie dans son 1er message ne correspond pas à celui qui est dans le document, je lui laisse le soin d'expliquer son travail.

Mais comme j'ai l'habitude de le dire, l'usage de macro n'est jamais la panacée.
Le tableur dispose de fonctionnalités internes qu'il convient d'exploiter avant.
Et si le problème n'est pas résolu, se poser la question : une suite bureautique est-il l'outil adapté ?

Bon courage
Norvak
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 01 août 2019 10:36

Re: [Calc] Gestion convocation

Message par Norvak »

Dude a écrit :Il me semble que OOotremer971 te donne un mode d'emploi au départ non ?
sauf que son mode d'emploi ne marche pas ou alors j'ai raté un épisode mais lequel? :lol:
Dude a écrit :Et si le problème n'est pas résolu, se poser la question : une suite bureautique est-il l'outil adapté ?
Qu'entends tu par là? :shock:
openoffice 4.1.6, windows 10
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
Messages : 2744
Inscription : 16 avr. 2010 15:31

Re: [Calc] Gestion convocation

Message par OOotremer971 »

Bonjour,

Je viens de télécharger le fichier que j'ai mis en ligne et effectivement les dernières modifications ne se sont pas enregistrées correctement. Je modifie ça et je reviens.

A+

Désolé
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10 et 11
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25143
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: [Calc] Gestion convocation

Message par Dude »

Norvak a écrit :Qu'entends tu par là? :shock:
J'entends qu'un tableur est souvent utilisé pour n'importe quoi :
http://oooforum.free.fr/index.php/2016/ ... -planning/
Il suffit de remplacer "planning" par "gestion convocation". :lol:
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
Messages : 2744
Inscription : 16 avr. 2010 15:31

Re: [Calc] Gestion convocation

Message par OOotremer971 »

Une version corrigée. C'est bizarre cette histoire d'enregistrement qui se fait pas :(
Il reste une petite modification à faire sur l'affichage des colonnes K et L lorsque la feuille2 n'est pas renseignée. Corrigé
A+
Pièces jointes
GestionConvocations_Mod1.ods
(11.82 Kio) Téléchargé 130 fois
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10 et 11
Norvak
Membre lOOyal
Membre lOOyal
Messages : 26
Inscription : 01 août 2019 10:36

[Résolu]:Re: [Calc] Gestion convocation

Message par Norvak »

waaaaa le génie :bravo: , meercii mille fois j'espère que ça va pas être trop galère à reproduire sur mon tableau :lol:
je te tiens au courant si j'ai réussi mais en tout cas sur ton tableau ça marche nickel cette fois.
comme quoi tu vois c'est pas ma faute "dude" y avait une couille dans sa macro 8)
openoffice 4.1.6, windows 10
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
Messages : 2744
Inscription : 16 avr. 2010 15:31

Re: [Calc] Gestion convocation

Message par OOotremer971 »

Norvak a écrit :j'espère que ça va pas être trop galère à reproduire sur mon tableau :lol:
Ça risque de l'être et quitte à perdre du temps autant le faire efficacement.

Transfère les données de ton fichier vers le mien. Tu peux faire un copier/collage spécial (décocher format) de la zone A1:Ix de ton fichier vers le mien. Ensuite, à partir de la colonne J, tu travailles ligne par ligne pour renseigner la colonne J et les suivantes le cas échéant et tout devrait bien se passer.

A+
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10 et 11
Verrouillé