Lier deux onglets entre eux par une macro - VB/VBA/VBS - Programmation
Marsh Posté le 06-12-2009 à 13:47:27
Merci pou rretour rapide.
Je vais essayer d'êtr eplus explicite.
Mon point est le suivant:
1) j'ai une 1er onglet sur lequel j'ai un tableau excel avec 10 colonnes.
2) Je souhaite restituer une partie des ce dix colonnes dans un autre tableau. Dans cet autre tableau les colonnes sont présentées dans un ordre différent.
Il faut donc fair eun copier/coller à la main de chauqe colonne du tableau 1 pour aller les copier dans le tableau 2.
l'ideal serait de faire une macro qui le fasse automatiquement.
Après plusieurs tentatives je n'aboutis à rien.
Merci
Marsh Posté le 06-12-2009 à 13:59:16
Bonjour,
pas prudent de mettre son msn en direct. Si tu peux, tu effaces et tu le passe en MP à Laoo
Cordialement
Marsh Posté le 06-12-2009 à 15:42:01
seniorpapou a écrit : Bonjour, |
Il a raison, le Monsieur.
Bon, pour ton histoire de colonnes, j'ai une idée assez simple et rapide, je crois. Je te la donnes en message publique, car cela peut en intéresser d'autres.
L'idée est de faire un tri horizontal en page 1 correspondant à l'ordre de la page 2, de copier de la ligne 2 à la ligne 100 (par exple), de coller ces valeurs en page 2, puis de refaire un tri inverse pour retrouver l'ordre originel en page 1.
Je considère que l'ordre des colonnes est toujours le même en page 2
je te fais une illustration sur 4 col. à toi de l'adapter ensuite:
Code :
|
Est-ce clair?
Marsh Posté le 06-12-2009 à 15:43:23
Si c'ets clair je ne sais pas mais je le teste de suite et je te tiens au courant des que possible.
merci
Marsh Posté le 06-12-2009 à 16:16:32
Ton idée est très bonne.
j'ai besoin d'éclaircissement pour pouvoir étendre mon modèle à plus de quatre colonnes.
Que veut dire "Range("B1" ) = "4" " : cela veut dire que ma colonne Bi dans mon premier tableau deviendra ma colonne 4 dans mon deuxième tableau c'est bien ça?
Marsh Posté le 06-12-2009 à 16:30:33
tchauoui a écrit : Ton idée est très bonne. |
Oui
si tu préfères: Range("B1" ).value = 4
la macro inscrit simplement 4 en B1, puis met les col ds l'ordre 1,2,3,4. Donc la col B se trouve alors en 4° position (après le 1° tri, puis revient en 2° position après le second tri)
Marsh Posté le 06-12-2009 à 16:50:51
Très bien j'ai compris.
J'ai fait un tri hrozontal, je peux trier me spetits numéros par ordre croisants, décroissants. Mais il y aunqiuement mes petits numéros qui se trient et les colonnes correspondantes à chaque numéros dne suivent pas.
Comment puis-je faire pour changer le spositions de mes colonnes également. C'est à dire que je puisse faire mon copier/coller 'de la ligne 2 à 100 par ex)?
Marsh Posté le 06-12-2009 à 17:22:49
tchauoui a écrit : Très bien j'ai compris. |
??????????????????????????? Je ne comprends pas!
Si tu as 150 colonnes, tu remplis la 1° ligne avec les nombres voulus, c'est le plus gros travail, mais si tu ne changes pas d'ordre, il sera fait pour longtemps (prends 1 papier et 1 crayon! -et 1 gomme!!-)
la partie:
Range("A1:D100" ).Select
Selection.Sort Key1:=Range("A1" ), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight
s'écrit aussi:
Range("A1:Z100" ).Sort Key1:=Range("A1" ), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight
et si tu gardes les lignes de numéros (1, ou 1 et 2), tu peux faire un tri de ligne 2 à 100 avec ça:
Range("A2:D100" ).Sort Key1:=Range("A1" ), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight
tu commences à la lignes 2 et Header:=xlNo cela signifie qu'on ne tient pas compte des nombres de la ligne 1
C'est ce que tu voulais savoir?
Marsh Posté le 06-12-2009 à 17:46:41
PARDON!! pour Range("A2:D100" ) il faut mettre: Key1:=Range("A2" ) donc:
Range("A2:D100" ).Sort Key1:=Range("A2" ), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight
tu commences à la lignes 2 et Header:=xlNo cela signifie qu'on ne tient pas compte des nombres de la ligne 1
Je suis confus!
Marsh Posté le 06-12-2009 à 19:36:02
Bonsoir,
n'est-il pas possible, dans la façon dont tu procèdes, Laoo, de faire:
Une fois les numéros posés définitivement sur feuil1, ligne 1, copie de feuil1 sur feuil2, puis classement de feuil2?
Ainsi un reclassement sur la première feuille devient inutile?
Cordialement
Marsh Posté le 06-12-2009 à 20:22:08
seniorpapou a écrit : Bonsoir, |
Bonsoir, Monsieur
Caramba, Ma yé comprrend pas! ?
Si on fait tout ça, et si on met des numéros en feuil 1 (pas forcément définitifs, au choix de M Tchauoui), c'est pour obtenir le même ordre qu'en feuil 2, LE TEMPS DE LA COPIE, et revenir ensuite à l'ordre précédent, en supprimant éventuellement la ou les lignes de nombres. Si j'ai bien compris, les 2 ordres doivent coexister pour d'obscures raisons de présentations.
Sinon, tout serait réglé depuis longtemps.
Enfin il me semble?
Et à toi?
Bien à vous.
Marsh Posté le 06-12-2009 à 20:35:38
En défnitive, tu as pt-être raison. Moi, je l'avais vu autrement, mais c'est vrai qu'à relire, c'est pas évident.
C'est dommage, il peut pas nous répondre, il est sur sa console pendant que nous on extrapole pour lui!
Bien à toi.
Marsh Posté le 06-12-2009 à 21:24:02
Bonsoir,
en relisant mon post, je reconnais avoir été un peu sibyllin.
D’où ta réaction, je vais donc détailler à l’attention de Tchauoui, puisqu’il n’a pas encore lu :
Je propose d’aménager la méthode de Laoo de la façon suivante :
1) Mise en place, sur la feuil1, de la ligne 1 contenant les numéros proposés par Laoo
2) Copie intégrale de la feuil1 sur la feuil2 sans faire de classement préalable.
3) Classement de la feuil2.
Le seul intérêt est d’éviter de trier puis retrier la feuil1.
D’une autre façon, il doit être possible d’utiliser les fonctions excel classiques sans passer par du code :
Par exemple : si je veux avoir en colonne D de la feuil2 le contenu de la colonne A de la feuil1,
Il suffit de placer en cellule D1 de la feuil2 la formule suivante :
=SI(feuil1!A1 <> "" ;feuil1!A1 ; "" )
Et d’étendre la formule sur toute la colonne
Cela est plus long et plus fastidieux, mais on n’a pas besoin de connaître le code pour le faire.
Et les mises à jour sont instantanées
Bonne nuit
Marsh Posté le 06-12-2009 à 22:12:21
Citation : |
Marsh Posté le 07-12-2009 à 06:50:48
Bonjour,
je vois que tu supportes difficilement les propositions, même si elles sont constructives.
pour "le même pas sûr" j'avoue ne pas comprendre: les mises à jour sont instantanées: sûr! si tu n'es pas sûr il faut faire un essai..
j'espère que Tchauoui a résolu son pb et qu'il nous donnera des nouvelles.
très bonne journée.
Marsh Posté le 07-12-2009 à 08:23:11
Bonjour
Désolé de t'avoir donné cette impression, ça n'était en aucune façon ni mon sentiment, ni mon intention.
Elle me semblait seulement plus longue et ardue que les solutions proposées précédemment, juste pour recopier dix colonnes qui l'étaient probablement déjà depuis longtemps, dont au final nous n'étions pas sûr que T ait jamais besoin de les remettre à jour, en tous cas dans cette présentation. Ce qui avait été mon sentiment auparavant, mais que ton autre intervention avait infirmé, et dont je te rendais justice (et hommage) dans un précédent post:
Citation : |
Allez, tu sais bien comment nous réagissons tous, nous partons sur une idée, élaborons un plan, échafaudons une stratégie, envisageons, ou croyons envisager, toutes les possibilités et arcanes, puis livrons le fruit de notre intense réflexion en croyant, évidemment avoir trouvé le fin du fin. Las! Nous sommes tout surpris quand présentant notre bébé, on nous dit qu'il est pas le plus beau, qu'il a la tronche en biais, les oreilles décollées, le regard chassieux et les pattes de traviole!
C'est vrai pour moi, c'est vrai pour toi, et pour les autres itou. Ayons-en conscience, et ne nous en prenons pas le bec pour si peu. Ce serait tellement dommage de gâcher au réveil déjà ce beau début de journée.
En tous cas, si j'ai été maladroit, (cela m'arrive, parfois... ), je m'en excuse humblement, j'ai le plus grand respect pour ton savoir, infiniment supérieur à mes pauvres connaissances, et je suis sincère.
Je t'adresse mes sentiments les plus cordiaux.
Laoo
Bien à toi.
Marsh Posté le 07-12-2009 à 11:00:54
seniorpapou a écrit : Bonjour, |
Ben...? T'as changé ton message? le précédent était plus intéressant... Je me demandais d'ailleurs qu'est-ce que tu nous avais ramené de bon pour ce midi?
Imagine-toi qu'il vient de m'en arriver une bien bonne, enfin, si l'on peut dire! Mon clavier s'est mis à déconner à plein tube! le voyant verrnum s'allumait à contretemps, les touches maj était inopérantes, la souris sélectionnait à toute vibure sans pouvoir se décoller du bleu, et escape m'envoyait un pavé de contrôle des fonctions google, il y a m^me eu un moment où plus aucune touche ne fonctionnait, seulement un bruit creux en réponse, pas le doung sonore qui arrive parfois, non juste un petit bruit creux, mais qui ne se produit pas du tout en temps normal?!?
J'ai bien sûr débranché internet, mais ça a persisté, je ne pouvais même plus lancer Word, ni rien! Jusqu'à ce que je débranche le courant, puis reboot le système...
Curieux, non?
Imagine-toi, si je n'avais plus pu intervenir sur ce forum! tu n'aurais plus vu mes messages criards! ( )
Je suis sûr que ça t'aurait manqué?
Non? Un peu? Un tout p'tit peu?
Marsh Posté le 07-12-2009 à 11:47:55
bon, les Dupont/Dupond là, ça vous dirait d'arréter vos scènes de ménages ?
Marsh Posté le 07-12-2009 à 13:17:48
Bonjour la modération,
plus de PB, maintenant, du moins je l'espère, je sens même que l'on va devenir des copains!
Cordialement
Marsh Posté le 08-12-2009 à 07:35:02
22, V'là les cognes! Y a la la maison BourreMan qui se ramène!
à voir le nombre de lectures, j'avais plutôt l'impression que ça amusait pas mal la galerie, nos p'tites plaisanteries, en même temps que peut-être certains trouvaient leur compte dans nos contrib', et que le mélange est pas forcément négatif, me semblait-il...
Marsh Posté le 06-12-2009 à 11:02:15
Bonjour,
Dans le cadre de mon travail je cherche à lier deux feuilles Excel par une macro.
Dans mon premier onglet j'ai mon fichier source et dans le deuxième j'ai une mise en forme spécifique.
Après plusieurs tentatives je n'ai pas la solution, quelqu'un peut-il m'aider?
Le point est urgent et j'ai besoin de votre aide.
Merci d'avance.
Tchauoui