Se connecter avec
S'enregistrer | Connectez-vous

aide svp macro exel

Dernière réponse : dans Programmation

salut c'est encore moi .voila mon probleme :
j'ai deux classeur :
classeur2 casseur 3 :
ref | ...........|....... ref | ...........|.......
------------------------- ----------------------------------
1-012254 | | 1-44344 | |
--------------------------- --------------------------------
alors je voudrai:
- que quand dans mon classeur 3 j'ai 1 ref qui est pas dans le classeur 2 elle y est ajouté à la suite des autres dans le classeur 2
- que quand dans mon classeur 3 j'ai une ref qui est deja dans mon classeur 2 elle soit supprimer.
alor voila j'ai fai ca :
  1. Sub MacroEssai()
  2. '
  3. ' MacroEssai Macro
  4. ' Macro enregistrée le 01/06/2006 par Administrateur
  5.  
  6.  
  7. 'Workbooks("Classeur2").Activate
  8. 'Rows("1").Clear
  9.  
  10. Workbooks("Classeur3").Activate
  11. Dim application2() As String
  12. Dim k As Integer
  13. Dim l As Integer
  14. Dim Cel2 As Range
  15. Set Cel2 = Range("A1")
  16. Workbooks("Classeur2").Activate
  17. Dim Application() As String
  18. Dim i As Integer
  19. Dim j As Integer
  20. Dim Cel1 As Range
  21. ' Dim Sel As String
  22. Set Cel1 = Range("A1")
  23.  
  24. For i = 1 To 75
  25. Workbooks("Classeur2").Activate
  26. j = j + 1
  27. 'Redimension du tableau en conservant ses éléments
  28. ReDim Preserve Application(j)
  29. Application(j) = Cel1.Offset(i)
  30. 'Sel = Cel1.Offset(i)
  31. 'Cel1 = Sel
  32. Workbooks("Classeur3").Activate
  33. For k = 1 To 75
  34. If (Cel2.Offset(k, 0) = Cel1.Offset(i, 0)) Then
  35. Dim Sel As String
  36. l = l + 1
  37. ReDim Preserve application2(l)
  38. Cel2.Offset(k) = Sel
  39. application2(l) = Cel2.Offset(k)
  40. Rows(1).Offset(k).Delete
  41.  
  42. End If
  43. Next k
  44. Next i
  45. Workbooks("Classeur3").Activate
  46. 'copie du classeur 2 sur lotr
  47. Dim Cel3 As Range, Cel4 As Range
  48. Set Cel3 = Range("A2:E75")
  49. Set Cel4 = Workbooks("Classeur2").Worksheets("Feuil1").Range("A1").End(xlDown).Offset(1, 0)
  50. Cel3.Copy Cel4
  51.  
  52.  
  53.  
  54. End Sub



mais voila quand il y a beaucoup de reference dans le classeur 3 il en oubli plein a chaque foi (ex : il ne transmet pa au classeur 2 les nouvelle reference ) et des foi aussi il ajoute dans le classeur 2 une ref deja existante (+ raremen).
ces 2 probleme arrive surtout quan il y a beaucoup de ref .



aider moi .merci

Autres pages sur : aide svp macro exel

Lassé par la pub ? Créez un compte

meme pas un svp! halala ces jeunes!
louloukg a dit :
  1. ' MacroEssai Macro
  2. ' Macro enregistrée le 01/06/2006 par Administrateur
  3. 'Workbooks("Classeur2").Activate
  4. 'Rows("1").Clear
  5. ' Dim Sel As String
  6. 'Redimension du tableau en conservant ses éléments'Sel = Cel1.Offset(i)
  7. 'Cel1 = Sel
  8. 'copie du classeur 2 sur lotr


histoire que ce soit plus lisible, édite ton message stp en enlevant toutes les lignes que tu as mis en commentaire
louloukg a dit :
  1. Dim Sel As String
  2. l = l + 1
  3. ReDim Preserve application2(l)
  4. Cel2.Offset(k) = Sel
  5. application2(l) = Cel2.Offset(k)


Je ne sais pas si ca vient de ca, mais en tout cas ta variable Sel est vide...donc ton Cel2.offset(k) et application2(l) aussi.

Tu as exécuter ton programme en pas à pas, en mettant en parrallèle ta fenêtre vb et excel?
Histoire de voir à quel endroit et à quel moment il fait des trucs bizarre.

en fait c'est ce code la. l'autre avait des conneries dedans ( le Sel ) dsl
  1. Workbooks("Classeur3").Activate
  2. Dim application2() As String
  3. Dim k As Integer
  4. Dim l As Integer
  5. Dim Cel2 As Range
  6. Set Cel2 = Range("A1")
  7. Workbooks("Classeur2").Activate
  8. Dim Application() As String
  9. Dim i As Integer
  10. Dim j As Integer
  11. Dim Cel1 As Range
  12. '
  13. Set Cel1 = Range("A1")
  14.  
  15. For i = 1 To 75
  16. Workbooks("Classeur2").Activate
  17. j = j + 1
  18. ReDim Preserve Application(j)
  19. Application(j) = Cel1.Offset(i)
  20. Workbooks("Classeur3").Activate
  21. For k = 1 To 75
  22. If (Cel2.Offset(k, 0) = Cel1.Offset(i, 0)) Then
  23. Dim Sel As String
  24. l = l + 1
  25. ReDim Preserve application2(l)
  26. application2(l) = Cel2.Offset(k)
  27. Rows(1).Offset(k).Delete
  28.  
  29. End If
  30. Next k
  31. Next i
  32. Workbooks("Classeur3").Activate
  33. 'copie du classeur 2 sur lotr
  34. Dim Cel3 As Range, Cel4 As Range
  35. Set Cel3 = Range("A2:E75")
  36. Set Cel4 = Workbooks("Classeur2").Worksheets("Feuil1").Range("A1").End(xlDown).Offset(1, 0)
  37. Cel3.Copy Cel4

Vire tes
  1. redim preserve application
ca sert à rien ces trucs (sauf erreur de ma part).

louloukg a dit :
  1. Dim Cel3 As Range, Cel4 As Range
  2. Set Cel3 = Range("A2:E75")
  3. Set Cel4 = Workbooks("Classeur2").Worksheets("Feuil1").Range("A1").End(xlDown).Offset(1, 0)
  4. Cel3.Copy Cel4
Là tu souhaite copier ton tableau de classeur 3 vers le classeur 2 en collant de puis la cellule A2?
Car si c'est ca que tu veux faire, je pense pas que ca marche, au mieux ca copiera ton tableau du classeur 3 vers la fin du tableau du classeur 2.
Si ce que tu veux faire c'est ce que je t'ai dit au début, c'est plutot ca:
  1. Dim Cel3 As Range, Cel4 As Range
  2. Set Cel3 = Range("A2:E75")
  3. Set Cel4 = Workbooks("Classeur2").Worksheets("Feuil1").Range("A1").End(xlDown).Offset(1, 0)
  4. Cel3.select
  5. selection.copy
  6. cel4.select
  7. selection.paste
  8. cutcopymode=false


Sinon j'ai testé le reste de ton prog et il à l'air de bien fonctionner. Toi tu as vu qu'il allait mal à quel endroit?
Lassé par la pub ? Créez un compte