|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Ingénieur qualité méthodes Inscription : novembre 2011 Messages : 12 ![]() |
Bonjour,
Tout d'abord je tiens à préciser que je suis nouveau sur le forum et veuillez m'excuser si je ne fais pas encore choses dans les formes. Voici mon problème : J'ai 2 fichiers xl, le premier ( XL1 ) est un fichier vierge que j'envoie à divers personnes il contient des information du type : numéro de dossier ; nom de la voiture; puissance; couleur. Le deuxième fichier est un fichier récepteur d'information: constitué des même catégories numéro de dossier ; nom de la voiture; puissance; couleur. Ce fichier va compliler l'ensemble des informations des fichiers XL1 selon le numéro de dossier. Tant que j'ai 1 fichier XL 1 tout va bien je me débrouille avec les fonctions INDEX et EQUIV mais vu que j'ouvre plusieur fois le fichier XL1 numéro 1 XL1 numéro 2 ect... là tout part en vrille et je n'ai les données que d'un seul fichier XL1 (numéro 1 par exemple) J'aimerais savoir comment faire pour rajouter un bouton/icone à cliquer sur chaque fichier XL1 pour envoyer les données sur le fichier XL2 et mettre les information à la bonne place. Je pense que je vais avoir besoin du VBA et surtout de vous ! Je vous joint un fichier explicatif Merci de toute l'aide que vous pourrez m'apporter
|
|
|
00
|
|
|
#2 | |||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Bonjour,
En supposant que toutes les feuilles s'appellent "Feuil1" et que les cellules "Numéro de dossier" soient en A1, attache la macro suivante à un commandbutton sur la feuille "Feuil1" de Xl2. La macro demande d'ouvrir l'un après l'autre les classeurs Xl1. Cliquer sur le bouton "Annuler" de la fenêtre d'ouverture de fichier : Code :
__________________
Cordialement. Daniel Citation:
|
|||
|
00
|
|
|
#3 | ||
|
Invité de passage
![]() Ingénieur qualité méthodes Inscription : novembre 2011 Messages : 12 ![]() |
Bonjour,
Merci de ta réponse rapide !! j'ai essayé de tester le code que tu m'as passer il me semble que c'est se que je souhaite. Mais je suis plus que novice dans le vba donc je galère un peu. J'ai trouvé un code pour créer un bouton que j'ai mis avec ton code: Code :
je pense que j'ai besoin d'acheter un livre sur les cours de VBA ! Si tu peux m'aider merci d'avance |
||
|
|
00
|
|
|
#4 | |
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
La création de ton bouton fonctionne. Dans la foulée, tu crées une macro BoutonTest_Click qui fait appel à une autre macro : Tester. Il faut que tu changes le nom de la macro :
et que tu le remplaces par :
__________________
Cordialement. Daniel Citation:
|
|
|
00
|
|
|
#5 |
|
Membre confirmé
![]() Denis MorenaTechnicien qualité et métrologie industrielle Inscription : avril 2011 Messages : 115 ![]() |
Bonjour,
regarde le fichier joint, ici je fais l'opération dans l'onglet feuil1 pour l'exemple mais c'est simple à adapter pour le faire entre différents classeurs Excel. Tiens moi au courant si c'est ce que tu cherche... ! Cordialement |
|
|
10
|
|
|
#6 |
|
Invité de passage
![]() Ingénieur qualité méthodes Inscription : novembre 2011 Messages : 12 ![]() |
Merci White Mibu c'est exactement ce que je souhaite !!!
Je vais essayer d'adapter ce que tu as fait à ce que je souhaite obtenir ! Si j'ai des problèmes je reposte Encore Merci !!
|
|
|
00
|
|
|
#7 |
|
Membre confirmé
![]() Denis MorenaTechnicien qualité et métrologie industrielle Inscription : avril 2011 Messages : 115 ![]() |
Ok n'hésite pas si tu rencontre des problèmes ! Je suis pas allé dans le détail parce qu'il me manqué certains détails, notamment si tu veux sélectionner le fichier cible en question ou à l'inverse si il est fixe, enfin bref tiens nous au courant
Cordialement |
|
|
10
|
|
|
#8 |
|
Invité de passage
![]() Ingénieur qualité méthodes Inscription : novembre 2011 Messages : 12 ![]() |
Je suis désolé de mon ignorance mais...
J'ai bien réussi à faire se que je souhaitais en cliquant sur le bouton et que les données aillent sur le fichier souhaité et à la place souhaitée ! Par contre je me suis posé une question : Et si on déplace le fichier cible ou si on change le nom du dossier ect... Donc si tu me dis que l'on peut cibler le fichier cible ça peut être pas mal.
|
|
|
00
|
|
|
#9 | |
|
Membre confirmé
![]() Denis MorenaTechnicien qualité et métrologie industrielle Inscription : avril 2011 Messages : 115 ![]() |
Bonjour,
Oui on peut ! Deux solutions : - Tu as plusieurs fichiers qui sont organisés de la même façon ? Code :
Cible = Application.GetOpenFilename("Excel Files (*.xls), *.xls") Donc avec ça tu va ouvrir directement le fichier en question, il faut mettre ça lors de l'ouverture du fichier de ta macro. - Deuxième solution, ton fichier change de place mais pas régulièrement ? Citation:
J'imagine que dans ton cas la première solution est la bonne. Dit moi si cela te convient... (Il est possible également de choisir ton fichier sans l'ouvrir et de récupérer le chemin et le nom du fichier dans des variables pour après manipuler ton fichier comme tu veux, mais je pense que tu as seulement besoin d'ouvrir ton fichier...) J'ai pris la première solution comme exemple, voir fichier joint. A toi d'adapter la macro, tiens moi au courant si tu rencontre un problème. Cordialement |
|
|
|
10
|
|
|
#10 | ||
|
Invité de passage
![]() Ingénieur qualité méthodes Inscription : novembre 2011 Messages : 12 ![]() |
![]() Je m'en retourne vers vous un peu dépité... Voilà j'ai terminé l'ensemble des fichiers pour lesquels je souhaitais utiliser le VBA. Après avoir testé avec succès le code VBA sur des fichiers test j'ai adapté les macros sur mes vrais fichiers... Et là ... c'est le drame !! ![]() Je me retrouve avec une... ***** d'erreur d'exécution 1004 ou Erreur 400 Je ne comprend absolument pas pourquoi. Je vous remet la macro en espérant qu'un personne avisé puisse m'aider. Malheureusement soumis à la confidentialité je ne peux pas transmettre les fichiers. Code :
|
||
|
|
00
|
|
|
#11 | ||
|
Membre confirmé
![]() Denis MorenaTechnicien qualité et métrologie industrielle Inscription : avril 2011 Messages : 115 ![]() |
Bonjour,
essai ça : Code :
Cordialement |
||
|
|
10
|
|
|
#12 | ||
|
Invité de passage
![]() Ingénieur qualité méthodes Inscription : novembre 2011 Messages : 12 ![]() |
Tu es génial !!!! ![]() Cepndant j'aurai une autre requette je te le demande directement ça m'évitera de revenir dans 3 jours en pleurant ![]() Tout marche bien mais il y a un hic ! ![]() Si le fichier "Suivi" est ouvert et si des éléments ont été rentré sans être sauvegardés alors la macro ferme violament le pauvre fichier sélectionné et on perd toutes les données. Y aurait-il la possibilité de rajouté dans la macro un élément du type : Code :
En gros si le fichier est déjà ouvert alors passer à la suite de la macro "next" au copier coller des cellules sinon aller chercher le fichier et continuer la suite normale de la macro. En tout cas merci de ton aide, qui est à la fois rapide et aussi efficasse ! Cordialement |
||
|
|
00
|
|
|
#13 | ||
|
Membre confirmé
![]() Denis MorenaTechnicien qualité et métrologie industrielle Inscription : avril 2011 Messages : 115 ![]() |
Je sais pas si j'ai saisi exactement...
Tu veux que si le fichier est déjà utilisé il te propose de sélectionner un autre fichier ? Parce que logiquement, tu ne veux pas continuer la macro si il est utilisé car il ne doit pas s'ouvrir... Essai ça mais je te garanti rien : Code :
![]() Je t'explique un peu le principe, tu ouvre le fichier en question en lecture seule pour ne pas supprimer les modifications apportées. - Si il y a erreur on ferme sans enregistré (lecture seule) et on revient à la sélection d'un autres fichier. - Si il n'y a pas d'erreur on peut continuer la macro ! Seulement si il n'y a pas d'erreur lors de l'ouverture d'un fichier déjà utilisé... la macro continuera quand même... C'est une proposition, je pense qu'il y a d'autres solutions ! Mais tu peux essayer ça, ça peut marcher... Sinon tiens moi au courant... Cordialement |
||
|
|
10
|
|
|
#14 |
|
Invité de passage
![]() Ingénieur qualité méthodes Inscription : novembre 2011 Messages : 12 ![]() |
Bonsoir,
Non c'est pas exactement se que je souhaite. je te refait la procédure : j'ouvre le fichier avec le bouton je le remplie. Je clique sur le bouton là normalement une boite de message souvre pour aller chercher le fichier que tu veux en l'occurence le fichier "suivi" ! C'est parfait ! Mais le petit plus serait de rajouter un truc qui fait que si je clique et que le fichier "suivi" est déjà ouvert alors je zape l'étape de : "la boite de message pour aller rechercher le fichier "suivi" ". Et ensuite dans les deux cas je continue la macro avec les copier coller ! Tu crois que c'est possible ? En tout cas merci c'est déjà géniale se que j'ai ! |
|
|
00
|
|
|
#15 | ||
|
Membre confirmé
![]() Denis MorenaTechnicien qualité et métrologie industrielle Inscription : avril 2011 Messages : 115 ![]() |
Bonjour,
oui je pense que c'est tout à fait possible Enfaite il était question d'un fichier ouvert sur ton propre ordinateur... dsl je travaille beaucoup sur des données importer en réseau donc j'étais parti sur une mauvaise piste ! Code :
Cordialement |
||
|
|
10
|
|
|
#16 | ||||
|
Invité de passage
![]() Ingénieur qualité méthodes Inscription : novembre 2011 Messages : 12 ![]() |
![]() GENIAL !!!!!!! ![]() C'est parfait !!! j'aimerais savoir un truc par contre. Je ne comprend pas le : Citation:
Citation:
De plus je viens de me rendre compte d'un truc si je lance l'enregistrement et qu'il ne trouve pas l'équivalent du : Citation:
On ne peut pas le limiter ? Mon tableau ne fait que 200 lignes ça serait balo qu'il cherche dans les 65536 lignes si au bout de 200 ça ne sert plus à rien de chercher. On ne peut rien faire avec le Citation:
Merci encore à mon avis ça sera la dernière demande ! |
||||
|
|
00
|
|
|
#17 | ||||
|
Membre confirmé
![]() Denis MorenaTechnicien qualité et métrologie industrielle Inscription : avril 2011 Messages : 115 ![]() |
Citation:
Donc ici Err.Number supérieur à 0 ça équivaux à il y a une erreur ! Citation:
Code :
Cordialement |
||||
|
|
00
|
|
|
#18 |
|
Invité de passage
![]() Ingénieur qualité méthodes Inscription : novembre 2011 Messages : 12 ![]() |
Je ne vois pas en quoi la dernière macro bloque la recherche à 200 lignes et non 65596 si il y a pas la valeur recherchée dans les 200 cellules
![]() Et merci pour les explications j'ai tout compris |
|
|
00
|
|
|
#19 | ||||
|
Membre confirmé
![]() Denis MorenaTechnicien qualité et métrologie industrielle Inscription : avril 2011 Messages : 115 ![]() |
Code :
J'aime pas fixer les choses, mais si tu veux les fixer à 200 rien de plus simple : Code :
|
||||
|
|
00
|
|
|
#20 | ||
|
Invité de passage
![]() Ingénieur qualité méthodes Inscription : novembre 2011 Messages : 12 ![]() |
YEAAaa !!!! ![]() ça marche nikel mais malheureusement pour toi j'ai fixer les cellules à 200 et non les cellules vides : je t'explique pourquoi il peux arriver que je soit obligé de sauter une ligne pour y revenir après et dans ce cas là, la recherche s'arréterait. Autre problème apparue... Le fichier "Tableau" est un fichier source qui va être renommé imédiatement après son ouverture (pour des raisons pratique de sauvegarde de données si il arrive quoi que se soit). Du coup j'ai une erreur d'application à cause du : Citation:
Citation:
Normalement si je ne m'abuse quand on clique sur le bouton qui se trouve sur le fichier "tableau" en feuille1 la feuille activé est Workbooks("tableau") et la feuille est worksheets("Feuil1"). Du coup on ne pourrait pas mettre ActiveWorksheets.Cells(6,11).Value ? J'ai test et ça ne marche pas .. ça serait trop simple on dirait. Tu peux encore m'aider ? Merci beaucoup ! |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com