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

Access Discussion :

Importer des retour à la ligne depuis Excel


Sujet :

Access

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut Importer des retour à la ligne depuis Excel
    Bonjour,

    Je viens de basculer ma base de travail d'excel vers acces et j'ai un pb de mise en page.

    En effet sous excel, j'ai utilisé la combinaison "Alt+entrée) pour faire des sauts de lignes. Le problème est que l'ors de l'importation Access ne m'a pas traduit ce "Alt+entrée" par un saut de ligne mais par un truc comme | ???

    Existe-til une manip pour transformer ces | en saut de ligne pour l'ensemble de ma base ?

    Merci à l'avance pour votre précieuse aide.

  2. #2
    Membre régulier Avatar de DeFCrew
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 167
    Points : 94
    Points
    94
    Par défaut
    Essaye de récupérer ce signe et dis à Access (par le code) que dès qu'il voit ce signe alors il saute une ligne :

    En VB sa donne sa normalement pour sauter une ligne
    Donc tu récupère le signe avec RIGHT(string,lenght) par exemple en faisant une boucle FOR et NEXT qui scan le nom de ton champ jusqu'à repérer le fameux signe et réagir en fonction.

    Je ne vais pas pouvoir plus t'aider pour le code car je débute en VB c'est juste pour te donner une idée d'approche

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    En fait je viens de me rendre compte que le | est visible uniquement en mode formulaire mais dans la base, il est sous forme de "carré".

    Et je pense que ce n'est pas un caractère à part entière mais juste un icone graphique car lorsque je fais une recherche le copier du carré ne se cole pas ???
    Par exemple, j'ai le champs suivant :
    "Pas d'info papier 'carré' 'carré' Siège social à Paris : 18 Rue Troyon - 75017 PARIS 17 'carré' Tél. 01 58 05 09 30 'carré' Télécopie : 01 44 09 72 32"

    et si je colle le texte sélectionné dans du word, il me donne ceci :
    "Pas d'info papier

    Siège social à Paris : 18 Rue Troyon - 75017 PARIS 17
    Tél. 01 58 05 09 30
    Télécopie : 01 44 09 72 32"
    mais si je colle dans le champ de ma table, il me remet les carrés et non les sauts de ligne

    Quelqu'un a surmeent déjà rencontrer ce pb, non ?

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 147
    Points : 172
    Points
    172
    Par défaut
    Le problème vient sasn doute du fait que tu ne sépares pas tes champs :
    Si tu as un seul champ pour l'adresse alors oui tout est en ligne.
    Per contre si tu utilises plusieurs champs (n°_Rue, Nom_Rue,.....) alors tu peux assurer un affichage/présentation comme tu le souhaites sans parler des tris, filtres requetes que tu peux faire.
    A+

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    Non je ne suis pas sûr que tu es bien compris mon pb
    Il est vrai que mon exemple était mal choisi mais en fait j'ai 2 champs sous excel qui sont des commantaires. Afin de les rendre plus agréable à la lecture sous excel, j'avais fait des Alt+entrée pour sauter une ligne dans la même cellule excel.
    Le problème est que ce commentaire une fois importer sous Access ne prends pas le Alt+entrée comme un saut de ligne mais il l'interprète comme un objet grahique (?) en tout cas il l'affiche comme un carré.

    Ma question est donc est-il possible avec une macro de virer tous ces carrés par un saut de ligne ?

  6. #6
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Ces carrés sont bien des sauts de lignes. A priroi, ce sont les caractères Ascii 10 & 13. Mais comme ils ne sont pas interprétés en sauts de lignes c'est que ce ne sont pas ces caractères.

    Pour connaitre les caractères dont il s'agit, crée un formulaire de test basée sur ta table avec une zone de texte nommée txttest. Un bouton avec le code suivant :

    Dim i as integer
    For i=0 to len(txttest)-1
    msgbox mid(txttest,i,1) & " ---> " & Asc(mid(txttest,i,1))
    next i
    Ensuite, une fois les caractères identifiés il suffira de faire une requête sur toute la table

    Exemple si les caractères sont 11 et 13 :

    UPDATE MATABLE SET MONCHAMP=REPLACE(MONCHAMP,Chr(11) & chr(13),Chr(10) & Chr(13))

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    Tofalu, merci pour ta réponse qui doit surement me permettre de résoudre mon pb mais je n'y arrive pas

    J'ai créé un formulaire basé sur ma table T_Clients contenant le champs "Commentaire_Client" où j'ai des "carrés"

    Dans ce formulaire, j'y ai mis une zone de texte ayant pour nom "txttest" et comme source "Commentiare_Client"
    J'y ai également créé un bouton commande3 avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Commande3_Click()
    Dim i As Integer
    For i = 0 To Len(txttest) - 1
    MsgBox Mid(txttest, i, 1) & " ---> " & Asc(Mid(txttest, i, 1))
    Next i
    End Sub
    Lorsque je lance le code, il me met "erreur d'exécution '5' :
    Argument ou appel de procédure incorrect"

    Et avec le débogage il me surligne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Mid(txttest, i, 1) & " ---> " & Asc(Mid(txttest, i, 1))
    Peux tu m'en dire plus ?

  8. #8
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 124
    Points : 12 176
    Points
    12 176
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Avant d'importer, tu peux exploiter un objet Excel, ouvrir l'instance Excel cachée, ouvrir le classeur, nettoyer le classeur à partir de cet exemple :

    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
    Sub RemoveBreakLineChars()
    Dim oRng As Range
    Dim oCll As Range
    Dim strTempA As String
    Dim strTempB As String
    Dim strTempC As String
     
      Set oRng = Selection
     
      For Each oCll In oRng
        strTempA = Replace(oCll.Value, Chr(10), " ", 1, -1, 1)
        strTempB = Replace(strTempA, Chr(13), " ", 1, -1, 1)
        strTempC = Replace(strTempB, Chr(13) & Chr(10), " ", 1, -1, 1)
        oCll.Value = strTempC
      Next
     
    End Sub
    Fermer le classeur en l'enregistrant, quitter l'instance, mettre tes objets à Nothing et importer...

    Argy

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    alors du coup je suis complètement pommé

    Je dois faire koi en fait ?

  10. #10
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 124
    Points : 12 176
    Points
    12 176
    Billets dans le blog
    5
    Par défaut
    Bien en fait, tu peux tout automatiser...
    Déjà tu nettoies ton fichier et en suite tu importes avec la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _
    MaTable, MonFichier, True, [MyRange]
    C'est plus simple.
    Bon bien entendu, si le fichier Excel est toujours le même, tu devras renommer ou supprimer la table cible existante avant.

    Argy

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    Bon je dois vraiment être nul je pense car j'ai essayé mais ca ne fonctionne pas

    1. Nettoyage de la base excel Base_actions.xls via ton code et a priori ca dû fonctionner car je n'ai pa eu de pb
    2. Enregistrement de Base_actions.xls après le nettoyage
    3. J'ai ouvert ma base access et j'ai créé la macro suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub importer_table()
      DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, t_test_Actions, _
    Actions, "C:\Documents and Settings\Cail14\Bureau\Base_actions.xls", True, "A1:M2932"
    
    End Sub

    Pour info, j'ai créé avant la table (t_test_actions) sous access car il me mettais : "l'action ou la méthode requiert un argument 'Nom de table'". Chose que j'ai créé en gras dans le code ci-dessus.

    Je ne comprend pas ce qu'il me veut car avec le code ci-dessus, il m'indique :"LE type d'une expression entrée pour un des arguments est incorrect"


  12. #12
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 124
    Points : 12 176
    Points
    12 176
    Billets dans le blog
    5
    Par défaut
    Tu as un argument de trop dans ta ligne...
    t_test_Actions ???
    Actions ???

    Argy

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    Bonjour,

    J'en ai marre à canard

    Voici ce que j'ai fais et ca ne marche toujours pas:

    1. Nettoyage du fichier excel 'Base de w_tactions_2_10-07-06.xls) a priori sans pb en suivant les indications d'argyronet

    2. Création d'un module (module1) où j'y ai mis le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub importer_table_xls()
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _
    Actions, "C:\Documents and Settings\Cail14\Bureau\Base de w_tactions_2_10-07-06.xls", True, "A1:M2932"
    End Sub
    3. Création d'une macro (macro1) où j'y ai mis dans l'action :ExécuterCode et dans nom fonction : importer_table_xls()

    4. J'execute la macro1 et là il me dit :l"'expression entrée comprte un nom de fonction introuvable"

    A l'aide, je suis complètement perdu !!!

  14. #14
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Normal tu as créés une sub et non une fonction

    Function importer_table_xls()
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _
    Actions, "C:\Documents and Settings\Cail14\Bureau\Base de w_tactions_2_10-07-06.xls", True, "A1:M2932"
    End Function

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    Oups

    Par contre je suis toujours dans le même problème qu'hier car il me met ce message :
    'Erreur d'exécution 2495'
    L'action ou la méthode requiert un argument 'Nom de table'.

    J'ai l'impression de tourner en rond ? Car hier lorsque j'ai eu ce message, j'ai créé une nouvelle table souss access (t_test_Actions) et j'ai mis le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function importer_table_xls()
      DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, t_test_Actions, _
    Actions, "C:\Documents and Settings\Cail14\Bureau\Base_actions.xls", True, "A1:M2932"
    End Function

    Argyronet me disait hier soir que j'avais un argument de trop mais t_test_Actions correspond à la table sous access où seront importées les données du fichier excel
    Actions correspond à l'onglet du fichier excel

    C'est où que ca coince ?

    Actions ???

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    Désolé d'insister mais si qq1 pouvait me dire ce qui se passe ce serait super cool

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/07/2013, 00h54
  2. [Excel] Retour a la ligne cellule Excel
    Par xrmagnum dans le forum XML/XSL et SOAP
    Réponses: 12
    Dernier message: 21/08/2009, 10h54
  3. importer des données d'un autre fichier excel
    Par jbggg dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/05/2008, 16h51
  4. Réponses: 4
    Dernier message: 23/01/2006, 18h49
  5. Réponses: 1
    Dernier message: 19/01/2006, 19h22

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