Tableau avec taille dynamique suivant import CSV
Bonjour,
J'ai un fichier composé de deux feuilles. La première est générée depuis un import CSV qui contient une en-tête, un certain nombre de ligne qui composonse les données que je vais analyser et une dernière ligne composant des totaux.
Ma second feuille réutilise mes données de ma première feuille avec de nouvelles formules et colonnes.
Mon problèmes est que la première feuille est basée sur un import CSV qui a un nombre de lignes variable et je voudrais que ma seconde feuille s'adapte aux nombres de lignes variables de l'import CSV et de sa structure: une ligne d'en-tête, les lignes de données variables et la dernière ligne qui est commune à tous les imports CSV.
Donc je cherche le bonne solution: fonction(décaler?, VBA ou autre) pour que ça fonctionne correctement.
Un ficher d'exemple est fourni.
Merci
Bonjour Philoub02 et
Certains te dirons de le faire avec Power Query, mais par formule avec DECALER() c'est le plus simple
Il suffit que tu regardes comment on utilise la fonction
Bonjour,
Une proposition VBA à tester.
Cdlt.
Public Sub CalculationsFromCSV()
Dim wsImport As Worksheet, wsCalcul As Worksheet
Dim rng As Range
Dim tbl As Variant, arr() As Variant
Dim I As Long
Const N = 1024 ^ 3
Set wsImport = Worksheets("INPUT CSV")
Set wsCalcul = Worksheets("Calculs")
wsCalcul.Cells(1).CurrentRegion.Offset(1).ClearContents
Set rng = wsImport.Cells(1).CurrentRegion
tbl = rng.Offset(1).Resize(rng.Rows.Count - 1, 10).Value
ReDim arr(1 To UBound(tbl), 1 To 13)
For I = 1 To UBound(tbl)
arr(I, 1) = tbl(I, 1)
arr(I, 2) = tbl(I, 2) / N
arr(I, 3) = tbl(I, 3)
arr(I, 4) = tbl(I, 4)
arr(I, 5) = tbl(I, 5) / tbl(I, 4)
arr(I, 6) = tbl(I, 5)
arr(I, 7) = tbl(I, 2) / N * (1 - arr(I, 3))
If tbl(I, 3) = 1 Then arr(I, 8) = 0 Else arr(I, 8) = arr(I, 2) / tbl(I, 5)
arr(I, 9) = tbl(I, 6) / N
arr(I, 10) = tbl(I, 7) / N
arr(I, 11) = arr(I, 8) - arr(I, 9) - arr(I, 10) - tbl(I, 9) / N
arr(I, 12) = tbl(I, 9) / N
arr(I, 13) = tbl(I, 10) / N
Next I
wsCalcul.Cells(2, 1).Resize(UBound(arr), 13).Value = arr
End SubBonjour,
Merci à tous les deux pour votre retour rapide.
J'ai essayé les 2 solutions mais j'ai un problème avec le VBA. Lorsque j'essaye d'exécuter, j'ai une erreur 13.
Je me suis donc rabattu sur la fonction, et à mon grand étonnement je suis presque parvenu au résultat final attendu.
Il me reste plus qu'un seul point:
- Je souhaiterais que la dernière rangée de la colonne partage de la feuille Calculs récupère la dernière valeur de la rangée de la colonne partage de la feuille INPUT CSV, et que ça n'utilise pas la formule utilisée par les autres rangées. Mon problème est que si j'utilise la fonction décaler la rangée n'est pas dynamique, si le nombre de ligne varie dans INPUT.CSV.
Merci
Bonjour,
Quelle erreur 13 et où ?
Voir fichier.
ALT F8, exécuter la procédure CalculationsFromCSV
En fin de procédure, on affiche la valeur de la dernière ligne de la colonne Passage.
Que fait-on avec ? Ta demande est confuse...
Cdlt.
Bonsoir Jean-Eric,
Merci pour ton fichier avec la Macro qui fonctionne parfaitement.
Ma demande était d'arriver à faire la même chose avec la formule Offset.
Mais je vais utiliser la version avec ta macro, ce sera très bien.
Merci encore.
bonne soirée.