[résolu]Datatool:insérer automatiquement valeurs ds colonnes

Tout ce qui concerne l'utilisation ou l'installation de LaTeX.

Modérateur: gdm_tex

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

[résolu]Datatool:insérer automatiquement valeurs ds colonnes

Messagepar Arathorn » Mardi 07 Juin 2016, 15:07

Bonjour,

Voici ma base de données ListeTravail.csv

Code: Tout sélectionner
nom,prénom
Avogadro,Amédéo
Böhr,Niels
Copèrnic,Nicolas
D'Einstein,Albert
Kepler,NicolaÏ


Mon fichier latex

Code: Tout sélectionner
\documentclass[12pt,a4paper,frenchb]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{datatool,xstring}
\usepackage{ifthen,multido}

\usepackage{babel}
\usepackage{lmodern}%-> ???

\begin{document}

\DTLloaddb{ListeCompetencesEleves}{ListeTravail.csv}
\DTLdisplaydb{ListeCompetencesEleves}\bigskip

%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%%
%% modification des colonnes nom et prénom de la base !!!!!%%
%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%%
%\iffalse
\DTLforeach{ListeCompetencesEleves}{\nom=nom,\prenom=prénom}{%début for each
\def\IdQuestion{}%\def\Patronyme{}%
\DTLforeachkeyinrow{\ItemLu}{%début de for each key in row
%\ifthenelse{\dtlcol >2}{\dtlbreak}{%on limite la lecture aux deux premières colonnes
%suppression des lettres accentuées
\StrSubstitute{\ItemLu}{ }{}[\ItemLu]
\StrSubstitute{\ItemLu}{'}{}[\ItemLu]
\StrSubstitute{\ItemLu}{.}{}[\ItemLu]
\StrSubstitute{\ItemLu}{-}{}[\ItemLu]
\StrSubstitute{\ItemLu}{À}{A}[\ItemLu]
\StrSubstitute{\ItemLu}{à}{a}[\ItemLu]
\StrSubstitute{\ItemLu}{Â}{A}[\ItemLu]
\StrSubstitute{\ItemLu}{â}{a}[\ItemLu]
\StrSubstitute{\ItemLu}{È}{E}[\ItemLu]
\StrSubstitute{\ItemLu}{è}{e}[\ItemLu]
\StrSubstitute{\ItemLu}{É}{E}[\ItemLu]
\StrSubstitute{\ItemLu}{é}{e}[\ItemLu]
\StrSubstitute{\ItemLu}{Ê}{E}[\ItemLu]
\StrSubstitute{\ItemLu}{ê}{e}[\ItemLu]
\StrSubstitute{\ItemLu}{Î}{I}[\ItemLu]
\StrSubstitute{\ItemLu}{î}{i}[\ItemLu]
\StrSubstitute{\ItemLu}{Ï}{I}[\ItemLu]
\StrSubstitute{\ItemLu}{ï}{i}[\ItemLu]
\StrSubstitute{\ItemLu}{Ü}{U}[\ItemLu]
\StrSubstitute{\ItemLu}{ü}{u}[\ItemLu]
\StrSubstitute{\ItemLu}{Û}{U}[\ItemLu]
\StrSubstitute{\ItemLu}{û}{u}[\ItemLu]
\StrSubstitute{\ItemLu}{Ù}{u}[\ItemLu]
\StrSubstitute{\ItemLu}{ù}{u}[\ItemLu]
\StrSubstitute{\ItemLu}{Ô}{O}[\ItemLu]
\StrSubstitute{\ItemLu}{ô}{o}[\ItemLu]
\StrSubstitute{\ItemLu}{Ö}{O}[\ItemLu]
\StrSubstitute{\ItemLu}{ö}{o}[\ItemLu]
%fin suppression des lettres accentuées
%}%fin du ifthen else
\xdef\IdQuestion{\IdQuestion\ItemLu-}
}%fin de for each key in row
\StrGobbleRight{\IdQuestion}{1}[\IdQuestion]%\IdQuestion suppression du tiret
%\DTLgetvalue{\NOM}{ListeCompetencesEleves}{\DTLcurrentindex}{\dtlcolumnindex{ListeCompetencesEleves}{nom}}%copie la valeur du nom sans modification %essayer \value[rowi}
\DTLgetvalue{\NOM}{ListeCompetencesEleves}{\value{DTLrowi}}{\dtlcolumnindex{ListeCompetencesEleves}{nom}}%copie la valeur du nom sans modification %essayer \value[rowi}
\DTLgetvalue{\PRENOM}{ListeCompetencesEleves}{\value{DTLrowi}}{\dtlcolumnindex{ListeCompetencesEleves}{prénom}}%copie la valeur du prénom sans modification%%\DTLcurrentindex au lieu de \value{DTLrowi}
\StrChar{\PRENOM}{1}[\Initiale]%récupère l'initiale du prénom
\def\Patronyme{\NOM\,\Initiale}% Création colonne Patronyme : nom + initiale prénom
\DTLappendtorow{Patronyme}{\Patronyme}%ajout de la valeur dans une nouvelle colonne
\DTLappendtorow{IdQuestionAMC}{\IdQuestion}%ajout de la valeur de l'identifiant de la question dans une nouvelle colonne
%\DTLaddentryforrow{ListeCompetencesEleves}{\nom=nom,\prenom=prénom,\IdQuestionAMC=IdQuestionAMC}{}{IdQuestionAMC}{\IdQuestion}
}%fin for each
%\fi
%\edef\nombredecolonnes{\DTLcolumncount{ListeCompetencesEleves}}
%\FPeval{\nombredecolonnes}{clip(\nombredecolonnes -1)}
%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%%
%% fin modification des colonnes nom et prénom de la base !!!!!%%
%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%%

\DTLdisplaydb{ListeCompetencesEleves}

\end{document}


J'ai besoin de supprimer toutes les lettres accentuées (->réussi) puis d'insérer dans une nouvelle colonne (IdQuestion) le nom et prénom concaténés sans les accents sur les lettres et dans une autre colonne (Patronyme) le nom + la première lettre du prénom (->réussi).
Cela semble fonctionner mais il apparaît NULL 2 fois dans la colonne IdQuestion et pas dans celle Patronyme alors que j'ai utilisé la même commande d'insertion.

J'ai compris que NULL apparaissait car le 1 ligne était remplie et que les autres valeurs sont par défaut NULL mais pourquoi n'ai-je pas ce problème avec la colonne Patronyme et comment effacer ce NULL ou le remplacer par la bonne valeur ?

Merci

Edit
J'ai finalement opté pour la création d'une nouvelle bases.
Code: Tout sélectionner
%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%%
%% modification des colonnes nom et prénom de la base !!!!!%%
%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%%
\DTLforeach{ListeTravail}{\classe=classe,\nom=nom,\prenom=prénom}{%début for each
\def\IdQuestion{}%\def\Patronyme{}%
\DTLforeachkeyinrow{\ItemLu}{%début de for each key in row
\StrSubstitute{\ItemLu}{ }{}[\ItemLu]
\StrSubstitute{\ItemLu}{'}{}[\ItemLu]
\StrSubstitute{\ItemLu}{.}{}[\ItemLu]
\StrSubstitute{\ItemLu}{-}{}[\ItemLu]
\StrSubstitute{\ItemLu}{À}{A}[\ItemLu]
\StrSubstitute{\ItemLu}{à}{a}[\ItemLu]
\StrSubstitute{\ItemLu}{Â}{A}[\ItemLu]
\StrSubstitute{\ItemLu}{â}{a}[\ItemLu]
\StrSubstitute{\ItemLu}{È}{E}[\ItemLu]
\StrSubstitute{\ItemLu}{è}{e}[\ItemLu]
\StrSubstitute{\ItemLu}{É}{E}[\ItemLu]
\StrSubstitute{\ItemLu}{é}{e}[\ItemLu]
\StrSubstitute{\ItemLu}{ë}{e}[\ItemLu]
\StrSubstitute{\ItemLu}{Ê}{E}[\ItemLu]
\StrSubstitute{\ItemLu}{ê}{e}[\ItemLu]
\StrSubstitute{\ItemLu}{Ë}{E}[\ItemLu]
\StrSubstitute{\ItemLu}{Î}{I}[\ItemLu]
\StrSubstitute{\ItemLu}{î}{i}[\ItemLu]
\StrSubstitute{\ItemLu}{Ï}{I}[\ItemLu]
\StrSubstitute{\ItemLu}{ï}{i}[\ItemLu]
\StrSubstitute{\ItemLu}{Ü}{U}[\ItemLu]
\StrSubstitute{\ItemLu}{ü}{u}[\ItemLu]
\StrSubstitute{\ItemLu}{Û}{U}[\ItemLu]
\StrSubstitute{\ItemLu}{û}{u}[\ItemLu]
\StrSubstitute{\ItemLu}{Ù}{u}[\ItemLu]
\StrSubstitute{\ItemLu}{ù}{u}[\ItemLu]
\StrSubstitute{\ItemLu}{Ô}{O}[\ItemLu]
\StrSubstitute{\ItemLu}{ô}{o}[\ItemLu]
\StrSubstitute{\ItemLu}{Ö}{O}[\ItemLu]
\StrSubstitute{\ItemLu}{ö}{o}[\ItemLu]
%fin suppression des lettres accentuées
\xdef\IdQuestion{\IdQuestion\ItemLu-}
}%fin de for each key in row
%\IdQuestion suppression du tiret supplémentaire à droite
\StrGobbleRight{\IdQuestion}{1}[\IdQuestion]%\IdQuestion\\
%\IdQuestion suppression du tiret et du numéro de la classe supplémentaires à gauche
\StrGobbleLeft{\IdQuestion}{3}[\IdQuestion]%\IdQuestion\\
%
%copie la valeur de la classe sans modification
\DTLgetvalue{\Classe}{ListeTravail}{\value{DTLrowi}}{\dtlcolumnindex{ListeTravail}{classe}}
%copie la valeur du nom sans modification
\DTLgetvalue{\NOM}{ListeTravail}{\value{DTLrowi}}{\dtlcolumnindex{ListeTravail}{nom}}
%copie la valeur du prénom sans modification%%\dtlcurrentindex au lieu de \value{DTLrowi} fonctionne également
\DTLgetvalue{\PRENOM}{ListeTravail}{\value{DTLrowi}}{\dtlcolumnindex{ListeTravail}{prénom}}
%
\def\Patronyme{\NOM\,\PRENOM}%
%
%récupère l'initiale du prénom
\StrChar{\PRENOM}{1}[\Initiale]
%Création IdEleve qui servira dans le tableau
\def\IdEleve{\NOM\,\Initiale}
%
%
%Ajout des valeurs dans la base
%Création d'une nouvelle ligne dans la base de la feuille des compétences
\DTLnewrow{FeuilleCompetences}
\dtlexpandnewvalue%impératif, pourquoi ?
%
%ajout dans la colonne classe de l'élève sans modification
\DTLnewdbentry{FeuilleCompetences}{classe}{\Classe} %-> pour le tri alphabétique
%ajout dans la colonne Patronyme du nom initial et  prénom de l'élève sans modification
\DTLnewdbentry{FeuilleCompetences}{Patronyme}{\Patronyme} %-> pour le tri alphabétique
%
%ajout dans la colonne IdQuestion du nom-prenom de l'élève sans accent et concaténé
\DTLnewdbentry{FeuilleCompetences}{IdQuestion}{\IdQuestion}
%
%ajout dans la colonne IdEleve du nom + initiale prenom de l'élève
\DTLnewdbentry{FeuilleCompetences}{IdEleve}{\IdEleve}
}%fin for each
%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%%
%% fin modification des colonnes nom et prénom de la base !!!!!%%
%%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%%
Arathorn
Kilo-utilisateur
 
Messages: 115
Inscription: Mercredi 24 Avril 2013, 18:47
Statut actuel: Actif et salarié | Enseignant

Publicité

Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Google [Bot], Google Feedfetcher, Grapeshot [Crawler], Proximic [Spider] et 26 invités