|
| titoubi | Posté le 08/04/2008 @ 19:07 |
Petit astucien
71 Messages
| bonjour à tous, Voilà, une personne m'envoie tous les mois un fichier "\global" avec en colonne B les reférences des articles en stock et en colonne D les prix associés et ce sur plusieurs feuilles. Dans un nouveau fichier "\mon fichier" (au format complètement different) je sélectionne des articles dont le stock est à 0, je souhaiterai en fonction de la réf de l'article (en colonne K de mon fichier) récupérer le prix dans le fichier précédent(rechercher dans plusieurs feuilles) et le placer en face de l'article dans la colonne M de mon fichier. Je souhaiterai exécuter cette macro en semi-manuel C.A.D. en sélectionnant l'article voulu dans mon fichier et en appuyant sur CTRL + une autre touche, pour re chercher uniquement le prix associé à l'article. De plus, pour une autre application mais le même besoin cette fois en automatique pour tous les articles de la page en cliquant sur un bouton de contrôle. Je suis sûr que ces macros ont déjà été réalisées. Merci d'avance
|
| |
| |
| Publicité |
|
|
| Bérylion | Posté le 08/04/2008 à 19:49 |
Astucien
2278 Messages
| Message original par titoubi
Je suis sûr que ces macros ont déjà été réalisées.

si on les avait, on pourrait ptet comprendre un peu plus !!
tu donnes aucun détail, pas facile comprendre ce que tu veux faire...
avec des exemples "en dur" (Cjoint.com), possible qu'on cerne un peu mieux.

|
| |
|
| titoubi | Posté le 08/04/2008 à 20:44 |
Petit astucien
71 Messages
| Bonjour Bérylion Voici un exmple, comme je l'ai expliquer avant , les 2 premières feuilles de cet exemple ne font pas partie du même classeur que la troisième feuille mais bon pour l'exemple je les ai mises dans le même classeur (précise moi comment ouvrir un autre classeur, après le mode de recherchepour doit être le même...) Il faut donc rechercher le prix des articles de la feuille 3 dans les feuilles 1 ou 2 (ou + si nécessires) et les coller dans la colonne "prix unitaire" de la feuille 3. Les 2 solutions sont nécessaires (par article et/ou pour tous les articles d'un coups). J'espère être un peu plus clair ! ! ! A+ |
| |
|
| Bérylion | Posté le 09/04/2008 à 00:18 |
Astucien
2278 Messages
| Salut pour la "totale", ça pourrait ressembler à un truc du genre : VBA Sub test() Application.ScreenUpdating = False For i = 4 To Selection.SpecialCells(xlCellTypeLastCell).Row If Cells(i, 1).Value <> "" Then ref = Cells(i, 1).Value Workbooks("global").Activate For j% = 1 To Sheets.Count With Sheets(j).Range("b:b") Set adrs = .Find(what:=ref, LookIn:=xlValues) If Not adrs Is Nothing Then prix = Range(adrs.Address).Offset(0, 3).Value Exit For End If End With Next End If ThisWorkbook.Activate Cells(i, 5).Value = prix Next Application.ScreenUpdating = True End Sub
la macro est à coller dans un module standard du classeur "monfichier" les 2 classeurs doivent être ouverts pour que ça tourne...
pour le "cas par cas", c'est jouable, yaka adapter le code ci dessus à activecell, sans la 1ere boucle.
je jetterai un zoeil demain, après le 
paske la maintenant : 
|
| |
|
| ferrand | Posté le 09/04/2008 à 01:13 |
Astucien
1600 Messages
| Salut, Une contribution pour la 1ère question: voir les fichiers MonFichier et Global NB: les colonnes de tes modèles ne correspondent pas à tes spécifications initiales... il suffira d'ajuster les références sur tes bonnes colonnes. Bérylion. Modifié par ferrand le 09/04/2008 01:15 |
| |
|
| titoubi | Posté le 09/04/2008 à 07:47 |
Petit astucien
71 Messages
| Merci Messieurs, je vais essayer de les appliquer aujourd'hui au boulot. Pour Bérylion: comment déclencher ta macro "totale" (et oui je suis novice dans VBA! ! ! ) et pour le cas par cas "activcell sans la première boucle" ? ? ? ? merci de développer un peu, pour mon apprentissage tes solutions m'intéressent. Pour Ferrand: tu proposes de mettre à jour le prix en cliquant sur la cellule, c'est beaucoup plus simple et je garde l'idée mais si je voulais utiliser une combinaison de touche pour lancer la macro comment l'écrire ? (bon à savoir pour la prochaine fois !) Et pourquoi mettre une condition sur la quantité car elle représente la quantité à commander pas la quantité restante en stock. Ceci dit je garde également pour une autre application . Peux-tu développer également ta macro pour ma formation? Pour tous les deux : pouvez-vous déclancher la macro si une croix est placée dans la première cellule de la ligne d'un article (ex: une croix en A8=recherche du prix pour l'article en B8) ? Merci encore à tous les deux et si vous pouviez commenter (REM, je croix!) les lignes de commande pour me former un peu et je comprendrais mieux pour l'adapter à mes fichiers  Encore merci pour votre dispo, bravo! |
| |
|
| ferrand | Posté le 09/04/2008 à 11:28 |
Astucien
1600 Messages
| Bonjour, Voilà : http://cjoint.com/?ejlxmLnJ5d Pour aller plus vite, j'ai mis les commentaires dans le module, les commentaires précèdent les instructions qu'ils commentent. Ouf, je crois bien que j'ai jamais mis autant de commentaires sur une macro (en général, j'en mets pas ou juste des repères) mais c'est pour que tu puisses interpréter pas à pas l'exécution... J'ai ajouté à la suite mes réponses à tes deux questions. Le plus simple pour moi (mais il y a toujours d'autres solutions, à toi de voir avec l'ensemble des suggestions qui te seront fournies) Bonne journée |
| |
|
| Bérylion | Posté le 09/04/2008 à 11:36 |
Astucien
2278 Messages
|  on partage les taches !! je repasse entre 12h et 13h... |
| |
|
| ferrand | Posté le 09/04/2008 à 16:48 |
Astucien
1600 Messages
|  ... et c'était tout à fait spontané  |
| |
|
| Bérylion | Posté le 09/04/2008 à 17:21 |
Astucien
2278 Messages
| ferrand a écrit :
... et c'était tout à fait spontané 
j'en doute pas une seconde !
au passage j'ai repompé ton classeur en ajoutant "la totale" :
double-clic (ou simple) en cellule E3 et ça lance le bouzin...
|
| |
|
| ferrand | Posté le 09/04/2008 à 17:43 |
Astucien
1600 Messages
| Et tu l'as mis où ?  |
| |
|
| Bérylion | Posté le 09/04/2008 à 20:43 |
Astucien
2278 Messages
| ferrand a écrit :
Et tu l'as mis où ? 
bin je l'ai laissé au boulot pardi !!
 


|
| |
|
| Bérylion | Posté le 10/04/2008 à 12:14 |
Astucien
2278 Messages
| |
| |
|
| ferrand | Posté le 10/04/2008 à 13:10 |
Astucien
1600 Messages
| , pas le temps de regarder de près mais bogue au démarrage : j'ai dû remplacer Workbooks("global") par Workbooks("Global.xls") et là ça fonctionnait.
Une petite remarque : ça affiche aussi des prix quand il n'y a pas de référence. Faudrait peut-être bloquer la chose ? Bon pour le moment, je me débats avec mes menus qui refusent de rester organisés selon mes préférences. A plus et bonne journée. |
| |
|
| Bérylion | Posté le 10/04/2008 à 14:45 |
Astucien
2278 Messages
| ferrand a écrit :
, pas le temps de regarder de près mais bogue au démarrage : j'ai dû remplacer Workbooks("global") par Workbooks("Global.xls") et là ça fonctionnait.
Une petite remarque : ça affiche aussi des prix quand il n'y a pas de référence. Faudrait peut-être bloquer la chose ? Bon pour le moment, je me débats avec mes menus qui refusent de rester organisés selon mes préférences. A plus et bonne journée.

pas trop le tps non plus.
en principe, avec "If Cells(i, 1).Value <> "" Then", ça devrait pas afficher quoi que ce soit si yapa de ref ?! ptet un pb d'adressage...
@+
|
| |
|
| titoubi | Posté le 10/04/2008 à 21:57 |
Petit astucien
71 Messages
| Alors là, bravo! Super en plus avec les explications, Bérylion si tu pouvais en faire autant, encore deux petites questions - Pour chercher dans plusieurs classeurs suffit-il de copier/coller le même prog bout à bout en changeant le nom du classeur à chaque fois ou existe-t-il une commande plus courte ? - Enfin pour la solution des touches de raccourci vous avez quelque chose ? je ne sais pas comment attribuer une combinaison de touches à un module !!!! Bérylion la totale est excellent, mais pour les cellules sans ref, t'as pu résoudre le pb? et pourquoi doit-on imposer une recherche en ("B:B"), ne peut-on pas chercher dans toutes les colonnes? Au cas ou la configue du classeur évolurait (décalage de colonne) il n'y aurait pas besoins de changer les coordonnées des colonnes!!! Sinon Ferrand, j'ai essayer la modif en cherchant le pris lorsqu'une croix est placée en colonne A et... ça fonctionne Je vous remercie encore et j'attends vos solutions avec impatience. Merci A+  |
| |
|
| Bérylion | Posté le 10/04/2008 à 23:05 |
Astucien
2278 Messages
| Salut
pour le raccourci clavier, le plus simple est encore de le faire en "manuel" :
outils/macro-> macros...
choisis ta macro, clique sur options, et fais toi plaisir !!
je jetterai un oeil demain sur mon usine à gaz. (tu peux remettre un ex. de "global.xls" sur cjoint ?)
++
B.
|
| |
|
| ferrand | Posté le 11/04/2008 à 10:22 |
Astucien
1600 Messages
| Salut, Si tu tiens absolument à une touche de raccourci, tu vas dans Outils>Macros, tu sélectionnes la macro (son nom) et tu cliques sur Options : tu seras invité à saisir une lettre pour ton raccourci clavier qui sera de la forme: Ctrl+? Désolé Bérylion, je viens juste de voir que tu avais dit la même chose en cherchant la question suivante... Pour chercher dans plusieurs classeurs : pas la peine de reproduire plusieurs fois... il faut mettre la partie répétitive dans une boucle qui balaie les classeurs (diverse options selon que les classeurs sont censés être ouverts ou que la proc. doit les ouvrir s'ils ne le sont pas et/ou éventuellement les fermer après usage)... Pour les cellules sans référence, c'est pas vraiment un problème, il suffit d'un test... Par contre si tu veux une macro qui fonctionne dans des classeurs à structure variable, même si sous certaines conditions (que les variations possibles soient exhaustivement connues à l'avance) ce n'est pas impossible à réaliser tu risques fort d'avoir pas mal de soucis avec à l'usage. Je me souviens (dans mon jeune âge) avoir fait une macro pour laquelle (sans aller jusqu'à ce que tu as l'air de demander) j'ai toujours eu quelques incertitudes... elle fonctionnait très bien et très vite... mais qu'est-ce que j'ai passé comme temps à vérifier à la main que le résultat produit était bien complet et conforme à ce qu'on attendait . Comme en tout domaine rien ne vaut une structure stable (sans rigidité excessive ) pour sa tranquillité d'esprit . Bonne journée. |
| |
|
| Bérylion | Posté le 11/04/2008 à 10:33 |
Astucien
2278 Messages
| ferrand a écrit :
Une petite remarque : ça affiche aussi des prix quand il n'y a pas de référence. Faudrait peut-être bloquer la chose ?
 bin oui, forcément, je vide pas la variable à chaque tour... bon, c'est recrifié : http://cjoint.com/?elkF2QcC2g |
| |
|
| Bérylion | Posté le 11/04/2008 à 13:20 |
Astucien
2278 Messages
| titoubi a écrit :
pourquoi doit-on imposer une recherche en ("B:B"), ne peut-on pas chercher dans toutes les colonnes?
pour la simple et bonne raison que le petit nain dans la machine ne fait pas la différence entre 75 et 75,00€
on peut essayer de lui espliker, faut que je creuse... titoubi a écrit :
Au cas ou la configue du classeur évolurait (décalage de colonne) il n'y aurait pas besoins de changer les coordonnées des colonnes!!!
c'est pas viable comme système, puisqu'il faut intéragir sur le classeur dans lequel s'effectue la recherche. le plus évident serait de nommer des plages dans "global.xls" : on peut toujours bricoler sur les différences de colonnes mais faut être sûr que le "global" aura toujours ces plages nommées... |
| |
|
| titoubi | Posté le 19/04/2008 à 19:47 |
Petit astucien
71 Messages
| |
| |
|
|
| Haut de la page |