Accès à des données dans une cellule "listée"
Bonjour à tous,
Je me permets de créer un post car j'ai un léger souci. Je suis en train de développer une macro permettant de recouper toute une liste de fichier dans un seul fichier unique. Ces fichiers dépendent de différents paramètres rentrés sur la première ligne. Or pour éviter les erreurs de saisie ces fichiers comportent une validation de données par listes. Après avoir vaillamment lutté avec Excel, je me suis rendu compte que le format dans ces cellules est particulier : Excel les considère comme des array (résultat de VarType = 8204). J'aimerai savoir comment récupérer ces valeurs qui me permettent de positionner les valeurs récupérées sur mon classeur de destination. Vous trouverez ci-après une partie du code incriminé :
Code:
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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
'wbk est le classeur destination
While Fichier <> ""
Set Wb = Workbooks.Open(Fichier)
Fichier = Dir()
For i = 1 To 4
wbk.Sheets(1).Cells(row, 1) = CStr(Wb.Sheets(1).Cells(1, 3))
wbk.Sheets(1).Cells(row, 2).Value = CStr(Wb.Sheets(1).Cells(1, 5))
wbk.Sheets(1).Cells(row, 3).Value = Wb.Sheets(1).Range("H1:I1").Value 'Pose problème
wbk.Sheets(1).Cells(row, 4).Value = Wb.Sheets(1).Range(Cells(1, 12), Cells(1, 13)).Value 'Pose problème
'j'ai tenté de faire mon test en passant par des variables (de type Variant pour être large)
test = wbk.Sheets(3).Cells(4, 7).Value
test = CStr(test)
essai = Wb.Sheets(1).Range("O1:P1")
'tentative désespérée pour lire les valeurs de tout le tableau à défaut de pouvoir récupérer la valeur de la cellule
'renvoie l'erreur "erreur 9 : l'indice n'appartient pas à la sélection"
For k = LBound(essai) To UBound(essai)
MsgBox essai(i).Value
Next k
If essai = test Then
For k = 1 To 28
ThisWorkbook.Sheets(1).Cells(row, k + 4).Value = Wb.Sheets(1).Cells(i + 4, k + 1).Value
Next k
Else
For k = 1 To 28
ThisWorkbook.Sheets(1).Cells(row, k + 34).Value = Wb.Sheets(1).Cells(i + 4, k + 1).Value
Next k
End If
row = row + 1
Next i
Wb.Close True
Set Wb = Nothing
Wend |