Lier deux onglets entre eux par une macro

Lier deux onglets entre eux par une macro - VB/VBA/VBS - Programmation

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
 
 

Reply

Marsh Posté le 06-12-2009 à 11:02:15   

Reply

Marsh Posté le 06-12-2009 à 11:38:17    

Cépaclair...

Reply

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


Message édité par tchauoui le 06-12-2009 à 15:42:18
Reply

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

Reply

Marsh Posté le 06-12-2009 à 15:42:01    

seniorpapou a écrit :

Bonjour,
pas prudent de mettre son msn en direct. Si tu peux, tu effaces


 
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 :
  1. Sub tri_horizon()
  2.         Sheets(1).Select
  3.      Range("A1" ).Select
  4. 'ajoute 1 ligne page 1:
  5.         Sheets(1).Range("A1" ).EntireRow.Insert
  6.     Range("A1" )= "1"
  7.     Range("B1" ) = "4"
  8.     Range("C1" )= "3"
  9.     Range("D1" ) = "2"
  10.     Range("A1:D100" ).Select
  11.     Selection.Sort Key1:=Range("A1" ), Order1:=xlAscending, Header:=xlYes, _
  12.                 OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight
  13.         Range("A2:D100" ).Copy
  14.        
  15.     Sheets(2).Select
  16.     Range("A1" ).Select
  17.     ActiveSheet.Paste
  18.    
  19.     Application.CutCopyMode = False
  20.      Sheets(1).Select
  21.     Range("A1" )= "1"
  22.     Range("B1" ) = "4"
  23.     Range("C1" )= "3"
  24.     Range("D1" ) = "2"
  25.     Selection.Sort Key1:=Range("A1" ), Order1:=xlAscending, Header:=xlyes, _
  26.                 OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight
  27.    
  28. 'selon que tu gardes la ligne 1 telle quelle, ou que tu la supprimes:
  29.         Range("A1" ).EntireRow.Delete
  30. End Sub


 
Est-ce clair?
 


---------------
Olympus OM-D  EM-5 + 14-42
Reply

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

Reply

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?
 

Reply

Marsh Posté le 06-12-2009 à 16:30:33    

tchauoui a écrit :

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?
 


 
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)


---------------
Olympus OM-D  EM-5 + 14-42
Reply

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)?
 

Reply

Marsh Posté le 06-12-2009 à 17:22:49    

tchauoui a écrit :

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)?
 


 
 
???????????????????????????   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!!-)   :cry:  :cry:  :D  
 
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?


---------------
Olympus OM-D  EM-5 + 14-42
Reply

Marsh Posté le 06-12-2009 à 17:22:49   

Reply

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!   :jap:  :jap:  :jap:

Reply

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

Reply

Marsh Posté le 06-12-2009 à 20:22:08    

seniorpapou a écrit :

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


 
 
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.
 
 
 
 


---------------
Olympus OM-D  EM-5 + 14-42
Reply

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!      :fou:  :fou:  
 
 
Bien à toi.
 
 


---------------
Olympus OM-D  EM-5 + 14-42
Reply

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


Message édité par seniorpapou le 06-12-2009 à 21:25:48
Reply

Marsh Posté le 06-12-2009 à 22:12:21    

Citation :


 
 en relisant mon post, je reconnais avoir été un peu sibyllin.                                       Naaaaann
 
Je propose d’aménager la méthode de Laoo de la façon suivante :          Je suppose, et j'espère, que tout est fait et plié depuis longtemps!!!
 
 
 
 
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,                                                    une paille! c pas kcépluslong, céksé booooooooocoup plus long, et booooooooooooooocoup plus chhh fastidieux!!
 
Et les mises à jour sont instantanées      même pas sûr qu'il y en ait, finalement?
 
 
Bonne nuit                               Kali Nicta
 
   



---------------
Olympus OM-D  EM-5 + 14-42
Reply

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.


Message édité par seniorpapou le 07-12-2009 à 06:53:26
Reply

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 :


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!    

 
 
   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...   :whistle: ),  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.  
 
 
 
 
 


---------------
Olympus OM-D  EM-5 + 14-42
Reply

Marsh Posté le 07-12-2009 à 08:56:21    

Bonjour,
pas de PB
Cordialement

Reply

Marsh Posté le 07-12-2009 à 11:00:54    

seniorpapou a écrit :

Bonjour,
pas de PB
Cordialement


 
 
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!         ( :kaola:  :lol:  :lol: )
 
Je suis sûr que ça t'aurait manqué?
 
Non?  Un peu?  Un tout p'tit peu?
 
 
 
 

Reply

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 ? [:kiki]

Reply

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

Reply

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...
 


---------------
Olympus OM-D  EM-5 + 14-42
Reply

Marsh Posté le 11-12-2009 à 15:42:35    

Ok merci pour vos aides en tout cas
A+

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed