Corriger un code
Bonjour,
J’ai besoin de votre aide pour corriger le code suivant
Sub Macro1()
Dim fichier4
fichier4 = Application.GetOpenFilename("Excel (*.xlsm), *.xlsm", , "Sélection du classeur1", , False)
If fichier4 = False Then Exit Sub
Application.ScreenUpdating = False
With Workbooks.Open(fichier4)
With Worksheets("data")
nbligne = .Range("A" & Rows.Count).End(xlUp).Row
For j = 2 To nbligne
categorie = .Cells(j, 4).Value
If categorie = "a" Then
‘ThisWorkbook.Sheets("data2").Select
nbligne2 = Range("a" & Rows.Count).End(xlUp).Row + 1
Cells(nbligne2, 1) = .Cells(j, 1).Value
Cells(nbligne2, 2) = .Cells(j, 4).Value
Cells(nbligne2, 3) = .Cells(j, 6).Value
End If
Next
End With
End With
End Sub
Je veux chercher des données dans le classeur 1 et les coller dans classeur selon la condition col d = « a ». Le soucis c’est qu’en executant le code ci-dessus, il me colle les données dans le classeur1 au lieu du classeur 2. J’ai ajouté : ThisWorkbook.Sheets("data2").Select.
Mais ça ne fonctionne pas. Comment je pourrai résoudre ce problème. Merci pour votre aide.
Bonjour,
Une solution :
Sub Galopin()
Dim fichier4, WBS As Workbook
fichier4 = Application.GetOpenFilename("Excel (*.xlsm), *.xlsm", , "Sélection du classeur1", , False)
If fichier4 = False Then Exit Sub
Application.ScreenUpdating = False
Set WBS = Workbooks.Open(fichier4)
nbligne = WBS.Worksheets("data").Range("A" & Rows.Count).End(xlUp).Row
For j = 2 To nbligne
categorie = WBS.Worksheets("data").Cells(j, 4).Value
If categorie = "a" Then
With ThisWorkbook.Sheets("data2")
nbligne2 = .Range("a" & Rows.Count).End(xlUp).Row + 1
.Cells(nbligne2, 1) = WBS.Worksheets("data").Cells(j, 1).Value
.Cells(nbligne2, 2) = WBS.Worksheets("data").Cells(j, 4).Value
.Cells(nbligne2, 3) = WBS.Worksheets("data").Cells(j, 6).Value
End With
End If
Next
Workbooks("Classeur1.xlsm").Close
End SubEn règle général il vaut mieux éviter d'emboiter les With... End With
A+