Se connecter avec
S'enregistrer | Connectez-vous

Problème dans un boucle For..Next

Dernière réponse : dans Programmation
Partagez

Bonjour,

Je suis stagiaire et débutant en VBA et on me demande de faire un programme en VBA. J'ai tenté de faire une macro qui permet d'aller chercher un fichier .csv et qui collent les cellules qui répondent à une condition (ici c'est une condition de date) dans un autre classeur. J'ai épluché tous les tutos mais je n'arrive pas à trouver la solution. J'ai une erreur 1004, Erreur définie par l'application ou par l'objet à la ligne :
  1. For J = 2 To Sheets(2).Range("A" & Rows.Count).End(x1up).Row

Je vous mets le code en entier car vu mon niveau il est possible qu'elle ne soit pas bien construite avant cette ligne la
  1. Sub Import()
  2.  
  3. Set Destination = ActiveWorkbook
  4.  
  5. Dim ladate As Date, Plage As Range, Plaga As Range, Source As Variant
  6.  
  7. ladate = DateAdd("d", -7, Date)
  8.  
  9.  
  10. Source = Application.GetOpenFilename("Fichiers Donnees (*.csv), *.csv")
  11. If Source = False Then
  12. MsgBox ("Aucun fichier sélectionné")
  13. Exit Sub
  14. Else
  15. Set Source = ActiveWorkbook
  16.  
  17. For I = 2 To Sheets(1).Range("A" & Rows.Count).End(xlUp).Row
  18. If Sheets(1).Range("A" & I).Value >= ladate Then
  19. If Plage Is Nothing Then
  20. Set Plage = Sheets(1).Range("A" & I & ":" & "E" & I)
  21. Else
  22. Set Plage = Union(Plage, Sheets(1).Range("A" & I & ":" & "E" & I))
  23. End If
  24. End If
  25. Next
  26.  
  27. Destination.Activate
  28.  
  29. For J = 2 To Sheets(2).Range("A" & Rows.Count).End(x1up).Row
  30. Set Plaga = Sheets(2).Range("A" & J & ":" & "E" & J)
  31. Next J
  32. Plaga.ClearContents
  33. Plage.Copy Destination:=Sheets(2).Range("A2")
  34.  
  35. Source.Activate
  36. Application.CutCopyMode = False
  37. ActiveWindow.Close SaveChanges:=False
  38.  
  39. End If
  40.  
  41.  
  42. End Sub


Merci de votre aide, le VBA c'est pas vraiment cool quand ca marche pas !!:??: 

Autres pages sur : probleme boucle for next

Salut,
C'est très bien d'utiliser la balise code, mais stp utilise code=vb, plus lisible.

Ensuite, Ok tu vas checher le nom du fichier csv, et après ... tu n'en fais rien du tout ...
Le fichier source n'est jamais ouvert !
(regarde l'aide sur getopenfilename)
donc dans ton code source = destination ! (qui je suppose est vide ...) tu cherches dons à faire une boucle de 2 à 1, ce que le vba ne permet pas (à moins de spécifié un pas négatif, mais ce n'est pas ce que tu veux faire).

Pour le debug, tu as les point d'arret qui peuvent être très efficae ...
Posez votre question