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

Macros et VBA Excel Discussion :

Problème d'importation de données


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 12
    Par défaut Problème d'importation de données
    Bonjour,

    Suite à la mise en place d'un nouveau logiciel je dois alimenter une base de donnée.
    Pour cela j'ai à disposition un fichier d'import au format .xls.
    Les données à saisir sont disponibles dans des tableaux au sein de document Word.

    Afin de remplir mon fichier d'import, je copie mes tableaux de Word dans Excel puis je fais appelle à un programme en VBA qui se charge de mettre au bon endroit les bonnes informations.

    Cependant je rencontre des difficultés avec certains champs.

    En effet pas un seul document n'a été rempli de la même façon.

    Ex:
    Les numéros de téléphone : XX.XX.XX.XX.XX ; XX XX XX XX XX
    Format désiré : XXXXXXXXXX
    Les numéros de SIRET : XXX XXX XXX XXXXX
    Format désiré : XXXXXXXXXXXXXX
    Les numéros de TVA : FRXX XXX XXX XXX ; FR XX XXX XXX XXX
    Format désiré : FRXXXXXXXXXXX

    Je ne semble pas rencontrer de difficulté pour les numéros de téléphone avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim Tampon As Variant (Si ça peut aider)
     
    'Téléphone fixe
    Tampon = Sheets("Source").Range("B20")
    Tampon = Replace(Tampon, ".", "")
    Tampon = Replace(Tampon, " ", "")
    Sheets("données").Select
    Cells(Ligne, 50) = Tampon
    Par contre ce code ne fonctionne pas avec les numéros de TVA et de SIRET.
    Je remet en cause le formatage du texte initiale.
    Si j’utilise les fonctions de Word/Excel pour effacer les formats cela ne change rien par contre si les données transites par le logiciel Bloc-Note tout fonctionne à merveille.

    Auriez-vous une piste à me donner pour réussir à formater correctement mes données ?

    Merci.

    Edit: C'est un problème d'espace insécable ! Je vais voir si j'arrive à directement le faire sauter depuis mon VBA.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Mat63 Voir le message
    Bonjour,

    Essayez cette fonction :
    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
     
     
    Function SpliterLaChaine(ByVal ChaineASpliter As String) As String
     
    Dim TableauChaines As Variant
     
           SpliterLaChaine = ""
     
           TableauChaines = Split(ChaineASpliter, " ")
           If UBound(TableauChaines) > 0 Then
               SpliterLaChaine = Join(TableauChaines, "")
           Else
              SpliterLaChaine = ChaineASpliter
           End If
     
    End Function
    En cas de combinaisons de points et de blancs.

    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
     
    Function SpliterLaChaine2(ByVal ChaineASpliter As String) As String
     
    Dim TableauBlancs As Variant, TableauPoints As Variant
    Dim SpliterLePoint As String
     
           SpliterLaChaine2 = ""
           SpliterLePoint = ChaineASpliter
     
           TableauPoints = Split(ChaineASpliter, ".")
           If UBound(TableauPoints) > 0 Then
               SpliterLePoint = Join(TableauPoints, "")
           End If
           TableauBlancs = Split(SpliterLePoint, " ")
           Debug.Print UBound(TableauBlancs)
           If UBound(TableauBlancs) > 0 Then
              SpliterLaChaine2 = Join(TableauBlancs, "")
           Else
              SpliterLaChaine2 = SpliterLePoint
           End If
     
    End Function
    Dernière modification par Invité ; 15/03/2021 à 15h50.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 12
    Par défaut
    Bonjour,

    Merci pour votre réponse.

    Je l'ai bien prise en compte hier mais je voulais prendre le temps de bien comprendre votre code et son articulation avant de vous répondre.
    En effet je ne connaissais pas le système de pointeur du VBA ByVal() ni les fonctions UBound(), Split() et Join().

    Votre code est beaucoup plus élégant que le miens.

    Je suis arrivé à mes fins de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Tampon = Sheets("Generales").Range("B5")
    Tampon = Replace(Tampon, ".", "")
    Tampon = Replace(Tampon, " ", "")
    Tampon = Replace(Tampon, Chr(160), "")
    Cells(Ligne, 3) = Tampon
    C'est en cherchant "caractère espace qui n'en est pas un" ou quelque chose du genre sur internet que j'ai découvert l’existence de l'espace insécable Chr(160) qui s'est bien révélé être mon problème.

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

Discussions similaires

  1. Problème d'import de données
    Par max12 dans le forum Services Web
    Réponses: 1
    Dernier message: 21/06/2007, 20h27
  2. Réponses: 4
    Dernier message: 11/12/2006, 11h21
  3. Problème d'importation de données
    Par Team2i dans le forum Access
    Réponses: 2
    Dernier message: 16/08/2006, 09h13
  4. [VBA-A] problème d'import de données texte
    Par David M dans le forum VBA Access
    Réponses: 2
    Dernier message: 08/05/2006, 15h45
  5. Problème à l'importation des données
    Par steinfield dans le forum Access
    Réponses: 2
    Dernier message: 24/04/2006, 16h02

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