Se connecter avec
S'enregistrer | Connectez-vous

Macro excel copier/coller deux listes de données variables dans feuille3

Dernière réponse : dans Programmation
Partagez

Bonsoir à tous;
Voilà, j'ai un souci avec ma macro que j'ai créé par "enregistement", sur deux listes ayant les memes critéres (données, intitulé de colonnes), soit par copier/coller en superposion dans feuille 3 aux fins de rélaliser un TCD sur feuille3. sa fonctionne bien quant il n y a pas de changement dans le nombre de lignes dans feuille1 ou feuille2, mais dès que le nbre de lignes change! elle fonctionne, mais hélas les résultats foirent!! j'ai bien compris le pb, mais je n'arrive pas à le surpasser! c clair je ne suis qu'un débutant:fou:  la macro ne reconnait pas ces limites dans feuille1 et 2, (les bornes de la copie et l'endroit ou elle doit coller dans feuille3)! j'espere que vous avez bien compris mon problème pour pouvoir m'aider à le solutionner? je vous remercie par avance pour votre partage..

PS: Désolé pour l'hortographe..

Salut,

Le problème est sans doute très simple, et sa solution aussi.
C'est l'explication qui est un peu compliquée...

Et si tu nous proposais le code de cette macro ?

(N'oublie pas d'utiliser la balise [code=VB] pour présenter le code, conformément au règlement !)
  • zeb a édité ce message

Bonsoir;
Merci pour ta réponse en tout cas...
Autrement, il s'agit de fusionner feuil1 et feuil2 en une seule dans feuil3, automatiquement et ce, quelque soit les variations dans feuil1 et 2 dans le nombre de lignes...
Bien évidement, les intitulés de colonnes sont identiques.
Cdt
Contenus similaires

Non, je ne ferai pas ton boulot à ta place (*).
Alors je t'invite à publier ton code, et on va le faire évoluer pour qu'il résolve ton problème.

A te lire.

------------


(*) Oui, je sais, je vais passer plus de temps et dépenser plus d'énergie à te dire comment faire, à te guider vers une solution plutôt qu'en te balançant une soluce toute faite. Mais je ne fonctionne pas comme ça. Tant pis...

J'ai bien lu les différents sujet que tu a fusionné avec la discussion et je te remercie..de la j'ai bien pigé ton excelente méthode de partage de savoir..chapeau bas.
Au fait, j'ai réussi à le faire avec un autre procédé:

  1. Sheets("Feuil3" ).[A1].CurrentRegion.Offset(1, 0).Clear
  2. For Each s In Array("Feuil1", "Feuil2" )
  3. Nlig = Sheets(s).[A65000].End(xlUp).Row - 1
  4. Ncol = Sheets(s).[A1].CurrentRegion.Columns.Count
  5. [A65000].End(xlUp).Offset(1, Ncol).Resize(Nlig, 1).Value = Sheets (s).Name
  6. [A65000].End(xlUp).Offset(1, 0).Resize(Nlig, Ncol).Value = _
  7. Sheets(s).[A2].Resize(Nlig, Ncol).Value
  8. Next s



En réalité, j'ai copié la boucle d'une macro que j'ai téléchargé..j'avoue que je ne comprends pas bien le language VB..
Par ailleurs, ma macro doit continuer le traitement à partir de la feuil3, pour réaliser un tableau croisé dynamique, et la je freine aussi sur:
- Comment selectionner la base dans feuil3, et ce quelque soit les variations dans le nombre de lignes?
En tout cas je vais mettre le code par suite:
  1. Sheets("Feuil3" ).Select
  2. ActiveWindow.SmallScroll Down:=-12
  3. Range("A1" ).Select
  4. ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ Feuil3!R1C1:R2119C5", version:=xlPivotTableVersion10).CreatePivotTable _
  5. TableDestination:="Feuil4!R1C1", TableName:="Tableau croisé dynamique1", _
  6. DefaultVersion:=xlPivotTableVersion10



Je pense que je dois intervenir a la ligne 4, sans fixer la limite??
cdt
  • Karim_1972 a édité ce message
  • Karim_1972 a édité ce message
  • Karim_1972 a édité ce message
  • Karim_1972 a édité ce message
  • Karim_1972 a édité ce message
  • Karim_1972 a édité ce message
  • Karim_1972 a édité ce message

Merci de me comprendre. :) 

Merci de respecter le règlement : toute pièce de code doit être présentée entre les balises [code] .. [/code] (En plus, je t'avais prévenu) :heink: 
Modifie ton message, stp.

C'est bien sûr Feuil3!R1C1:R2119C5 qu'il va falloir construire.
Et le code qu'il va falloir revoir un peu. Là, c'est très moche.

Veux-tu de l'aide pour mieux comprendre le VB ?

Pour la modification! tout simplement je n'arriva pas..
X'est trés moche! oui car je procede par enregistrement de macro et j'essaye de nettoyer les lignes inutiles..! débutant:kaola: 
j'ai bien compris que sur cette la Feuil3!R1C1:R2119C5 que je dois intervenir, mais en vain!
j'ai essayé:
  1. =DECALER(Feuil3!$A$1;;;NBVAL(Feuil3!$A:$A);NBVAL(Feuil3!$1:$1))
sa donne rien et meme: [: R" & ligne & "C5"]...
j'essaye toujours..
cdt
  • Karim_1972 a édité ce message
  • Karim_1972 a édité ce message

grrrrr ... Edite tes messages pour bien les présenter !!!
(C'est chiant, je suis à la fois le mieux placé pour t'aider en VB - sans fausse modestie - et le modérateur intransigeant de cette partie du forum)

Dès que t'as un code un peu bien présenté, je te le transforme sous tes yeux ébahis en quelque chose de si simple à lire puis à refaire que la solution pourrait te paraître évidente.

(bon, ça va être le week-end. Promis je ne t'abandonne pas)

Sur ton géni je m'en doute pas! j'ai vu déjà un bout dans ta méthode..Merci et je compte sur ton aide..
Miracle!! crois moi, j'ai réussi à le faire bien que petit!!..:bounce: 
  1. Sheets("Feuil3"].Select
  2. lignefin = Cells(1, 1).CurrentRegion.Rows.Count
  3. colfin = Cells(1, 1).CurrentRegion.Columns.Count
  4. lignedep = 1
  5. coldep = 1
  6. ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
  7. "Feuil3!R" & lignedep & "C" & coldep & ":R" & lignefin & "C" & colfin, Version:=xlPivotTableVersion10).CreatePivotTable _
  8. TableDestination:="Feuil4!R1C1", TableName:="Tableau croisé dynamique1", _
  9. DefaultVersion:=xlPivotTableVersion10
  10. Sheets("Feuil4" ).Select
  11. Cells(1, 1).Select



Sa marche nikel! et sans faute...
Imagine ! et dire je ne suis q'un économiste de formation:kaola: 
et la macro évolue..! je récapitule mon travail:
- Créer un classeur excel
- copier une table de données dans feuil1
- copier une autre table de données dans feuil2
- lancer la macro ===>Pour:
- mettre en forme la table de feuil1 (modification des réferences, convertir les données, créer d'autres colonnes, remplacer des caractères et renomer les intitulés de colonnes..)
- même chose pour feuil2, en tenant compte du nombre de lignes qui poura connaitre des variations (+ ou-)..
- copier feuil1 et feuil2 dans feuil3 par suite en superposion pour avoir une seul table de données fusionnée..
- lancer un TCD de la feuil3 sur feuil4 et mise en forme adéquate..
- copier le TCD de la feuil4 le coller (spécial) sur feuil5 et le mettre en forme..
- introduire une formule de controle des soldes de la premiere ligne à la derniere..
- rajouter une autre colonne a droite ayant comme intitulé observation.
- introduire une formule qui va rajouter une observation "Type" suivant les soldes de l'avant derniere colonne..

Voilà donc, a quoi je suis arrivé en ce moment bien que petit :sarcastic: ..mais vraiment! je te raconte pas mes sensations..
Je compte encore la faire évoluer de manière à créer un petit utilitaire sous excel, genre formulaire access..
Au fait, je viens de me rappeler d'un autre détail que je vais te poser:
- à la premiere étape( création du classer), je dois obligatoirement me positionner sur la feuil1 "A1" pour en suite lancer la macro, si non elle fonctionne pas! (elle ne retrouve pas ces repères !?) il doit y avoir un moyen d'automatiser le positionnement sur la feuil1???

Merci encore une fois..
Bon Week End.
  • Karim_1972 a édité ce message
  • Karim_1972 a édité ce message
  • Karim_1972 a édité ce message
  • Karim_1972 a édité ce message
  • Karim_1972 a édité ce message
  • Karim_1972 a édité ce message
  • Karim_1972 a édité ce message
  • Karim_1972 a édité ce message
  • Karim_1972 a édité ce message
  • Karim_1972 a édité ce message
  • Karim_1972 a édité ce message
  • Karim_1972 a édité ce message

Re..
Je viens de mettre à la première ligne de la macro:

  1. [Sheets("Feuil1").Select
  2. Range("A1" ).Select


Et Youpi..sa marche..:D 
  • Karim_1972 a édité ce message
  • Karim_1972 a édité ce message
  • Karim_1972 a édité ce message
  • Karim_1972 a édité ce message
  • Karim_1972 a édité ce message

Mais il le fait exprès ce type ! :fou:  :fou:  :fou:  :fou: 
Eh l'économiste, l'utilisation de ce site est soumis à l'acceptation d'un règlement qui stipule que tu dois présenter toute pièce de code entre les balises [code=VB] et [/code]. Pourquoi refuses-tu de le faire ?

________________


(En tout cas je suis content que tu ais trouvé tout seul. ;)  )

Relax professeur..:pt1cable: 
Je t'assure que je le fais pas exprès :no:  simplement j'ai pas réussi à le faire et dailleurs j'ai perdu bcps de temps pour ça et j'ai pas trouvé, comment?:pfff: 
Sache que pour les prochains messages sa sera fait..
J'espere que tu as passé un bon WE, moi je suis passé à une autre étape qui est:
- Création d'un formulaire qui va faciliter l'execution de ces macros...! et je trouve pas comment..!
Tes orientations seront les bienvenues.
A+
  • Karim_1972 a édité ce message

Salut,

Tu balances simplement ton code entre les balises sus-citées, soit [code=VB] et [/code]...
Rien de compliqué, hein !
  • Sylvain37 a édité ce message
  • Sylvain37 a édité ce message
  • Sylvain37 a édité ce message
  • Sylvain37 a édité ce message

Salut Karim,

T'as dérangé l'admin, c'est malin :/ 
Si tu as un autre problème, ouvre un autre sujet s'il te plaît.

Si tu prétends vouloir continuer à te faire aider ici, mets tes messages antérieurs correctement en forme, par principe.

Les bénévoles qui œuvrent ici n'ont comme rétribution que le respect qu'on leur accorde.
C'est pourquoi la politesse, l'orthographe et le respect des usages sont si importants à nos yeux.

Salut Zeb / Sylvain;
Désolé si je vous ai dérangé à propos! mais croyez-moi j'ai pas réussi à le faire, ni même pour modifier les antérieurs messages..

Promesse faite pour les prochains, dailleurs, j'ai plein d'autres questions mais j'essaye toujours de réussir ce:
  1. et
...
Entre les balises [code=VB], est-ce que je dois écrire=VB à chaque ligne??
Merci Chers professeurs:hello: 

M'enfin ?!?!?

Pour l'instant, je me demande si tu es complètement idiot ou si il y a un tel décalage de références entre nous qui fait que nous ne nous comprenons pas. Dans l'intérêt de cette conversation, je vais opter a priori pour la seconde, en espérant ne pas me tromper, ceci pour ne pas perdre mon temps !

--------------------------------------------------------------

Voici un morceau de code, bien présentée :

  1. #include <stdio.h>
  2.  
  3. main()
  4. {
  5. printf("hello world\n");
  6. return 0;
  7. }


Tu remarqueras que c'est du C et non pas du VB. C'est pour fixer les idées et varier les plaisirs ;) 

Pour "voir" comment je l'ai écris, clique sur le lien BBcode en bas à gauche de mon message. Ce que j'ai effectivement écris va t'apparaître.
Comprends-tu maintenant ce qu'on te demande ?
  • zeb a édité ce message
  • zeb a édité ce message
  • zeb a édité ce message
  • zeb a édité ce message

..Idiot :fou: c'est une insulte !
Merci professeur, de m'avoir souligné le respect parmis les règles du forum..

Merci encore une fois.
  • Karim_1972 a édité ce message
  • Karim_1972 a édité ce message
  • Karim_1972 a édité ce message
  • Karim_1972 a édité ce message
  • Karim_1972 a édité ce message

Re Bonsoir;
Si vous permettez, j'ai une autre question:

Dans le programme, j’ai introduit dans la colonne « H » une fonction qui test à la fois la colonne « B » et « G » et mets en conclusions dans « H » des observations (Texte)..
1- Reco
2- Test
3- Demo
En fonction de ces observations j’ai programmé une couleur sur toute la ligne allant de (B :H)
Par ailleurs, la formule renvoi des erreurs dans la collonne « H » #VALEUR! Si elle ne trouve rien dans la colonne « b » (le premier test), c’est normal..
J’ai pensé donc, de mettre une couleur de fond « Blanc »pour ces erreurs de formules afin de les dissimulées et parfaire l’affichage.
Le programme fonctionne à merveille sur mon PC sous Excel 2010, mais sur d’autres (sous Excel 2007 & 97) sa beug, il renvoi une erreur ‘438’.. ?? a la ligne 28 :.ThemeColor = xlThemeColorDark1
Ci-après le code:

  1. Range("H2").Select
  2. ActiveCell.FormulaR1C1 = _
  3. "=IF(SEARCH(""total"",C[-6], 1), IF(RC[-1]=0, ""Reco"", IF(RC[-1]>0, ""Test"",""A_Demo"")))"
  4. Do While Not (IsEmpty(ActiveCell))
  5. Cells(ActiveCell.Row, 8).Formula = "=IF(SEARCH(""total"",C[-6], 1), IF(RC[-1]=0, ""Reco"", IF(RC[-1]>0, ""Test"",""Demo"")))"
  6. Selection.Offset(1, 0).Select
  7. Loop
  8. Sheets("Feuil5").Select
  9. lig = Cells.Find("*", , xlFormulas, , xlByRows, xlPrevious).Row
  10. col = Cells.Find("*", , xlFormulas, , xlByColumns, xlPrevious).Row
  11. Dim derlig As Long
  12. derlig = Range("A65536").End(xlUp).Row
  13. Range(Cells(1, 2), Cells(derlig, 8)).Select
  14. With Selection
  15. .FormatConditions.Delete
  16. .FormatConditions.Add Type:=xlExpression, Formula1:="=$H1=""Reco"""
  17. .FormatConditions(1).Interior.ColorIndex = 15
  18. .FormatConditions.Add Type:=xlExpression, Formula1:="=$H1=""Test"""
  19. .FormatConditions(2).Interior.ColorIndex = 40
  20. .FormatConditions.Add Type:=xlExpression, Formula1:="=$H1=""Demo"""
  21. .FormatConditions(3).Interior.ColorIndex = 35
  22. End With
  23. Columns("H:H").Select
  24. Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
  25. "=ESTERREUR(H1)"
  26. Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
  27. With Selection.FormatConditions(1).Font
  28. .ThemeColor = xlThemeColorDark1
  29. .TintAndShade = 0
  30. End With
  31. Selection.FormatConditions(1).StopIfTrue = True




Est-ce que c’est un problème de version ou autre ??
Merci par avance.

  • Karim_1972 a édité ce message

Oui, Idiot est une insulte. C'est pourquoi je me permettais une alternative.
En constatant que tu as enfin compris, que tu as corrigé et ce simplement par respect, je m'aperçois que l'alternative qui consistait à ne pas te considérer comme idiot était la bonne. Je n'ai donc pas perdu mon temps ;) 

--------------------------------

Encore une fois, si tu as un autre problème, ouvre un autre sujet s'il te plaît.

(C'est histoire que le titre et la question correspondent. Rapport au fait qu'on recherche ici par titre, et que ton problème, une fois résolu, puisse servir à d'autres.)
  • zeb a édité ce message
Posez votre question