Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2901 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Lier deux onglets entre eux par une macro

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Lier deux onglets entre eux par une macro

n°1947643
tchauoui
Posté le 06-12-2009 à 11:02:15  profilanswer
 

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
 
 

mood
Publicité
Posté le 06-12-2009 à 11:02:15  profilanswer
 

n°1947656
Laoo
Posté le 06-12-2009 à 11:38:17  profilanswer
 

Cépaclair...

n°1947676
tchauoui
Posté le 06-12-2009 à 13:47:27  profilanswer
 

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
n°1947677
seniorpapo​u
Posté le 06-12-2009 à 13:59:16  profilanswer
 

Bonjour,
pas prudent de mettre son msn en direct. Si tu peux, tu effaces et tu le passe en MP à Laoo
Cordialement

n°1947687
Laoo
Posté le 06-12-2009 à 15:42:01  profilanswer
 

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
n°1947688
tchauoui
Posté le 06-12-2009 à 15:43:23  profilanswer
 

Si c'ets clair je ne sais pas mais je le teste de suite et je te tiens au courant des que possible.
merci

n°1947697
tchauoui
Posté le 06-12-2009 à 16:16:32  profilanswer
 

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?
 

n°1947700
Laoo
Posté le 06-12-2009 à 16:30:33  profilanswer
 

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
n°1947703
tchauoui
Posté le 06-12-2009 à 16:50:51  profilanswer
 

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

n°1947709
Laoo
Posté le 06-12-2009 à 17:22:49  profilanswer
 

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
mood
Publicité
Posté le 06-12-2009 à 17:22:49  profilanswer
 

n°1947714
Laoo
Posté le 06-12-2009 à 17:46:41  profilanswer
 

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:

n°1947723
seniorpapo​u
Posté le 06-12-2009 à 19:36:02  profilanswer
 

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

n°1947725
Laoo
Posté le 06-12-2009 à 20:22:08  profilanswer
 

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
n°1947727
Laoo
Posté le 06-12-2009 à 20:35:38  profilanswer
 


 
 
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
n°1947740
seniorpapo​u
Posté le 06-12-2009 à 21:24:02  profilanswer
 

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
n°1947745
Laoo
Posté le 06-12-2009 à 22:12:21  profilanswer
 

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
n°1947775
seniorpapo​u
Posté le 07-12-2009 à 06:50:48  profilanswer
 

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
n°1947788
Laoo
Posté le 07-12-2009 à 08:23:11  profilanswer
 


 
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
n°1947797
seniorpapo​u
Posté le 07-12-2009 à 08:56:21  profilanswer
 

Bonjour,
pas de PB
Cordialement

n°1947829
Laoo
Posté le 07-12-2009 à 11:00:54  profilanswer
 

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?
 
 
 
 

n°1947844
Modération
Posté le 07-12-2009 à 11:47:55  answer
 

bon, les Dupont/Dupond là, ça vous dirait d'arréter vos scènes de ménages ? [:kiki]

n°1947880
seniorpapo​u
Posté le 07-12-2009 à 13:17:48  profilanswer
 

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

n°1948205
Laoo
Posté le 08-12-2009 à 07:35:02  profilanswer
 


 
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
n°1949518
tchauoui
Posté le 11-12-2009 à 15:42:35  profilanswer
 

Ok merci pour vos aides en tout cas
A+

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Lier deux onglets entre eux par une macro

 

Sujets relatifs
[MACRO EXCEL] créer une macro insérer des feuilles[wxWidgets] La macro WXDLL_ENTRY_FUNCTION
macro creation autormatique combobox VB[SAS] Problème SYMGET dans macro
[VBA] A la rescousse d'un noob en galère sur une macroMacro excel
[VBA] Exécution macro dans un autre classeurmacro excel 2007
Macro excel pour colorer les cellules vides[VBA-E] Problème pour macro collage spécial
Plus de sujets relatifs à : Lier deux onglets entre eux par une macro


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR