IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

[DONNEES][FORMULES]Faire correspondre un id à une valeur [Toutes versions]


Sujet :

Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 49
    Points : 30
    Points
    30
    Par défaut [DONNEES][FORMULES]Faire correspondre un id à une valeur
    Bonjour,

    Je dois "traduire" un fichier excel tout moche en BDD propre pour charger les données.

    N'ayant quasi-aucune connaissance excel (je suis développeur php à la base), ma démarche actuelle (mais je suis ouvert à toute proposition) et de faire une feuille par table, en donnant les noms de champs en en-tête et de les exporter en csv pour les uploader via php-myadmin.

    Et donc, pour prendre un exemple simple, je dois dans un premier temps sortir les "establishment" de mes "offres" (chaque "offer" correspondant à un "establishment" dans ma BDD). Donc j'ai récupérer tous les "establishments", je les ai dé-doublonné, j'ai fait un champ "id" (=(An+1 )), j'ai charger et ça marche.

    Par contre j'aimerai du coup dire dans ma table/feuille "Offer" que si "establishment_id" = "Truc", alors le remplacer par l'id correspondant dans ma table/feuille "establishement".

    Seulement je ne sais pas du tout comment faire.

    Est-ce possible ? pouvez-vous m'aider ?

    Merci d'avance

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 49
    Points : 30
    Points
    30
    Par défaut
    J'ai fait une petite recherche et je suis tombé sur "BDLIRE" qui semblerait correspondre... mais je n'arrive pas à le faire marcher, voici ce que j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =BDLIRE(establishment.A1:B13;"id";I1:I2)// I1 étant "name" et I2 étant Truc
    Et ça fonctionne, mais je me voie mal créer des champs à chaque fois vus que c'est pour des colonnes de 150 à 300 lignes suivant les tables, et qu'elles sont nombreuses ! :s

    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =BDLIRE(establishment.A1:B13;"id";"name"=ACTUELLE())
    mais cela renvoie "err:504"...

    Quelqu'un aurait-t-il une solution pour moi ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 49
    Points : 30
    Points
    30
    Par défaut
    Désolé pour le triple poste

    J'ai trouvé cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =EQUIV(I3;establishment.$B$2:$B$13;0) // où establishment.$B$2:$B$13 correspond à la liste de mes establishment
    ,ce qui en fait me va très bien vu que ça renvoie le numéro de ligne correspondant au premier résultat trouvé, soit à l'index que je cherche. Par contre c'est franchement dommage de devoir dupliquer mes colonnes à chaque fois (ici dans I pour ma colonne originale avec les noms au lieu des ids)

    Toujours à la recherche d'une meilleurs solution, mais si je n'en ai pas avant d'avoir fini je passerai le sujet en résolu.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 49
    Points : 30
    Points
    30
    Par défaut
    J'ai encore un autre problème avec des relations type "many to many", dans le fichier de base j'ai par exemple des colonnes qui ressemblent à cela :

    Type
    A
    A
    C
    B,C
    B
    A,B,C

    Hors j'aimerai mettre cela dans une table de relation comme suit
    Table_Id - Type
    1 - A
    2 - A
    3 - C
    4 - B
    4 - C
    5 - B
    6 - A
    6 - B
    6 - C

    Mais je ne sais pas du tout (mais alors pas du tout) comment faire

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 49
    Points : 30
    Points
    30
    Par défaut
    Bonjour,

    Ma conclusion personnelle est que mon dernier problème était impossible à résoudre avec Excel. J'ai donc fait un script php. Comme je pense que je ne serai pas le seul à être confronter à ce problème à l'avenir, je vous le donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <?php
    $insert = 'insert into ';
    		?>
    <form name="formDataRelations" method="POST" action="">
    	<textarea name="dataRelations" rows="20" cols="40"><?php echo $init ?></textarea>
    	<br/>
    	<input type="submit" value="Charger les données" name="ok" />
    </form>
    <?php
    if (isset($_POST['dataRelations'])) {
    	$insert.= 'ma_table (id_ref, id_2) values ';
    	// hack pour windows.
    	$_POST['dataRelations'] = str_replace("\r", '', $_POST['dataRelations']);
    	$_POST['dataRelations'] = str_replace("na", '', $_POST['dataRelations']);
    	$dataRel = explode("\n", $_POST['dataRelations']);
    	foreach ($dataRel as $d){
    		$underData = explode(",", $d);
    		foreach ($underData as $_d)
    		{
    			($_d!='')?$insert.="($i, $_d),":0;
    		}
    		$i++;
    	}
    	$insert = substr($insert, 0, strlen($insert)-1); // pour retirer la dernière virgule
    	echo $insert;
    }
    ?>
    Enjoy

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Faire copier coller d'une valeur entrée dans une inputbox
    Par nico17137 dans le forum VBScript
    Réponses: 4
    Dernier message: 21/06/2013, 09h33
  2. Faire son programme taper une valeur
    Par theooalfa dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 29/06/2012, 11h51
  3. faire un max sur une valeur varchar
    Par pelloq1 dans le forum Requêtes
    Réponses: 2
    Dernier message: 18/05/2009, 22h13
  4. [XSLT] Faire la somme d'une valeur pour un ensemble de noeuds
    Par thierry_b dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 10/03/2009, 09h45
  5. Réponses: 4
    Dernier message: 19/02/2008, 08h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo