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: