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

  1. #1
    Membre du Club
    Inscrit en
    août 2009
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : août 2009
    Messages : 70
    Points : 59
    Points
    59

    Par défaut Intégration Fichier Excel dans une table memoire : ordre des colonnes

    Bonjour

    J ai besoin de votre aide afin de pouvoir intégrer un fichier excel dans une table mémoire quelque soit l'orde des colonnes dans le fichier excel , mais les colonnes de ma table sont fixes.

    voici le code que j ai mis pour une seule colonne de ma table que je n arrive pas à le faire pour plus de colonnes de cette table.
    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
     
    	///////////////
    	Feuille1 est un xlsDocument
    	Fichier_Fournisseurs est une chaîne
    	j,i sont des entiers
    	y,x,t sont des chaînes
    	x = "Fax"
    	t = "Nom"
    	Fichier_Fournisseurs = fSélecteur("", "", ...
    	"Sélectionnez un fichier.....", ...
    	"Tous fichiers (*.*)"+TAB+"*.*", "*", fselOuvre+fselExiste)
    	SI Fichier_Fournisseurs = "" ALORS RETOUR
    	Feuille1 = xlsOuvre(Fichier_Fournisseurs, xlsEcriture)
    	SI Feuille1 <>-1 ALORS
    	POUR j = 1 _A_ xlsNbColonne(Feuille1,Vrai)
    	y = xlsTitreColonne(Feuille1,j,Vrai)
    	SI y = x ALORS
    	POUR i = 1 _A_ xlsNbLigne(Feuille1,Vrai)
    	TableAjouteLigne(TABLE_Fournisseur)
    	TABLE_Fournisseur.Nom[i] = xlsDonnée(Feuille1,i,j)
    	TABLE_Fournisseur.Fax[i] = xlsDonnée(Feuille1,i,j)
    	FIN
    	SINON
    	//ne rien faire	
    	FIN
    	FIN
    	FIN
     
     
    ////////////
    xlsFerme(Feuille1)
    Merci d'avance.

  2. #2
    Expert confirmé Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    avril 2011
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : avril 2011
    Messages : 2 710
    Points : 5 307
    Points
    5 307

    Par défaut

    Est-ce que les titres de la table mémoire sont forcément les mêmes que le classeur xls ?

    Si oui pourquoi ne pas rechercher le titre de la colonne de table WinDev correspondant au titre de la colonne du classeur ?
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  3. #3
    Membre du Club
    Inscrit en
    août 2009
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : août 2009
    Messages : 70
    Points : 59
    Points
    59

    Par défaut Intégration Fichier Excel dans une table memoire : ordre des colonnes

    Bonjour

    Merci d'avoir pris le temps de repondre à ce post.

    Quelle est la fonction dans WinDev qui permet de chercher les colonnes d'une table ?

    Crdt

  4. #4
    Expert confirmé Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    avril 2011
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : avril 2011
    Messages : 2 710
    Points : 5 307
    Points
    5 307

    Par défaut

    Pour obtenir toutes les colonnes d'une table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // Enumération de toute les colonnes du champ table "TABLE_TableProduit"
    UneColonne est un Champ
    POUR nColonne = 1 _A_ TableOccurrence(TABLE_TableProduit, toColonne)
        UneColonne <- TableEnumèreColonne(TABLE_TableProduit, nColonne)
        Trace(UneColonne..NomComplet+"//"+UneColonne..Titre)
    FIN
    C'est un exemple dans l'aide de WinDev...
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  5. #5
    Membre éclairé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    juin 2017
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : juin 2017
    Messages : 448
    Points : 681
    Points
    681

    Par défaut

    Bonjour,
    Outre le fait que ton code est O(n2) alors qu'il pourrait être O(n), l'erreur provient de l'ajout des valeurs. Tu ajoute 2 fois la même valeur.
    Pour les besoins du post, mon champ table ne contient que 2 colonnes : COL_Nom et COL_Fax (dans cet ordre.)
    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
    54
    55
     
    // Résumé : Remplit un champ table à partir d'une Feuille XL
    // Syntaxe :
    //[ <Résultat> = ] lfnRemplirTable ()
    //
    // Paramètres :
    //	Aucun
    // Valeur de retour :
    // 	booléen : Faux, il y a eu une erreur
    //			  Vrai, tout est OK
     
    FONCTION lfnRemplirTable() :booléen
     
    xlClasseurTravail est un xlsDocument
    sNomFichier est une chaîne
    nLigne,nColonne sont des entiers
    nNoColonneNom est un entier
    nNoColonneFax est un entier
    sNomColonne est une chaîne
     
    //On ne sélectionne que les fichiers XL
    sNomFichier = fSélecteur("", "", ...
    "Sélectionnez un fichier.........", ...
    "Fichiers Excel *.xls, *.xlsx"+TAB+"*.xlsx;*.xls", "*.xlsx", fselOuvre+fselExiste)
    SI sNomFichier = "" ALORS 
    	RENVOYER Faux
    FIN
     
    xlClasseurTravail = xlsOuvre(sNomFichier, xlsEcriture)
     
    SI xlClasseurTravail <>-1 ALORS
    	//On récupère les N° de colonne de Fax et de Nom
    	POUR nColonne = 1 _A_ xlsNbColonne(xlClasseurTravail)
    		sNomColonne = xlsTitreColonne(xlClasseurTravail,nColonne)
    		SELON Majuscule(sNomColonne)
    			CAS "FAX"
    			 	nNoColonneFax=nColonne
    			CAS "NOM"
    				nNoColonneNom=nColonne
    			AUTRE CAS
    				SI nNoColonneFax*nNoColonneNom<>0 ALORS //On a trouvé les 2 colonnes
    					//On sort
    					nColonne=xlsNbColonne(xlClasseurTravail)	
    				FIN
    		FIN
    	FIN
    	POUR nLigne = 2 _A_ xlsNbLigne(xlClasseurTravail) //Commencer à 1 inclus les titres
    		TableAjouteLigne(TABLE_Fax,xlsDonnée(xlClasseurTravail,nLigne,nNoColonneNom),xlsDonnée(xlClasseurTravail,nLigne,nNoColonneFax))
    	FIN
    SINON
    	RENVOYER Faux
    FIN
    ////////////
    xlsFerme(xlClasseurTravail)
    RENVOYER Vrai
    Il y a peut être plus simple, mais ça tourne

  6. #6
    Membre actif
    Homme Profil pro
    Inscrit en
    janvier 2011
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : janvier 2011
    Messages : 130
    Points : 210
    Points
    210

    Par défaut

    Bonjour;

    Code Clic sur Bouton :

    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
     
    IdFichierXLS,i est un entier 
    IdFichierXLS = xlsOuvre("C:\Test\Test.XLSX")
    j est un entier = 0
     
    SI ErreurDétectée = Faux ALORS
    	POUR i = 2 _A_ xlsNbLigne(IdFichierXLS,Vrai)
    		TableAjouteLigne(TABLE_SansNom1)
    		TableSelectPlus(TABLE_SansNom1,TABLE_SansNom1..Occurrence)
    		TableAjouteLigne(TABLE_SansNom2)
    		TableSelectPlus(TABLE_SansNom2,TABLE_SansNom2..Occurrence)
    		POUR j = 1 _A_ xlsNbColonne(IdFichierXLS,Vrai)
    			{"TABLE_SansNom1.COL_"+xlsDonnée(IdFichierXLS, 1, j)}=xlsDonnée(IdFichierXLS, i, j)
    			{"TABLE_SansNom2.COL_"+xlsDonnée(IdFichierXLS, 1, j)}=xlsDonnée(IdFichierXLS, i, j)
    		FIN
    	FIN
    	xlsFerme(IdFichierXLS)
    SINON
    	Info(ErreurInfo())
    FIN
    Résultat :

    Nom : Test.JPG
Affichages : 64
Taille : 36,7 Ko

    Bon Dev.

  7. #7
    Membre du Club
    Inscrit en
    août 2009
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : août 2009
    Messages : 70
    Points : 59
    Points
    59

    Par défaut

    Bonjour ;

    Merci à vous tous de m'avoir aider. l'intégration fonctionne correctement.

    j'opte pour la proposition de fouedusa . impecable.

    Crdt

  8. #8
    Membre averti
    Homme Profil pro
    Retraité Admin - Gestion reconverti en informatique
    Inscrit en
    septembre 2017
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Retraité Admin - Gestion reconverti en informatique

    Informations forums :
    Inscription : septembre 2017
    Messages : 222
    Points : 302
    Points
    302

    Par défaut

    Bonjour,

    Importation fichier excel avec titre colonne xls, et colonnes table portant même nom, mais ordre différent.

    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
     
    xlClasseur est un xlsDocument
    sNomFichier est une chaîne
    sNomColonne est une chaîne
     
    sNomFichier = fSélecteur("", "", ...
    "Sélectionnez un fichier.................", ...
    "Fichiers Excel *.xls, *.xlsx"+TAB+"*.xlsx;*.xls", "*.xlsx", fselOuvre+fselExiste)
    SI sNomFichier = "" ALORS 
         RETOUR
    FIN
     
    xlClasseur = xlsOuvre(sNomFichier, xlsEcriture)
     
    SI xlClasseur <> -1 ALORS
         // ajouter lignes à blanc dans table, soit xlsNbLigne-1
         POUR i = 2 _A_xlsNbLigne(xlClasseur)
                 TableAjouteLigne(MaTable)
         FIN
     
         // parcours des colonnes fichier xls
         POUR j = 1 _A_ xlsNbColonne(xlClasseur)
             // hypothèse dans fichier xls   titre colonne =  Client, dans table COL_Client
             sNomColonne=Majuscule("COL_"+xlsTitreColonne(xlClasseur,j))	
     
             // chercher la colonne avec le nom
             POUR k = 1 _A_ TableOccurrence(MaTable, toColonne)
                    SI Majuscule(TableEnumèreColonne(MaTable,k))=sNomColonne ALORS
                        // exporter données cellules colonne xls (ttes lignes)
                        POUR i = 2 _A_ xlsNbLigne(xlClasseur)
                                  MaTable[i-1][k]=xlsDonnée(xlClasseur, i, j)
                        FIN
                        SORTIR
                    FIN
              FIN
          FIN
          xlsFerme(xlClasseur)
    FIN

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

Discussions similaires

  1. Transfert Fichier excel dans une table ACCESS
    Par Remsdu dans le forum VBA Access
    Réponses: 1
    Dernier message: 16/07/2008, 15h55
  2. Importation d'un fichier excel dans une table access
    Par cmaitre dans le forum VBA Access
    Réponses: 11
    Dernier message: 15/04/2008, 16h59
  3. Importer les données d'un fichier excel dans une table
    Par dams95190 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 07/12/2007, 10h35
  4. importer un fichier excel dans une table
    Par joe370 dans le forum VBA Access
    Réponses: 3
    Dernier message: 13/07/2007, 11h21
  5. Réponses: 7
    Dernier message: 04/10/2005, 18h21

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