[Résolu][Calc] Extraction d'informations depuis un tableau

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] Extraction d'informations depuis un tableau

Messagepar shari » 24 Mars 2020 16:37


La modération vous a écrit: Suite de ce fil : viewtopic.php?p=337497#p337497


Bonjour à tous, je reviens vers vous pour un problème que je ne vois pas du tout comment aborder (c'est dire si la route est longue avant la solution!):
Je dispose dans un classeur de la position au jour le jour de plusieurs personnes (les noms sont en première colonne du tableau). Chaque feuille correspond à un mois de l'année et les jours sont renseignés selon la date. L'état de leur position est renseigné à partir d'outils de contrôle qui permettent de remplir les cases au fur et à mesure, telle que cela apparaît dans le fichier joint sur la feuillle "jan".
Je souhaite "extraire" ces données vers un autre tableau (que j'ai mis dans le même classeur pour l'instant, sur la feuille planif) mais d'une manière beaucoup plus simple: en fait, en sélectionnant le jour du début de la semaine sur laquelle je veux travailler(en cellule "planif!B2)"), je souhaiterais qu'automatiquement, les cases de la semaine se colorent en rouge si les personnes ont indiqué dans le premier tableau qu'elles étaient occupées (peu m'importe l'occupation, qu'il s'agisse d'un stage ou autre).

Je ne suis aps sur d'avoir été assez clair et reste bien entendu à l’affût de toute question!
Merci d'avance aux contributeurs

Nb: j'ai déjà posé cette même question dans le forum calc, mais on m'a conseillé de venir la poser ici en raison du problème que posent les cellules fusionnées dans le 1er tableau (je ne peux pas modifier le formatage de ce tableau)
Pièces jointes
test.ods
(40.85 Kio) Téléchargé 5 fois
Dernière édition par shari le 25 Mars 2020 08:40, édité 1 fois.
AOO417m1(Build:9800) - Rev. 46059c9192 Windows 10
Libreoffice 6.4.2.2 (x64)
shari
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 18
Inscrit le : 17 Jan 2020 11:28

Re: [Calc] Extraction d'informations depuis un tableau

Messagepar OOotremer971 » 24 Mars 2020 19:16

Un premier jet basé sur une petite fonction personnelle capable de retourner VRAI ou FAUX si une cellule est fusionnée :
Code : Tout sélectionner   AgrandirRéduire
Function ESTFUSION(arg As String) As Boolean
Dim oDoc As Object, oFeuille As Object, oCell As Object, oCC As Object
Dim ref() As String, f As String
oDoc = Thiscomponent
ref() = split(arg,".")
f = split(ref(0),"$")(1)
oFeuille = oDoc.Sheets.GetByName(f)
oCell = oFeuille.GetCellRangeByName(ref(1))
oCC = oFeuille.createCursorByRange(oCell)
oCC.collapseToMergedArea
ESTFUSION = oCC.IsMerged
End function


Il faut lui passer en argument une référence de cellule sous forme d'adresse absolue telle que celle renvoyée par la fonction CELLULE()

Pour le formatage conditionnel, n'ayant pas plus d'information au sujet des cellules de la feuille Jan contenant la valeur 1 ou 2, je me suis abstenu de les comptabiliser. Seules les cellules fusionnées et celles contenant du texte sont considérées pour activer le formatage conditionnel :
Code : Tout sélectionner   AgrandirRéduire
OU(ESTTEXTE(INDIRECT(CELLULE("ADRESSE";DECALER($Jan.$B$5;LIGNE(A1)-1;ENT((COLONNE(A1)-1)/2)+(EQUIV($B$2;$Jan.$B$4:$AF$4;0)-1)))));ESTFUSION(CELLULE("ADRESSE";DECALER($Jan.$B$5;LIGNE(A1)-1;ENT((COLONNE(A1)-1)/2)+(EQUIV($B$2;$Jan.$B$4:$AF$4;0)-1))))="True")


A tester :
Pièces jointes
FormatConditionnelEtCellulesFusionnees.ods
(38.63 Kio) Téléchargé 6 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) : 2217
Inscrit le : 16 Avr 2010 14:31

Re: [Calc] Extraction d'informations depuis un tableau

Messagepar shari » 24 Mars 2020 19:59

un immense merci pour ce travail! Je regarde tout ça au plus vite et reviendrai par la suite.
Mais merci, grand merci!
AOO417m1(Build:9800) - Rev. 46059c9192 Windows 10
Libreoffice 6.4.2.2 (x64)
shari
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 18
Inscrit le : 17 Jan 2020 11:28

Re: [Calc] Extraction d'informations depuis un tableau

Messagepar OOotremer971 » 25 Mars 2020 03:30

Bonjour,

Petite précision : le fichier ne fonctionne pas correctement sous LibreOffice. J'ai légèrement modifié la fonction ESTFUSION() pour y remédier et permettre aussi à cette fonction d’interpréter une adresse de cellule sans nom de feuille :

Code : Tout sélectionner   AgrandirRéduire
Function ESTFUSION(arg As String)
Dim oDoc As Object, oFeuille As Object, oCell As Object, oCursorByRange As Object
Dim ref() As String, f As String
oDoc = Thiscomponent
ref() = split(arg,".")
if Ubound(ref()) = 0 Then
   oFeuille = oDoc.CurrentController.ActiveSheet
   oCell = oFeuille.GetCellRangeByName(ref(0))
else
   f = split(ref(0),"$")(1)
   oFeuille = oDoc.Sheets.GetByName(f)
   oCell = oFeuille.GetCellRangeByName(ref(1))
end if

'oCell = oFeuille.GetCellRangeByName(ref(1))
oCursorByRange = oFeuille.createCursorByRange(oCell)
oCursorByRange.collapseToMergedArea
if oCursorByRange.IsMerged Then
   ESTFUSION = 1
else
   ESTFUSION = 0
end if
End function

et du coup, la formule du formatage conditionnel est légèrement différente aussi :
Code : Tout sélectionner   AgrandirRéduire
OU(ESTTEXTE(DECALER($Jan.$B$5;LIGNE(A1)-1;ENT((COLONNE(A1)-1)/2)+(EQUIV($B$2;$Jan.$B$4:$AF$4;0)-1)));ESTFUSION(CELLULE("ADRESSE";DECALER($Jan.$B$5;LIGNE(A1)-1;ENT((COLONNE(A1)-1)/2)+(EQUIV($B$2;$Jan.$B$4:$AF$4;0)-1)))))

et le fichier modifié :
Pièces jointes
FormatConditionnelEtCellulesFusionnees_Mod1.ods
(38.87 Kio) Téléchargé 8 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) : 2217
Inscrit le : 16 Avr 2010 14:31

Re: [Calc] Extraction d'informations depuis un tableau

Messagepar shari » 25 Mars 2020 07:40

Bon, le travail est vraiment impeccable, bravo et merci.
Je dois l'avouer tout de suite: je n'entrave rien à ta macro, mais je crois que je saurai faire sans la comprendre vraiment.
En revanche, étant transfuge d'excel, j'avoue que je patauge complètement dans LO et OO. Ce qui est plus ennuyeux, car je n'ai pas envie de te solliciter non plus à tout bout de champs pour des peccadilles mais là, je n'arrive même pas à éditer le formatage des cellules: quand je sélectionne une cellule=>formatage conditionnel=>éditer, j'ai un message qui me signale qu'il existe déjà un formatage, j'approuve et je clique sur éditer: et là, aucun formatage n’apparaît, impossible d'accéder à ta formule !
Ou se cache-t-elle???

Par ailleurs,il existe une fonction très pratique sur Excel qui permet d'évaluer les formules pour voir ce qu'elles renvoient argument par argument, et je ne parviens pas à trouver l'équivalent sous libreO.



Edit: trouvé! il fallait passer par format=>Conditionnel=>gérer!
AOO417m1(Build:9800) - Rev. 46059c9192 Windows 10
Libreoffice 6.4.2.2 (x64)
shari
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 18
Inscrit le : 17 Jan 2020 11:28

Re: [Calc] Extraction d'informations depuis un tableau

Messagepar micmac » 25 Mars 2020 08:34

Bonjour,
shari a écrit:il fallait passer par format=>Conditionnel=>gérer!
or
Dans votre signature il y a écrit:AOO417
Cherchez l'erreur. Cette fonction se trouve dans LibreOffice et pas dans OpenOffice.
Accès direct à votre signature pour la corriger ou la compléter.
Les formats ouverts (ODF) assurent la pérennité de vos documents.
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
 
Message(s) : 6606
Inscrit le : 28 Août 2010 09:45

Re: [Calc] Extraction d'informations depuis un tableau

Messagepar shari » 25 Mars 2020 08:39

Correction apportée!
AOO417m1(Build:9800) - Rev. 46059c9192 Windows 10
Libreoffice 6.4.2.2 (x64)
shari
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 18
Inscrit le : 17 Jan 2020 11:28

Re: [Résolu][Calc] Extraction d'informations depuis un table

Messagepar shari » 26 Mars 2020 09:40

je reviens sur ce code fourni car dès que je touche à une des cellules du fichier Formatconditionn...mod1.ods sur la feuille planif, j'ai une erreur levée sur la ligne 13

Code : Tout sélectionner   AgrandirRéduire
f = split(ref(0),"$")(1)

Valeur ou type de données incorrectes.Index hors de la plage définie

Et bien évidemment, je ne comprends pas. Désolé pour la demande de SaV.
AOO417m1(Build:9800) - Rev. 46059c9192 Windows 10
Libreoffice 6.4.2.2 (x64)
shari
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 18
Inscrit le : 17 Jan 2020 11:28

Re: [Résolu][Calc] Extraction d'informations depuis un table

Messagepar OOotremer971 » 26 Mars 2020 11:19

Bonjour,
shari a écrit:dès que je touche à une des cellules du fichier Formatconditionn...mod1.ods

Est-ce que tu peux préciser ce que tu fais exactement pour que l'erreur survienne car je ne reproduis pas ? Et éventuellement joindre le fichier incriminé si tu l'as modifié depuis mon envoi.

A+

Je vais être absent un dizaine d'heures
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) : 2217
Inscrit le : 16 Avr 2010 14:31

Re: [Résolu][Calc] Extraction d'informations depuis un table

Messagepar shari » 26 Mars 2020 11:30

Effectivement alors qu'il ne me semblait pas avoir modifié quoi que ce soit, je constate qu'en retéléchargeant le fichier, je n'ai pas cette erreur.
Ne te tracasse pas avec ça, je vais repartir d'un fichier sain!

Merci pour le suivi
AOO417m1(Build:9800) - Rev. 46059c9192 Windows 10
Libreoffice 6.4.2.2 (x64)
shari
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 18
Inscrit le : 17 Jan 2020 11:28


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 7 invité(s)