Calc. Scinder les données d'une cellule en lignes.

Bonjour,

LIBO 5.1.2.2, Kubuntu 16.04 ou, au travail, W7 et LIBO 3.xxx (je ne sais
plus de quelle version il s'agit)

Je procède à l'extraction de données (plusieurs centaines de lignes) depuis
une application métier. J'ai des informations agrégées dans une seule
cellule (Calc) de la forme :

"Filtre structurel codique : , XXX (049026)
Identifiant organisme (CODE_BUDCOLL), liste de valeurs autorisées :
04902642200, 04902642100, 04902642800"

Les cellules de la sorte sur chaque ligne sont différentes dans le sens où
elles délimitent les habilitations informatiques attribuées à plusieurs
centaines d'agents (un par ligne).

Supprimer toutes les lettres et espaces superflus ne me pose pas de
problème, pour aboutir à cette structure :

04902642200,04902642100,04902642800

Remplacer si nécessaire la virgule par un autre séparateur n'est pas non
plus une difficulté. Ce que je ne vois pas, c'est comment scinder ces
informations dans une seule cellule en autant de lignes qu'il y a de
numéros, comme ceci

04902642200
04902642100
04902642800

Au cas particulier, l'agent sera sur 3 lignes après traitement. Ce que je
voudrais, c'est ensuite passer ce fichier dans Base afin de mettre en face
de chaque numéro le nom en clair de la collectivité correspondante

J'ai, par ailleurs, le fichier des collectivités comme ceci qui est
directement exploitable :

04902642200 PANTIN
04902642100 ORLÉANS
04902642800 TOULOUSE

Maintenant, il y a peut-être une autre solution sans passer par Base (j'aime
bien Base :-)) pour aboutir au même résultat mais je ne vois pas laquelle.

Je vous remercie pour votre aide et vous souhaite une agréable journée,

Dominique

Bonjour Dominique,

Je procède à l'extraction de données (plusieurs centaines de lignes) depuis
une application métier. J'ai des informations agrégées dans une seule
cellule (Calc) de la forme :

le fichier source est un ods ? ou bien un csv ?

L'opération est-elle one-shot ou récurrente ?

"Filtre structurel codique : , XXX (049026)
Identifiant organisme (CODE_BUDCOLL), liste de valeurs autorisées :
04902642200, 04902642100, 04902642800"

Les cellules de la sorte sur chaque ligne sont différentes dans le sens où
elles délimitent les habilitations informatiques attribuées à plusieurs
centaines d'agents (un par ligne).

Supprimer toutes les lettres et espaces superflus ne me pose pas de
problème, pour aboutir à cette structure :

04902642200,04902642100,04902642800

pour du one-shot : répartir en colonnes, sélectionner les colonnes, collage spécial > transposer.
Ca marche bien pour un agent unique mais avec plusieurs centaines à la queue-leu-leu ça va pas le faire.

Remplacer si nécessaire la virgule par un autre séparateur n'est pas non
plus une difficulté. Ce que je ne vois pas, c'est comment scinder ces
informations dans une seule cellule en autant de lignes qu'il y a de
numéros, comme ceci

04902642200
04902642100
04902642800

Au cas particulier, l'agent sera sur 3 lignes après traitement. Ce que je
voudrais, c'est ensuite passer ce fichier dans Base afin de mettre en face
de chaque numéro le nom en clair de la collectivité correspondante

A première vue, je travaillerais sur un fichier csv que je filtrerais via une macro (elle serait assez simple en fait).

1. Première ligne : on extrait le codique (si c'est utile par la suite)

2. Deuxième ligne : on extrait l'id organisme (idem)

3. on filtre les codes par agent et on écrit un fichier csv/ods

pour chaque ligne
3.a. On lit la ligne
3.b. on crée un tableau à partir de la ligne en séparant les éléments sur les virgules (fonction Split())
3.c. on écrit un fichier texte (csv) qui contient, par ligne, les éléments du tableau, comme demandé (en enlevant les espaces)

-> retour à 3.a.
jusqu'à la fin du fichier

4. si on veut, on peut même, en bout de course, convertir le fichier csv ainsi généré en ods :slight_smile:

5. on fabrique (manuellement) un classeur séparé qui va croiser notre fichier ci-dessus avec celui des collectivités.

Simple, de bon goût... pas compliqué à faire.

Bien cordialement,

Bonjour Jean-François,

Je te remercie pour ta réponse mais elle ne va pas être utilisable.

En effet, je réfléchis sur une méthodologie qui doit être ensuite déployée
auprès d'un bon millier de chefs d'unités qui devront procéder à un contrôle
au minimum annuel des habilitations informatiques qu'ils ont attribuées.

Il me faut élaborer un pas-à-pas clair destiné à des utilisateurs qui n'ont
pas obligatoirement une grande agilité en informatique.

Déjà, quand je leur parle de REGEX, j'ai des cas de dépression. Alors un
script :slight_smile:

Bien à toi,

Dominique

Re,

8<-------------------------------------------------------------------
Je te remercie pour ta réponse mais elle ne va pas être utilisable.

En effet, je réfléchis sur une méthodologie qui doit être ensuite déployée
auprès d'un bon millier de chefs d'unités qui devront procéder à un contrôle
au minimum annuel des habilitations informatiques qu'ils ont attribuées.

Il me faut élaborer un pas-à-pas clair destiné à des utilisateurs qui n'ont
pas obligatoirement une grande agilité en informatique.

Déjà, quand je leur parle de REGEX, j'ai des cas de dépression. Alors un
script :slight_smile:

-------------------------------------------------------------->8

Je m'as mal exprimé : je parlais d'une macro qui peut être intégrée à un modèle.ods.

On ouvre le modèle,
1. on clique sur un bouton pour ouvrir le fichier kivabien (ou kivamal)
2. et hop ! On a la feuille 1 (ou autre) qui se remplit "toute seule".
3. On peut enregistrer (un autre ch'ti bitogniau) ...et manipuler ce fichier.

Comme ça, pour des chefs, c'est bon, non ? :wink:

Bien cordialement,

Bonjour,

Au vu de tes données, je pense que la solution c'est au moment où Calc récupère les données.

Bonjour,

LIBO 5.1.2.2, Kubuntu 16.04 ou, au travail, W7 et LIBO 3.xxx (je ne sais
plus de quelle version il s'agit)

Je procède à l'extraction de données (plusieurs centaines de lignes) depuis
une application métier.

Comme demandé par Jean-François, quel est le résultat de l'extraction ? Un fichier CSV ? Un vrai/faux XLS ? Un fichier ODS ?

J'ai des informations agrégées dans une seule
cellule (Calc) de la forme :

"Filtre structurel codique : , XXX (049026)
Identifiant organisme (CODE_BUDCOLL), liste de valeurs autorisées :
04902642200, 04902642100, 04902642800"

Je pars de l'hypothèse que l'extraction donne un fichier texte (CSV ou faux XLS).
Visiblement, l'import se fait mal, puisque l'application métier semble avoir prévu des séparateurs de colonnes (la virgule) qui n'ont pas été reconnus.
Si l'import doit se faire régulièrement, il faut au moment de l'ouverture du fichier d'extraction, indiquer que la virgule est séparateur de colonne, et peut-être aussi le double point et les parenthèses si tu veux récupérer les autres informations dans des colonnes séparées. Si tu veux garder le 0 au début des numéros, il faudra préciser que ce sont des colonnes texte.

Les cellules de la sorte sur chaque ligne sont différentes dans le sens où
elles délimitent les habilitations informatiques attribuées à plusieurs
centaines d'agents (un par ligne).

Supprimer toutes les lettres et espaces superflus ne me pose pas de
problème, pour aboutir à cette structure :

04902642200,04902642100,04902642800

Pour les fichiers qui ont déjà été créés, il faut sélectionner les données et choisir la commande Données > Texte en colonne et cocher la virgule comme séparateur de colonne.
Tu sépares ainsi dans des colonnes.

Remplacer si nécessaire la virgule par un autre séparateur n'est pas non
plus une difficulté. Ce que je ne vois pas, c'est comment scinder ces
informations dans une seule cellule en autant de lignes qu'il y a de
numéros, comme ceci

04902642200
04902642100
04902642800

Là tu veux transposer tes données. Donc comme l'as indiqué Jean-François : Copier, puis Collage spécial et cocher Transposée.

Au cas particulier, l'agent sera sur 3 lignes après traitement. Ce que je
voudrais, c'est ensuite passer ce fichier dans Base afin de mettre en face
de chaque numéro le nom en clair de la collectivité correspondante

J'ai, par ailleurs, le fichier des collectivités comme ceci qui est
directement exploitable :

04902642200 PANTIN
04902642100 ORLÉANS
04902642800 TOULOUSE

Dans le tableur, la fonction EQUIV devrait te permettre de faire le boulot.

Maintenant, il y a peut-être une autre solution sans passer par Base (j'aime
bien Base :-)) pour aboutir au même résultat mais je ne vois pas laquelle.

Je n'utilise pas Base, c'est pourquoi je ne t'ai proposé que des solutions avec Calc.

Autres questions : chaque agent n'aura que 3 numéros ? Existe-t-il un nombre maximum de numéros ? Dans l'affirmative il vaudrait mieux conserver les numéros dans des colonnes et garder une ligne par agent, cela me semblerait + cohérent.
Un fichier exemple serait bienvenu pour mieux comprendre tes besoins.

A+

Laurent BP

Bonjour,

En ouvrant le fichier avec base vous devriez pouvoir générer une vue ou une requête liant le n° de la collectivité (table des collectivités) à la table à scinder du genre : where A.Liste_Valeurs like %B.N°_Collectivité% (je ne garantis pas la syntaxe).

Vous pouvez ensuite exporter les données de la requête soit vers une table (si vous souhaitez travailler sur base) soit vers Calc.

Cordialement,
François

Bonjour,

Vous trouverez sous le lien suivant un exemple qui résoudra peut-être votre problème.

http://www.cjoint.com/c/FDBnyGAH85N

Cordialement

Michel

-----Message d'origine-----

Bon, faisons simple, voici mon fichier anonymisé :

https://framadrop.org/r/GCoOZl6L6-#9KAglGY7C6Qls6Rzfdk0H6rGwxFwpTnd/2QtTWCPzXs=

Les données qui sont en D2 correspondent aux habilitations de l'utilisateur
1X2+1XM qui est en A2.

Si je ne prends que les 2 premiers utilisateurs (1X2+1XM et fs"1XR1XISjk),
je voudrais que mon tableau ressemble à ceci :

https://framadrop.org/r/9utG4A8qkJ#ihJmRwGP6C2x9aJCaP115fah3xifdgwvoIs1L4km8aY=

et ce décliné, au cas particulier, à 262 utilisateurs. Il peut y en avoir
beaucoup plus.

Lorsque chaque utilisateur aura autant de lignes qu'il aura d'habilitations
informatiques, alors je pourrai lier avec Base ce tableau à la liste des
collectivités dont j'ai le numéro qui est en D2 et le nom en clair.

Je vous remercie et vous souhaite une agréable journée,

Dominique

Bonjour,

Voici ma proposition de fichier :
https://framadrop.org/r/3vkhWJDEQI#s2h+XfVmFRnjMemoc2k2aInVYZhzLCySTOJVKniYLPs=
(première fois que j'utilise framadrop... j'espère que j'ai copié le bon lien...)

  * Onglet "Votre demande" : je n'ai rien touché...
  * Onglet "Les habilitations", j'ai déterminé le nombre d'habilitation
    et j'ai, par formule, mis une habilitation par colonne en supposant
    que chaque habilitation était séparé par une espace (j'ai fait le
    tableau jusqu'à 30 habilitations pour une seule personne),
  * Onglet "Resultats" (que j'ai rajouté). Les premières colonnes me
    permettent de créer le nombre de ligne correspondant au nombre
    d'habilitation de chaque personne et dans les colonnes de droite je
    vais chercher les valeurs dans l'onglet précédent,
  * Onglet "Collectivité" (que j'ai rajouté). Si dans cet onglet, les
    codes de chaque collectivité et les collectivité correspondantes
    sont saisis, les collectivités seront affichées dans la dernière
    colonne de l'onglet résultat.

J'espère que cela pourra aider.
Il y a surement des méthodes plus efficaces...
Cordialement.
Hervé

PS :
j'ai travaillé sous windows 7 64bits anglais
avec libre office
Version: 5.1.2.2 (x64)
Build ID: d3bf12ecb743fc0d20e0be0c58ca359301eb705f
CPU Threads: 4; OS Version: Windows 6.1; UI Render: default;
Locale: fr-FR (fr_FR)

Re-bonjour,

J'ai envoyé mon mail trop vite...
J'ai oublié de dire que le fichier est assez brut... sans habillage ni cosmétique pour la mise en page.

D'autre part, en regardant le fichier, j'ai noté que :

  * certaines personnes n'ont aucune habilitations de renseignées
  * quand il y a qu'un seule habilitation de renseignée, le "0" du début
    n'est plus là
  * certaines habilitations ont des codes très différents des autres
    comme "T-N-" par exemple

Cordialement.
Hervé

Bonjour Hervé,

Framadrop a très bien fonctionné

Je te remercie pour ce long travail que tu as fait pour moi. J'ai 2 h 30 d'Eurostar dans la matinée. Je sais à quoi je vais les consacrer : fouiller l'aide de LIBO et comprendre ce que tu as fait.

Le 0 perdu en début d'habilitation n'a pas d'importance dans le sens où je dois supprimer les caractères 46029 et 046029. Les habilitations T-N sont des scories des retraitements que j'ai faits en amont. En effet, les cellules de la colonnes D « Habilitations » étaient remplies, outre les chiffres, de toute une littérature inutile (avec des parenthèses, des points, des virgules, des tirets etc) que j'ai supprimée de proche en proche à coups de REGEXP. J'ai pu louper ce T-N.

Pas de problème pour la cosmétique. Si je peux utiliser facilement ce tableau et le déployer, je pense que mes responsables d'unités seront très heureux d'avoir les réponses sans trop se fouler.

Je te souhaite une agréable journée,

Bonjour,

Si tu penses que la solution que j'ai proposée est celle que tu vas utiliser.
N'hésites à revenir demander des infos sur la liste, je pourrai détailler un peu plus les différentes étapes.

Cordialement.
Hervé