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

IHM Discussion :

extraire chaines de caracteres separarées par des virgules


Sujet :

IHM

  1. #1
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut extraire chaines de caracteres separarées par des virgules
    Bonjour à Tous,
    J'ai un souci!

    Dans une table source j'ai un champ avec des references multiples séparées par des virgules. Ces références peuvent être parfois au nombre de 10.

    Je souhaiterais, avec une requite ajout, splitter toutes ces references afin qu'elles soient ajoutées, chacune dans une colonne séparée.

    exemple:
    row data champ unique:
    KLU15,KLU17,KLU18,KLU137,KLU28,KLU139,KLU13840,KLU14840

    solution souhaitée dans ma table de destination:
    Colonne 1: KLU15
    Colonne 2: KLU17
    Colonne 3: KLU18
    Colonne 4: KLU137
    Colonne 5: KLU28
    Colonne 6:KLU139
    Colonne 7:KLU13840
    Colonne 8:KLU14840
    ...

    J'ai cherché et n'ai trouvé que des "extraction de chaine de caractères" qu'à partir d'un caractère. Exist t-il une solution quand il y a plusieurs fois le même caractère?

    D'avance Merci

    Totor

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    À mon avis, on ne peut pas utiliser de requête pour faire cela.

    Voici un exemple code VBA qui le fait.

    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
    public sub DecouperKLU()
       dim db as dao.database:set db=currentdb
       dim rEntree as dao.recordset:set rEntree=db.openrecordset("TaSourceADecouper", dbOpenDynaset)
       dim rSortie as dao.recordset:set rSortie=db.openrecordset("TaTableResultat", dbOpenDynaset)
     
       dim tKLU() as string
       dim iKLU as long
     
       do while not rEntree.eof
           tKLU=split(rEntree![TonChampADecouper], ",") 'Découpe les KLU sur la virgule
     
           '=== Écrit les KLU
           for iKLU=lbound(tKLU) to ubound(TKLU)
              rSortie.addnew
              rSortie![TonChampKUL]=tKUL(iKLU))
              rSortie.update
           next iKLU
           '--- Écrit les KLU
     
          rEntree.movenext
       loop
     
       rSortie.close:set rSortie=nothing
       rEntree.close:set rEntree=nothing
       db.close:set db=nothing
    end sub
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut
    Merci Marot
    Avant tout merci pour ta réponse rapide!!!

    Petit souci...

    La ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
           tKLU = Split(rEntree![F19], ",") 'Découpe les KLU sur la virgule
    ressort en jaune.
    Le champ F19 est le champ d'origine contenant les data à spliter

    Qu'est ce qui coince?

    Merci
    Totor

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    As-tu un message d'erreur ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut
    Marot

    En fait le champ F19 est parfois vide... damned!!! et c'était le cas, la première ligne le champ f19 était vide

    Donc j'ai supprimé les lignes vides mais en même temps ça peut être le cas!!

    Comment faire?

    J'ai fait tourner sans la première ligne don't le champ f19 était vide et j'ai une nouvelle ligne en jaune

    et lorsque je passe la souris sur la zone pas de message d'erreur???

    J'ai encore rate un truc!

    Totor

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Pour les vides :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tKLU=split(rEntree![TonChampADecouper] & "", ",")
    Pour update aucune idée, tu devrais avoir un message d'erreur te signalant le problème.
    Par curiosité, si tu appuis sur [F8], est-ce que le code continu à s'exécuter ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  7. #7
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut
    Marot,
    voili, voilà...

    Run time error '3058'
    index or primary key cannot contain a Null value
    Ça doit venir de mon fichier destinataire !
    Et en effet ! J'ai retiré la clé et cela fonctionne.

    Par contre, les références sont bien splitées mais elles sont splitées verticalement. Ce que j'aurais voulu, c'est un split dans des colonnes différentes et non pas des lignes !
    Est ce possible?

    Merci
    Totor.

  8. #8
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut
    Bonsoir Marot,

    J'ai rechercher sur le web et je n'ai rien trouvé qui pourrait correspondre à mon besoin.
    En même temps je ne sais pas si j'ai été vraiment clair. Désolé!

    ci-joint un fichier excel qui traduit l'état de départ (AS IS) et l'état d'arrivé (TO BE) souhaité.
    Sur différents forum (dont developpez) j'ai trouvé de la concaténation sur une colonne de plusieurs lignes mais le split d'une colonne sur plusieurs colonne... nada!

    Si tu as une idée?

    En te remerciant

    PourMarot.xlsx

  9. #9
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut
    Je viens de trouver un code qui semble répondre au besoin mais j'ai un message d'erreur.

    Petit rappel: dans la colonne d'un tableau, dans les cellules qui composent cette colonne se trouvent des datas que je souhaite spliter dans une nouvelle table dans différentes colonnes.

    le code trouvé:
    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
    Private Sub Command11_Click()
    Dim db As DAO.Database: Set db = CurrentDb
        Dim rstS As DAO.Recordset, rstD As DAO.Recordset
        Dim strSQL As String
        Dim vaColone_1 As Variant
        Dim i As Integer
     
        strSQL = "SELECT TaSourceADecouper.[F19];"
        Set rstS = db.OpenRecordset(strSQL)
        strSQL = "SELECT TaTableResultat.Colonne_1, TaTableResultat.Colonne_2, TaTableResultat.Colonne_3, TaTableResultat.Colonne_4 FROM T_Destination;"
        Set rstD = db.OpenRecordset(strSQL)
        While rstS.EOF = False
            vaColone_1 = Split(rstS("F19"), ",")
                For i = 0 To UBound(vaF19)
                rstD.AddNew
                    rstD("Colonne_1") = vaF19(i)
                    rstD("Colonne_2") = rstS("[F19]")
                    rstD("Colonne_3") = rstS("[F19]")
                    rstD("Colonne_4") = rstS("[F19]")
                rstD.Update
                Next i
            rstS.MoveNext
        Wend
        rstS.Close
        rstD.Close
        Set rstS = Nothing
        Set rstD = Nothing
        Set db = Nothing
    End Sub
    message d'erruer run time error '3061':
    too few parameters. Expected 1.
    quand je passe la souris sur la zone jaune de la ligne

    Set rstS = db.OpenRecordset(strSQL)
    :"rstS=nothing"
    ???

    qu'est ce qui coince?

    Merci
    Totor

  10. #10
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Désolé j'avais mal lu tes spécifications.

    Ton SQL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strSQL = "SELECT TaSourceADecouper.[F19];"
    semble incomplet. Il n'y a pas de clause FROM.

    Je vais supposer que tu connais le nombre maximum et que tu as prévu les champs en conséquence.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    rstD.AddNew
     
    For i = LBound(vaF19) To UBound(vaF19)
         rstD.fields("Colonne_" & i+1) = vaF19(i)
    Next i
     
    rstD.Update
    EN passant, je ne sais pas comment tu prévois d'exploiter Colonne_1 et compagnie mais en Access, il est plutôt recommander d'avoir une structure du type :

    tblElementPrincipal
    CleElementPrincipal
    Info Principal

    tblElementDetail
    ClefElementPrincipal
    ClefElementDetail
    Info Detail

    En relation sur ClefElementPrincipal.

    Cette structure permet de faire facilement répondre à des questions comme :
    1. Combien de détails y a-t-il associés à un élément principal ?
    2. Combien d'éléments principaux comporte les détails X, Y et Z ?
    3. Combien y a-t-il de détails X ?


    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  11. #11
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut
    Bonsoir Marot,

    J'ai un petit souci!

    J'ai un message d'erreur... "Compile error: For control variable already in use"


    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
    Private Sub Command12_Click()
     
    Dim db As DAO.Database: Set db = CurrentDb
        Dim rstS As DAO.Recordset, rstD As DAO.Recordset
        Dim strSQL As String
        Dim vaColone_1 As Variant
        Dim i As Integer
     
        strSQL = "SELECT TaSourceADecouper.[F19] FROM TaTableResultat;"
        Set rstS = db.OpenRecordset(strSQL)
        strSQL = "SELECT TaTableResultat.Colonne_1, TaTableResultat.Colonne_2, TaTableResultat.Colonne_3, TaTableResultat.Colonne_4 FROM T_Destination;"
        Set rstD = db.OpenRecordset(strSQL)
        While rstS.EOF = False
            vaColone_1 = Split(rstS("F19"), ",")
                For i = 0 To UBound(vaF19)
    rstD.AddNew
     
    For i = LBound(vaF19) To UBound(vaF19)
         rstD.Fields("Colonne_" & i + 1) = vaF19(i)
    Next i
     
    rstD.Update
                Next i
            rstS.MoveNext
        Wend
        rstS.Close
        rstD.Close
        Set rstS = Nothing
        Set rstD = Nothing
        Set db = Nothing
    End Sub
    kékivapa?

    Merci

  12. #12
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Sur quelle ligne ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  13. #13
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut
    Oups!

    Désolé!

    la ligne surlignée en bleue mais pas dans la totalité

    ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = LBound(vaF19) To UBound(vaF19)
    "surlignage"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = LBound(vaF19) To
    Merci Marot

  14. #14
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Désolé j'aurai du être plus clair.

    Ton code devrait ressembler à cela dans le While/Wend (que j'ai remis pour faciliter le repérage).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        While rstS.EOF = False
            vaColone_1 = Split(rstS("F19"), ",")
            rstD.AddNew
     
            For i = LBound(vaF19) To UBound(vaF19)
               rstD.Fields("Colonne_" & i + 1) = vaF19(i)
            Next i
     
            rstD.Update
            rstS.MoveNext
        Wend
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  15. #15
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut
    Marot_r

    Je suis vraiment désolé d'insister...
    j'ai fait un copier/coller du code que je ne suis pas en mesure de comprendre pour tout dire!
    J'ai de nouveau un message d'erreur
    Run-time error '424':
    Object required

    ligne surligné en jaune
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       Set rstS = db.OpenRecordset(strSQL)

    code sur bouton 13
    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
    Private Sub Command13_Click()
     
        Dim rstS As DAO.Recordset, rstD As DAO.Recordset
        Dim strSQL As String
        Dim vaColone_1 As Variant
        Dim i As Integer
     
        strSQL = "SELECT TaSourceADecouper.[F19] FROM TaTableResultat;"
        Set rstS = db.OpenRecordset(strSQL)
        strSQL = "SELECT TaTableResultat.Colonne_1, TaTableResultat.Colonne_2, TaTableResultat.Colonne_3, TaTableResultat.Colonne_4, TaTableResultat.Colonne_5, TaTableResultat.Colonne_6, TaTableResultat.Colonne_7, TaTableResultat.Colonne_8, TaTableResultat.Colonne_9, TaTableResultat.Colonne_10, TaTableResultat.Colonne_11, TaTableResultat.Colonne_12 FROM T_Destination;"
        Set rstD = db.OpenRecordset(strSQL)
        While rstS.EOF = False
            vaColone_1 = Split(rstS("F19"), ",")
            rstD.AddNew
     
            For i = LBound(vaF19) To UBound(vaF19)
               rstD.Fields("Colonne_" & i + 1) = vaF19(i)
            Next i
     
            rstD.Update
            rstS.MoveNext
        Wend
        rstS.Close
        rstD.Close
        Set rstS = Nothing
        Set rstD = Nothing
        Set db = Nothing
     
     
    End Sub
    J'ai pensé, peut-être à tord, qu'il y avait un problem à destination et que le nombre de colonne n'était pas assez et j'ai donc rajouté 12 colonnes! mais ce n'est pas ça...
    Qu'est ce qui ne va pas?

    Merci

  16. #16
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Il semble manquer la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim db As DAO.Database: Set db = CurrentDb
    juste après le

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Command13_Click()
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  17. #17
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut
    Bonjour Marrot_r

    J'ai corrigé le code comme convenu

    J'ai un nouveua message!

    ligne surligné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Set rstS = db.OpenRecordset(strSQL)
    Code erreur
    Run-time error '3061':
    Too few parameters. Expected1.



    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
    Private Sub Command13_Click()
     
        Dim db As DAO.Database: Set db = CurrentDb
        Dim rstS As DAO.Recordset, rstD As DAO.Recordset
        Dim strSQL As String
        Dim vaColone_1 As Variant
        Dim i As Integer
     
        strSQL = "SELECT TaSourceADecouper.[F19] FROM TaTableResultat;"
        Set rstS = db.OpenRecordset(strSQL)
        strSQL = "SELECT TaTableResultat.Colonne_1, TaTableResultat.Colonne_2, TaTableResultat.Colonne_3, TaTableResultat.Colonne_4, TaTableResultat.Colonne_5, TaTableResultat.Colonne_6, TaTableResultat.Colonne_7, TaTableResultat.Colonne_8, TaTableResultat.Colonne_9, TaTableResultat.Colonne_10, TaTableResultat.Colonne_11, TaTableResultat.Colonne_12 FROM T_Destination;"
        Set rstD = db.OpenRecordset(strSQL)
        While rstS.EOF = False
            vaColone_1 = Split(rstS("F19"), ",")
            rstD.AddNew
     
            For i = LBound(vaColonne_1) To UBound(vaColonne_1)
               rstD.Fields("Colonne_" & i + 1) = vaColonne_1(i)
            Next i
     
            rstD.Update
            rstS.MoveNext
        Wend
        rstS.Close
        rstD.Close
        Set rstS = Nothing
        Set rstD = Nothing
        Set db = Nothing
     
     
    End Sub
    Merci

  18. #18
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut
    Marrot_r

    Désolé j'ai fait une C... et l'ai corrigé...

    Par contre j'ai un nouveau message d'erreur:
    Ru-time error '13':
    Type mismatch

    ligne surligné jaune:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            For i = LBound(vaColonne_1) To UBound(vaColonne_1)
    Encore désolé!

    j'en ai profité pour corrigé aussi le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            vaColone_1 = Split(rstS("F19") & "", ",")
    J'espère que ce n'a pas mis le bazard!

  19. #19
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    hum essaye cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim vaColone_1() As Variant
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  20. #20
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut
    Marot_r,

    A marche ps!

    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
    Private Sub Command13_Click()
     
        Dim db As DAO.Database: Set db = CurrentDb
        Dim rstS As DAO.Recordset, rstD As DAO.Recordset
        Dim strSQL As String
        Dim vaColonne_1() As Variant
        Dim i As Integer
     
        strSQL = "SELECT TaSourceADecouper.[F19] FROM TaSourceADecouper;"
        Set rstS = db.OpenRecordset(strSQL)
        strSQL = "SELECT TaTableResultat.Colonne_1, TaTableResultat.Colonne_2, TaTableResultat.Colonne_3, TaTableResultat.Colonne_4, TaTableResultat.Colonne_5, TaTableResultat.Colonne_6, TaTableResultat.Colonne_7, TaTableResultat.Colonne_8, TaTableResultat.Colonne_9, TaTableResultat.Colonne_10, TaTableResultat.Colonne_11, TaTableResultat.Colonne_12 FROM TaTableResultat;"
        Set rstD = db.OpenRecordset(strSQL)
     
        While rstS.EOF = False
            vaColone_1 = Split(rstS("F19") & "", ",")
            rstD.AddNew
     
            For i = LBound(vaColonne_1) To UBound(vaColonne_1)
               rstD.Fields("Colonne_" & i + 1) = vaColonne_1(i)
     
            Next i
     
            rstD.Update
            rstS.MoveNext
        Wend
        rstS.Close
        rstD.Close
        Set rstS = Nothing
        Set rstD = Nothing
        Set db = Nothing
     
     
    End Sub
    Toujours en jaune :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            For i = LBound(vaColonne_1) To UBound(vaColonne_1)
    Quand je passe la souris sur le surlignage jaune

    sur le i: I=0
    sur le Lbound: LBound(vaColonne_1)=<Subscript out of range>
    sur le Ubound: UBound(vaColonne_1)=<Subscript out of range>

    Message d'erreur
    Run-time error '9':
    Subscript out of range

Discussions similaires

  1. [XL-2003] Extraire Mots séparé par des virgules
    Par guigui69 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 04/05/2011, 18h15
  2. [CSV] Remplacer les points par des virgules
    Par johnkro dans le forum Langage
    Réponses: 4
    Dernier message: 27/11/2008, 19h25
  3. Extraire chaine de caractere
    Par killuaster dans le forum Langage
    Réponses: 3
    Dernier message: 18/12/2006, 10h10
  4. Réponses: 2
    Dernier message: 27/10/2006, 18h22
  5. [VBA-E]Ligne separée par des virgules
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 25/04/2006, 14h06

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