Résultat de Split dans tableau 2D VBA

Résolu
Galgante -  
 Galgante -
Bonjour,

Je cherche à récupérer des valeurs dans une feuille 1 (colonne 1) et les placer dans un tableau à 2 dimensions.

- Description du contenu de ma colonne feuille 1: 480 lignes, le contenu de chaque ligne est un ensemble de valeurs séparées par des virgules (sur 1 colonne)
Ligne 1 = [valeur1, valeur2, valeur3,... ,valeur 20]

Je cherche à mettre le résultat de
For i = 0 To 480
    tab1(i) = Split(Worksheets("feuille 1").Cells(i + 1, 1), ",") 'Séparation 
   Next i

Dans le tableau suivant:
Dim tab2(480,20)


NB: Lors d'un test d'espionnage de la variable tab1, le debugger me sort un tableau, mais je ne trouve pas comment y accéder en code...

3 réponses

  1. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    Par exemple :

    Dim i As Integer
    Dim j As Integer
    
         For i = 0 To 480
              For j = 0 To 20
                   MsgBox tab2(i,j)
              Next j
         Next i


    ;o)
    0
    1. Galgante
       
      Bonjour,

      Merci pour la tentative, mais mon problème n'est pas le fait de parcourir un tableau 2D, mais de récupérer dans un tableau 2D les données générées par la fonction "Split"
      0
  2. Galgante
     
    A la place d'un code VBA, j'ai utilisé la fonction Excel suivante, qui fonctionne très bien:
    Données/Convertir...
    J'ai ensuite sélectionné ma colonne...

    Si quelqu'un sait comment faire en VBA, je suis tout de même preneur.

    Cdlt.
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      bonjour

      en VBA restitution en feuille2 (testé sur 3 lignes et 2 valeurs par ligne)

      Sub decouper_lig()
      Dim derlig As Integer
      Dim tablo, temp
      derlig = Range("A1000").End(xlUp).Row - 1
      ReDim tablo(derlig, 19)
      For cptr = 0 To derlig
          temp = Split(Sheets(1).Cells(cptr + 1, 1), ",")
          For col = 0 To UBound(temp)
              tablo(cptr, col) = temp(col)
          Next
      Next
      Sheets(2).Range("A1:B" & derlig + 1) = tablo
      
      End Sub
      0
    2. Galgante
       
      Merci, je vais tester ça.
      0
  3. Galgante
     
    Voici la version finale de mon code, tirée de la version de michel_m:

    Sub decouper_lig()
        Dim derlig As Integer
        Dim tablo, temp
        Dim col As Integer
        
    On Error GoTo Errorr
        derlig = Worksheets("VAR L39 ligne").Range("A1000").End(xlUp).Row - 1
        col = 0
        ReDim tablo(derlig, 19)
        For cptr = 0 To derlig
            temp = Split(Worksheets("VAR L39 ligne").Cells(cptr + 1, 1), ",")
            For col = 0 To 19
                tablo(cptr, col) = temp(col)
            Next col
        Next cptr
        Worksheets("Feuil2").Range("A1:T" & derlig + 1) = tablo
        Exit Sub
    Errorr:
        MsgBox Err.Number & " " & Err.Description & vbCrLf & "Col: " & col & vbCrLf & "Lig: " & cptr & vbCrLf & "Derlig: " & derlig
        Worksheets("Feuil2").Range("A1:T" & derlig + 1) = tablo
    End Sub


    Encore merci.
    0