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.

4classeu2.xlsm (16.42 Ko)
3classeur1.xlsm (12.80 Ko)

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 Sub

En règle général il vaut mieux éviter d'emboiter les With... End With

A+

Rechercher des sujets similaires à "corriger code"