Changer zone de critère d'une macro

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Lili189

XLDnaute Junior
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 ?


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:
Re : Changer zone de critère d'une macro

Bonjour Pierrejean 🙂

merci beaucoup de votre réponse.

Cela me convient. Sauf un petit détail. Je voudrais que pour les cellules vides, seul numéro et désignation doivent avoir WAIT, sauf la Couleur 😛 est-ce possible ?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
237
Réponses
4
Affichages
177
Réponses
8
Affichages
468
Réponses
10
Affichages
281
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Retour