[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 !
shari
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 17 janv. 2020 10:28

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

Message par shari »


La modération vous a écrit: Suite de ce fil : https://forum.openoffice.org/fr/forum/v ... 97#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)
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par shari le 25 mars 2020 07:40, modifié 1 fois.
AOO417m1(Build:9800) - Rev. 46059c9192 Windows 10
Libreoffice 6.4.2.2 (x64)
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
Messages : 2744
Inscription : 16 avr. 2010 13:31

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

Message par OOotremer971 »

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

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

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 :
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
shari
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 17 janv. 2020 10:28

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

Message par shari »

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

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

Message par OOotremer971 »

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

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

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é :
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
shari
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 17 janv. 2020 10:28

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

Message par shari »

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)
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9252
Inscription : 28 août 2010 08:45

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

Message par micmac »

Bonjour,
[b][color=#404080]shari[/color][/b] 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.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
shari
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 17 janv. 2020 10:28

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

Message par shari »

Correction apportée!
AOO417m1(Build:9800) - Rev. 46059c9192 Windows 10
Libreoffice 6.4.2.2 (x64)
shari
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 17 janv. 2020 10:28

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

Message par shari »

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

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

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

Message par OOotremer971 »

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 et 11
shari
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 17 janv. 2020 10:28

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

Message par shari »

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)