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

JavaScript Discussion :

Coller des donn�es depuis Excel


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Inscrit en
    Octobre 2006
    Messages
    200
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 200
    Par d�faut Coller des donn�es depuis Excel
    Bonjour � tous,

    Je cherche � coller des donn�es depuis Excel dans une page web.
    J'ai des textfield (�l�ments <input type="text" />) en ligne, et je souhaite que lorsque je copie plusieurs cellules en ligne depuis Excel, cela se colle � raison d'une cellule par textfield, dans ma page web.

    J'ai des d�but d'�l�ments de r�ponse assez prometteurs, MAIS il reste quelques petits bugs :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    <html>
     
    	<head>
    		<title>Test copier-coller depuis Excel</title>
    		<script src="http://www.prototypejs.org/assets/2008/9/29/prototype-1.6.0.3.js" type="text/javascript"></script>
     
    		<script type="text/javascript">     
    		  function init(){
    			   Event.observe('f1', 'paste', pasteCol);
    			   Event.observe('f2', 'paste', pasteCol);
    			   Event.observe('f3', 'paste', pasteCol);
    			   Event.observe('f4', 'paste', pasteCol);
    			   Event.observe('f5', 'paste', pasteCol);
    			   function pasteCol(event) { 
    					var notes=window.clipboardData.getData("Text");
    					var tab= new RegExp('[\t]');
    					notes=notes.split(tab);
     
    					for (i=0; i<notes.length; i++) {
    						document.getElementsByTagName("input")[i].value = notes[i];
    					}
    			   }
    		  }
    		</script>
    	</head>
     
    	<body>
    		<input type="text" name="f1" id="f1" size="5" />
    		<input type="text" name="f2" id="f2" size="5" />
    		<input type="text" name="f3" id="f3" size="5" />
    		<input type="text" name="f4" id="f4" size="5" />
    		<input type="text" name="f5" id="f5" size="5" />
      </body>
     
    </html>
    J'ai plusieurs soucis :

    - Le premier est que lorsque je colle, tout se passe bien sauf dans la premi�re cellule, toutes les donn�es coll�es se mettent dans la premi�re cellule, je cherche � savoir comment est-ce que je peux modifier le contenu de mon textfield apr�s que le collage ait eu lieu...

    - Le deuxi�me souci est de savoir dans quel cellule est-ce que le collage a eu lieu car si l'utilisateur colle dans la 2�me cellule, le premier souci sera pr�sent mais dans la 2�me cellule cette fois-ci, et les cellules vont se remplir depuis la premi�re (ce qui est normal lorsque l'on regarde mon code, puisque ma boucle for commence � l'�l�ment 0 dans tous les cas). Donc je souhaite connaitre l'�l�ment d�clencheur de l'�v�nement...

    Merci d'avance !!!

    *** EDIT : Ne fonctionne QUE sous IE... ***

  2. #2
    R�dacteur

    Avatar de Bovino
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    var tab= new RegExp('[\t]');
    Ta regexp est mal construite, il faut doubler l'�chappement, ou mieux, utiliser un litt�ral plut�t qu'un constructeur :
    .
    Mais de toute fa�on, cela ne sert � rien de passer par une regexp, une simple chaine dans le split suffit et am�liorera les performances !
    Pas de question technique par MP !
    Tout le monde peut participer � developpez.com, vous avez une id�e, contactez-moi !
    Mes formations video2brain : La formation compl�te sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'int�gration de JSFiddle et CodePen sur le forum

  3. #3
    Membre confirm�
    Inscrit en
    Octobre 2006
    Messages
    200
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 200
    Par d�faut
    Oui peut-�tre mais elle fonctionne... Et ce n'est pas l� mon probl�me !!!
    Pour r�cup�rer l'�v�nement j'ai r�ussi � trouv� quelque chose qui fonctionne mais je ne dis pas que c'est tr�s optimis�...

    Me reste le probl�me du premier textfield...

    Mon code mis � jour :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    <html>
     
    	<head>
    		<title>Test copier-coller depuis Excel</title>
    		<script src="http://www.prototypejs.org/assets/2008/9/29/prototype-1.6.0.3.js" type="text/javascript"></script>
     
    		<script type="text/javascript">     
    		  function init(){
    			   Event.observe('f1', 'paste', pasteCol);
    			   Event.observe('f2', 'paste', pasteCol);
    			   Event.observe('f3', 'paste', pasteCol);
    			   Event.observe('f4', 'paste', pasteCol);
    			   Event.observe('f5', 'paste', pasteCol);
    			   function pasteCol(event) { 
    					var notes=window.clipboardData.getData("Text");
     
    					notes=notes.split('\t');
     
    					var elementTriggered = Event.element(event);
    					var valeurDebut = 0;
    					var trouve = false;
    					// Boucle pour trouver l'élement qui a reçu le collage
    					for (i=0; i<document.forms[0].elements.length; i++) {
    						if (document.forms[0].elements[i] == elementTriggered) {
    							valeurDebut = i;
    							trouve = true;
    							break;
    						}
    					}
    					if (trouve) {
    						var j = 0;
    						for (i=valeurDebut; i<document.forms[0].elements.length-1 && j<notes.length; i++) {
    							document.forms[0].elements[i].value = notes[j];
    							j++;
    						}
    					}
    			   }
    		  }
    		</script>
    	</head>
     
    	<body onload="init()">
    		<form name="myForm" id="myForm">
    			<input type="text" name="f1" id="f1" size="5" />
    			<input type="text" name="f2" id="f2" size="5" />
    			<input type="text" name="f3" id="f3" size="5" />
    			<input type="text" name="f4" id="f4" size="5" />
    			<input type="text" name="f5" id="f5" size="5" />
    			<textarea> </textarea>
    		</form>
      </body>
     
    </html>
    Si quelqu'un a une id�e... Je vais test� avec la fonction onChange peut-�tre un truc dans ce style...

  4. #4
    R�dacteur

    Avatar de Bovino
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par d�faut
    Citation Envoy� par Dark_TeToN
    Oui peut-�tre mais elle fonctionne...
    Ah...
    Citation Envoy� par Dark_TeToN
    toutes les donn�es coll�es se mettent dans la premi�re cellule
    Pas de question technique par MP !
    Tout le monde peut participer � developpez.com, vous avez une id�e, contactez-moi !
    Mes formations video2brain : La formation compl�te sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'int�gration de JSFiddle et CodePen sur le forum

  5. #5
    Mod�rateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par d�faut
    d'ailleurs pourquoi supprimer les tabulations, c'est ce qui permet sous excel d'envoyer la suite dans la cellule d'� cot� me semble t-il?

  6. #6
    Membre confirm�
    Inscrit en
    Octobre 2006
    Messages
    200
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 200
    Par d�faut
    Bon je vois que vous n'avez peut-�tre pas compris le principe... Je me suis peut-�tre mal exprim�.

    J'ai des donn�es dans Excel qui sont dans 5 cellules (de A1 � E1).
    Je copie ces 5 cellules.
    J'ai 6 textfield dans une page web. Je souhaite que lorsque je colle mes donn�es sur le premier textfield (le plus � gauche donc) elle se r�partissent toutes seules dans les diff�rents textfield (un textfield = une cellule Excel).

    Donc du coup, seule le 6�me textfield sera vide.

    Le probl�me c'est que imaginons que j'ai ceci pour les 5 cellules :

    A1 : 1
    B1 : 2
    C1 : 3
    D1 : 4
    E1 : 5

    Lorsque je colle mes donn�es dans le premier textfield (f1) j'obtiens ceci :

    f1 : 1 \t 2 \t 3 \t 4 \t 5
    f2 : 2
    f3 : 3
    f4 : 4
    f5 : 5

    (les \t apparaissent comme des tabulations, je n'ai pas la chaine de caract�res "\t" qui apparait !).

    Je souhaite simplement corriger ce qu'il y a dans le premier textfield (f1). Les autres textfields (f2 � f5) fonctionnent bien !

    En fait la cause du probl�me vient du fait que la fonction est appel�e AVANT l'action du coll� dans le textfield. Donc je peux r�soudre ce petit probl�me en ajoutant � la fin de ma fonction la ligne suivante :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    window.clipboardData.setData("Text", notes[0]);
    Le probl�me c'est que �a impacte le presse-papier, et je souhaite absolument que le presse-papier reste tel quel � la fin du copier-coller. Il n'y a pas possibilit� d'ex�cuter une fonction juste apr�s que le "coller" ait eut lieu ?

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 2
    Dernier message: 13/05/2013, 12h56
  2. [XL-2007] Copier-coller des donn�es d'excel vers un logiciel
    Par capi81 dans le forum Macros et VBA Excel
    R�ponses: 1
    Dernier message: 04/07/2012, 13h18
  3. Coller des donn�es depuis Excel
    Par Dark_TeToN dans le forum Balisage (X)HTML et validation W3C
    R�ponses: 5
    Dernier message: 01/12/2011, 13h47
  4. [D�butant] importer des donn�es depuis Excel
    Par canary dans le forum MATLAB
    R�ponses: 9
    Dernier message: 02/05/2010, 18h03
  5. importer et exporter des donn�es depuis excel
    Par thonyyzz dans le forum C++
    R�ponses: 2
    Dernier message: 22/04/2008, 20h18

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