Se connecter / S'enregistrer
Votre question
Résolu

copie coller feuille excel

Tags :
  • Array
  • Programmation
Dernière réponse : dans Programmation
8 Août 2016 15:19:10

Bonjour,
je souhaiterai réaliser un macro vba qui me permettra de faire une copie coller des données d'une feuille (appellé "mafeuillecopie") sur une autre (appellé "mafeuillecoller").
Cependant mon tuteur de stage m'a passé un code vba afin que je l'adapte pour réaliser la copie coller mais en malheureusement j'ai toujours pas réussi à le faire marcher.
est ce que quelqu'un pourrait m'aider SVP?
Démarche : l'idée c'est de se dire à chaque fois qu'on variable=variable et modalité=modalité tu copie colle. J'aurai bien aimé vous passer le fichier excel pour une meilleur compréhension sauf que c'est pas possible de mettre en pièce jointe le fichier.
Modération: pas d'échange de fichier avec macro tolléré ici, par égard pour les aidants ...

merci d'avance!!!

voici le code :
  1. Sub ALIMAN_COMP()
  2.  
  3. Application.ScreenUpdating = False
  4. Application.DisplayAlerts = False
  5.  
  6. Dim i As Integer, j As Integer, Q As Integer, t As Integer, MAPLAGE As Range, mafeuillecoller As Range, _
  7. mafeuillecopie As Range, DECALECEL As Integer, NBCOL As Integer
  8.  
  9.  
  10. Workbooks.OpenText Filename:="C:\Fichiers\Sas\Excel\MCOMAN.xls", _
  11. Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
  12. xlDoubleQuote, Tab:=True _
  13. , FieldInfo:=Array(Array(1, 2), _
  14. Array(2, 2), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
  15. Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1))
  16.  
  17.  
  18. Set mafeuillecoller = ThisWorkbook.Worksheets("MACRO_AN").Range("A1")
  19. Set mafeuillecopie = Workbooks("MCOMAN.XLS").Worksheets("MCOMAN").Range("A3").CurrentRegion
  20. Set RANGECAL = ThisWorkbook.Worksheets("MACRO_AN").Range("P1").CurrentRegion
  21.  
  22. For i = 2 To mafeuillecopie.Rows.Count
  23. For j = 1 To RANGECAL.Rows.Count
  24.  
  25.  
  26. If mafeuillecopie(i, "A").Value = mafeuillecoller(j, "N").Value Then
  27. 'Si variable=variable
  28.  
  29. If mafeuillecopie(i, "B").Value = mafeuillecoller(j, "O").Value Then
  30. 'Si modalité=modalité
  31.  
  32.  
  33. NBCOL = mafeuillecopie.Columns.Count - 2
  34.  
  35. mafeuillecopie(i, "C").Resize(1, NBCOL).Copy
  36. mafeuillecoller(j, "B").PasteSpecial Paste:=xlPasteValues
  37.  
  38.  
  39. End If
  40. End If
  41.  
  42.  
  43. Next j
  44.  
  45.  
  46. Next i
  47.  
  48. Application.CutCopyMode = False
  49.  
  50. ActiveWindow.ScrollRow = 1
  51.  
  52. Windows("MCOMAN.XLS").Close
  53.  
  54. ThisWorkbook.Activate
  55.  
  56. Range("H3").Value = Range("T1").Value & " AU " & Range("U1").Value
  57.  
  58. mensuelle = Mid(Range("u1").Value, 4, 2) & Right(Range("u1").Value, 4)
  59.  
  60. On Error Resume Next
  61. ChDir "U:\ETUDES\Direction_Marche_des_Particuliers\Collaborateurs\Nathan\chiffres reporting mensuels\Comparatifs mensuels\" & mensuelle
  62. If Err Then MkDir "U:\ETUDES\Direction_Marche_des_Particuliers\Collaborateurs\Nathan\chiffres reporting mensuels\Comparatifs mensuels\" & mensuelle 'pour le créer
  63. On Error GoTo 0
  64.  
  65. Range("Zone_d_impression").Select
  66. Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
  67. SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
  68. ReplaceFormat:=False
  69.  
  70. Range("a1").Select
  71.  
  72. ActiveWorkbook.SaveAs Filename:= _
  73. "U:\ETUDES\Direction_Marche_des_Particuliers\Collaborateurs\Nathan\chiffres reporting mensuels\Comparatifs mensuels\" _
  74. & mensuelle & "\Comparatif_AN_" & mensuelle & ".xls", FileFormat _
  75. :=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
  76. False, CreateBackup:=False
  77.  
  78. ActiveWorkbook.Close
  79.  
  80.  
  81. Application.ScreenUpdating = True
  82. Application.DisplayAlerts = True
  83.  
  84. End Sub

Modération: merci d'utiliser les balises [code="vb"] .. [/code]pour présenter ton code

Autres pages sur : copie coller feuille excel

a b L Programmation
8 Août 2016 15:44:16

Salut, quel est ton problème exactement ?
Perso j'ai déjà un peu de mal avec le nom de tes variables ... (une range n'est pas une feuille !)

Ensuite au niveau du code, tu effectue ta deuxième boucles sur la taille de la zone "RANGECAL" mais en regardant dans la zone "mafeuillecoller" quelquechose cloche là.
A quoi correspondent exactemnt tes trois zones ?
Que cherche tu as comparer exactement ?
Ou veux tu le copier exactement ?
m
0
l
8 Août 2016 16:05:03

Merci de votre réponse Drul et de votre disponibilité.
Mon problème: j'ai une feuille excel qui contient des données avec les variables et leurs modalités (que je considère comme mafeuillecopie). Ensuite j'ai une autre feuille excel qui n'a pas de données mais contient uniquement les mêmes variables et modalités que celles de ma feuillecopie.
Tout ce que je souhaite c'est de faire une copie coller des données de la feuille("mafeuillecopie") dans la feuille appellé ("mafeuillecoller"). En précisant au macro excel de réaliser ceci tant que la variable et la modalité de "mafeuillecopie" correspond à la variable et la modalité de "mafeuillecoller"
Si tu le souhaites je pourrai t'envoyer par mail le fichier Excel contenant mes deux feuilles?
je ne sais pas si je suis clair dans mes explications??
m
0
l
Contenus similaires
8 Août 2016 16:07:37

je tenais à preciser également que ce code n'a rien avoir avec mon problème. Il m'a juste était filé par mon maître de stage afin de l'adapter.
m
0
l
a b L Programmation
8 Août 2016 16:10:43

Pas de fichier avec macro, mais tu peux poster un ou deux printscreen via un hébérgeur d'image (par ex www.casimages.com), ça aiderait bien.
Ce qui me pérturbe dans la macro que tu as collé c'est la range: " RANGECAL". A quoi sert-elle ?

Edit, ok je viens de voir ta précision ...
As-tu déjà essayé quelque chose ?
Les 2 feuilles sont-elle dans le même classeur ?
m
0
l
8 Août 2016 16:23:52

oui en effet ils sont dans le même classeur. je vais t'envoyer 2 images faisant référence aux deux feuilles.
peut être que ça aiderait mieux à comprendre. Par contre j'ai jamais fait de VBA c'est pour cette raison que j'ai du mal à coder quelque chose.
m
0
l
8 Août 2016 16:35:26





m
0
l
a b L Programmation
8 Août 2016 16:46:27

Salut, je ne vois pas les données correspondant à "VARIABLE" dans mafeuillecoller ... c'est normal ? si c'est "les titres" genre "Sexe x age ..." correspond à "AGECOND_SEXE", alors faudras faire une table de convertion, parce que sinon je vois pas comment tu vas comparer ...
m
0
l
8 Août 2016 18:02:05

AH mince j'ai pas fait exprès je suis désolé.
http://www.casimages.com/i/160808061341166092.png.html
ce lien que je t'ai envoyé fait référence aux variable et modalité de mafeuillecoller.
les variables auxquelles on se refère se situe tout à fait à droite de la feuille ("mafeuillecoller").

m
0
l
a b L Programmation
8 Août 2016 18:25:05

ok on continue demain ;) 
m
0
l
8 Août 2016 18:31:47

ok ça marche merci pour le temps que vous m'avez accrodé.

m
0
l

Meilleure solution

a b L Programmation
9 Août 2016 09:13:53

Salut,

Voici un début qui recherche si pour chaque ligne de la colonne "W" de "mafeuillecoller" il existe une valeur identique dans la colonne A de ma "feuillecopie". Si oui on affiche un message.

Essaie de comprendre ce qui est fait et de le modifier pour tenir compte la colonne modalité également.

  1. Sub test2()
  2. Dim FeuilleDest As Worksheet
  3. Dim FeuilleSource As Worksheet
  4. Dim derLigneDest As Long
  5. Dim derLigneSrc As Long
  6. Dim i As Long
  7.  
  8. Set FeuilleDest = ActiveWorkbook.Sheets("mafeuillecoller")
  9. Set FeuilleSource = ActiveWorkbook.Sheets("mafeuillecopie")
  10.  
  11. derLigneDest = FeuilleDest.Cells(Rows.Count, "W").End(xlUp).Row
  12. derLigneSrc = FeuilleSource.Cells(Rows.Count, "A").End(xlUp).Row
  13. For i = 1 To derLigneDest
  14. For j = 1 To derLigneSrc
  15. If FeuilleDest.Cells(i, "W").Value = FeuilleSource.Cells(j, "A").Value Then
  16. MsgBox "Variable est identique"
  17. End If
  18. Next
  19. Next
  20.  
  21.  
  22. End Sub
partage
9 Août 2016 10:47:25

drul a dit :
Salut,

Voici un début qui recherche si pour chaque ligne de la colonne "W" de "mafeuillecoller" il existe une valeur identique dans la colonne A de ma "feuillecopie". Si oui on affiche un message.

Essaie de comprendre ce qui est fait et de le modifier pour tenir compte la colonne modalité également.

  1. Sub test2()
  2. Dim FeuilleDest As Worksheet
  3. Dim FeuilleSource As Worksheet
  4. Dim derLigneDest As Long
  5. Dim derLigneSrc As Long
  6. Dim i As Long
  7.  
  8. Set FeuilleDest = ActiveWorkbook.Sheets("mafeuillecoller")
  9. Set FeuilleSource = ActiveWorkbook.Sheets("mafeuillecopie")
  10.  
  11. derLigneDest = FeuilleDest.Cells(Rows.Count, "W").End(xlUp).Row
  12. derLigneSrc = FeuilleSource.Cells(Rows.Count, "A").End(xlUp).Row
  13. For i = 1 To derLigneDest
  14. For j = 1 To derLigneSrc
  15. If FeuilleDest.Cells(i, "W").Value = FeuilleSource.Cells(j, "A").Value Then
  16. MsgBox "Variable est identique"
  17. End If
  18. Next
  19. Next
  20.  
  21.  
  22. End Sub


ok ça marche je vais essayer de le faire .
m
0
l