Bonjour,
j'utilise une macro qui m'importe un fichier CSV dans un classeur excel et m'alimente un tableau en fonction d'une lettre comme identifiant de ligne et un chiffre en colonne.
Les cellules vides sont remplies par la valeur WAIT (pour les 2 première lignes).
Lors du test de la macro mon tableau commencait en A1. Tout fonctionnait bien. Lors des tests il s'agissait d'un tableau de 3 lignes et 5 colonnes, mais mon vrai tableau va de A à H pour les lignes et de 1 a 12 pour les colonnes.
Mais en réalité, mon tableau va commencer à partir de la ligne 9. Et du coup ma macro ne fonctionne plus.
Mon tableau va de A9 à N26 et la macro doit s'arrêter en N26.
Comment modifier ma macro pour que cela se fasse ?
Je bloque je n'arrive pas à voir quelle partie modifier pour que la macro fonctionne dans mon tableau déplacé.
je vous joins le tableau de test(avec la macro qui fonctionne), le fichier CSV et le nouveau tableau à 10.
Merci d'avance à qui voudra bien m'aider 😱
j'utilise une macro qui m'importe un fichier CSV dans un classeur excel et m'alimente un tableau en fonction d'une lettre comme identifiant de ligne et un chiffre en colonne.
Les cellules vides sont remplies par la valeur WAIT (pour les 2 première lignes).
Lors du test de la macro mon tableau commencait en A1. Tout fonctionnait bien. Lors des tests il s'agissait d'un tableau de 3 lignes et 5 colonnes, mais mon vrai tableau va de A à H pour les lignes et de 1 a 12 pour les colonnes.
Mais en réalité, mon tableau va commencer à partir de la ligne 9. Et du coup ma macro ne fonctionne plus.
Mon tableau va de A9 à N26 et la macro doit s'arrêter en N26.
Comment modifier ma macro pour que cela se fasse ?
Code:
Sub ImprotCSV()
Dim table() As String
Dim lig As Integer
Dim cl As Range
Dim off1 As Integer
Dim off2 As Integer
With Application.FileDialog(msoFileDialogFilePicker)
.InitialFileName = "C:\"
.Show
If .SelectedItems.Count > 0 Then Workbooks.Open (.SelectedItems(1))
End With
With ActiveWorkbook.Worksheets(1)
lig = .Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
ReDim table(1 To 5, 1 To lig)
For i = 0 To lig - 1
Set cl = .Range("A1").Offset(i, 0)
off1 = InStr(cl.Value, ";")
table(1, i + 1) = Left(cl.Value, off1 - 1)
For j = 2 To 4
off2 = InStr(off1 + 1, cl.Value, ";")
table(j, i + 1) = Mid(cl.Value, off1 + 1, off2 - off1 - 1)
off1 = off2
Next j
table(5, i + 1) = Right(cl.Value, Len(cl.Value) - off1)
Next i
End With
ActiveWorkbook.Close
With Worksheets("Data")
For i = 1 To lig
Set cl = .Cells(.Columns(1).Find(table(1, i), LookIn:=xlFormulas, lookat:=xlWhole).Row - 1, .Rows(1).Find(table(2, i), LookIn:=xlFormulas, lookat:=xlWhole).Column)
For j = 0 To 2
cl.Offset(j, 0) = table(3 + j, i)
Next j
Next i
Set cl = .Cells(.Columns(1).Find("A", LookIn:=xlFormulas, lookat:=xlWhole).Row - 1, .Rows(1).Find(1, LookIn:=xlFormulas, lookat:=xlWhole).Column)
For i = 0 To .Rows(1).Find("*", , , , xlByColumns, xlPrevious).Columns - 1
For j = 0 To .Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row - 1
If j + 1 <> 3 * Int((j + 1) / 3) Then
If cl.Offset(j, i) = "" Then
cl.Offset(j, i) = "WAIT"
End If
End If
Next j
Next i
End With
End Sub
Je bloque je n'arrive pas à voir quelle partie modifier pour que la macro fonctionne dans mon tableau déplacé.
je vous joins le tableau de test(avec la macro qui fonctionne), le fichier CSV et le nouveau tableau à 10.
Merci d'avance à qui voudra bien m'aider 😱
Pièces jointes
Dernière édition: