[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 !

[Résolu][Calc] Gestion convocation

Messagepar OOotremer971 » 13 Août 2019 03:59

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   AgrandirRéduire
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é 22 fois
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10
Ubuntu 18.04.4 LTS
OpenSuse Leap
Avatar de l’utilisateur
OOotremer971
HédOOniste
HédOOniste
 
Message(s) : 2203
Inscrit le : 16 Avr 2010 14:31

Re: [Calc] Gestion convocation

Messagepar Norvak » 13 Août 2019 07:33

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é 427 fois


Que dois je faire?
Merci d'avance.
openoffice 4.1.6, windows 10
Norvak
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 23
Inscrit le : 01 Août 2019 09:36

Re: [Calc] Gestion convocation

Messagepar Dude » 13 Août 2019 08:42

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.
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 21310
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

Re: [Calc] Gestion convocation

Messagepar Norvak » 13 Août 2019 08:54

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
Norvak
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 23
Inscrit le : 01 Août 2019 09:36

Re: [Calc] Gestion convocation

Messagepar Dude » 13 Août 2019 09:16

Et moi, je n'ai pas compris ce que tu n'as pas compris.
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 21310
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

Re: [Calc] Gestion convocation

Messagepar Norvak » 13 Août 2019 09:28

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
Norvak
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 23
Inscrit le : 01 Août 2019 09:36

Re: [Calc] Gestion convocation

Messagepar Dude » 13 Août 2019 09:38

Norvak a écrit:De quoi parles tu par "contenu modifié"

no_problemo.gif
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
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 21310
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

Re: [Calc] Gestion convocation

Messagepar Norvak » 13 Août 2019 09:54

ok mais du coup comment je fais pour tester son tableau?
openoffice 4.1.6, windows 10
Norvak
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 23
Inscrit le : 01 Août 2019 09:36

Re: [Calc] Gestion convocation

Messagepar Dude » 13 Août 2019 10:21

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
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 21310
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

Re: [Calc] Gestion convocation

Messagepar Norvak » 13 Août 2019 10:42

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
Norvak
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 23
Inscrit le : 01 Août 2019 09:36

Re: [Calc] Gestion convocation

Messagepar OOotremer971 » 13 Août 2019 11:06

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
Ubuntu 18.04.4 LTS
OpenSuse Leap
Avatar de l’utilisateur
OOotremer971
HédOOniste
HédOOniste
 
Message(s) : 2203
Inscrit le : 16 Avr 2010 14:31

Re: [Calc] Gestion convocation

Messagepar Dude » 13 Août 2019 11:14

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
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 21310
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

Re: [Calc] Gestion convocation

Messagepar OOotremer971 » 13 Août 2019 11:37

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é 28 fois
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10
Ubuntu 18.04.4 LTS
OpenSuse Leap
Avatar de l’utilisateur
OOotremer971
HédOOniste
HédOOniste
 
Message(s) : 2203
Inscrit le : 16 Avr 2010 14:31

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

Messagepar Norvak » 13 Août 2019 13:15

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
Norvak
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 23
Inscrit le : 01 Août 2019 09:36

Re: [Calc] Gestion convocation

Messagepar OOotremer971 » 13 Août 2019 13:32

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
Ubuntu 18.04.4 LTS
OpenSuse Leap
Avatar de l’utilisateur
OOotremer971
HédOOniste
HédOOniste
 
Message(s) : 2203
Inscrit le : 16 Avr 2010 14:31


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : markotxe et 2 invité(s)