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 :

comment faire pour extraire des 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
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 20
    Par défaut comment faire pour extraire des données ?
    bonjour , je dispose d'un fichier excel qui contient des données sur une seule colonne et j'aimerais insérer ces données en ligne pour les rendre exploitable.
    Les groupes de donnees sont écrites sur 5 ou 6 lignes(avec ligne vide pour certain) du type:

    Nom : Jean dumartin
    champ vide ou pas
    adresse : rue des près
    cp+ville 95000 Chailly
    tel 0184857865
    fax(champ cide ou pas)

    La seule constante c'est que chaque groupe de donnée est séparé par 3 lignes vides.
    Est il possible de faire un script pour convertir ces données verticales en données horizontale sous forme de tableau?

    Je suis total débutant sous excel , alors si vous pouvez m'aider c'est sympa.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 95
    Par défaut
    bonjour,

    essai quelque chose comme ca :

    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
    numligne = 1
    numcolonne = 2
    ligne = 2
    Do While Range("A" & ligne).Value <> ""
        Range("A" & ligne).Cut (Cells(numligne, numcolonne))
        Range("A" & ligne).Delete
        numcolonne = numcolonne + 1
        If Range("A" & ligne).Value = "" Then
            Range("A" & ligne).Delete
            Range("A" & ligne).Delete
            Range("A" & ligne).Delete
            numligne = numligne + 1
            numcolonne = 2
            ligne = ligne + 1
        End If
    Loop
    numligne est la ligne que l'on est en train de traiter
    numcolonne est la colonne de copy
    ligne est la ligne ou l'on saisi la valeur à déplacer

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    ceci ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 95
    Par défaut
    ha oui j'avais oublié l'en-tête

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 95
    Par défaut
    Ca marche en Excel ? je comprend pas trop là...c'est plus du vba

  6. #6
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Si si, c'est du VBA mais il faut ajouter une référence.

    Citation Envoyé par lucfrfr Voir le message
    Ca marche en Excel ? je comprend pas trop là...c'est plus du vba

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 95
    Par défaut
    cafeine, tu pourrais me dire ce que vaut mon petit bout de code s'il te plait ?
    J'ai vraiment l'impression d'être pire qu'un débutant là ou alors suis un fantôme...

    ps : pourrais-tu mettre ton code random ? j'aimerais comprendre comment tu le fais

  8. #8
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Hello,

    pour aller assez vite, je passerais par les expressions régulières ...

    dans mon tutoriel
    http://cafeine.developpez.com/access/tutoriel/regexp/

    il y a une fonction assez sympa pour tester une expression régulière AllRegExp
    http://cafeine.developpez.com/access.../regexp/#LII-B

    Je la teste avec ce motif ...
    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
    ?allregexp(UneVariableQuiContientLeTexte, _
        "Nom : (.*)(\r\n(.*))?\r\nAdresse : (.*)\r\ncp\+ville (.*)\r\ntel (.*)(\r\nfax (.*))?(\r\n\r\n\r\n|$)", _
        "$1;$3;$4;$5;$6;$8")
    ==================================
          Travaux liés à .Execute
    ==================================
    nombre d'occurences : 1
    source >>     Nom : Jean dumartin
    champ vide ou pas
    adresse : rue des près
    cp+ville 95000 Chailly
    tel 0184857865
    fax (champ cide ou pas)
    [$1]          Jean dumartin
    [$2]          
    champ vide ou pas
    [$3]          champ vide ou pas
    [$4]          rue des près
    [$5]          95000 Chailly
    [$6]          0184857865
    [$7]          
    fax (champ vide ou pas)
    [$8]          (champ vide ou pas)
    [$9]          
    ==================================
            Travaux liés à .Test
    ==================================
    Vrai
    ==================================
          Travaux liés à .Replace
    ==================================
    Jean dumartin;champ vide ou pas;rue des près;95000 Chailly;0184857865;(champ vide ou pas)
    Bon je sais c'est un peu barbare mais ça permet de transformer rapidement ton fichier fouilli en quelque chose de plus compréhensible ...

    Pour plus de détails, regarde le tutoriel ...

  9. #9
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Je viens de voir la solution de random qui est nickel si tu as toujours un nombre fixe de ligne par personne

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/11/2011, 15h52
  2. Réponses: 10
    Dernier message: 14/02/2007, 17h03
  3. [MySQL] Php, je ne comprends pas comment faire pour introduire des données dans une table
    Par Liondd dans le forum PHP & Base de données
    Réponses: 23
    Dernier message: 14/12/2006, 12h53
  4. [VB6]Comment faire pour récuperer des donnée sur un mp3 ou wav ?
    Par MegaBigBoss dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 13/06/2006, 16h08
  5. comment faire pour developper des prog en win32
    Par rhodan51 dans le forum Autres éditeurs
    Réponses: 11
    Dernier message: 09/11/2003, 19h39

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