Comment automatiser une extraction de données

Bonjour

je suis nouveau sur ce forum et viens pour vous soumettre mon soucis qui est peut être trivial je ne sais pas, mais je m'en sors pas trop malgré mes recherches autres

J'ai une feuille dans un fichier excel qui comprend des données (qui sont des articles). Les besoins pratiques elle a ete vite faite et je la mets a jour de temps en temps, mais en gros elle se présente de la façon suivante sur 4 colonnes

une categorie

designation aricle 1 | prix unitaire

designation aricle 2 | prix unitaire

la 4eme colonne ne sert plus à grand chose il y avait des quantités. Lorsqu'on passe à une autre catégorie, une ligne de cellules blanches sépare. Afin d'avoir à peu près tous les articles en visuels à l’écran à un moment j'ai rempli des groupes de 4 colonnes aussi en largeur de la feuille, pour que le visuel permette de voir mieux , il y a un très gras vertical qui sépare les cellules

dans cette première feuille, je ne supprime rien, mais des fois j'ajoute des articles en insérant 4 cellules adjacentes au bon endroit, parfois aussi, je modifie les prix des articles, en remplaçant la valeur par la nouvelle, et je colore le texte de la cellule à la main (Rouge, si le nouveau prix est plus élevé que celui que j'efface, vert si il est plus petit)

A partir de cette feuille, de temps en temps (genre une fois par mois), je réalise des copier/coller de certains articles dans une autre feuille du classeur vierge (disons que j'efface la vielle avant de commencer), et je le fais à la main, avec la précision donc que si la catégorie a pas encore ete copiée je la copie et ensuite j'ajoute les articles choisis de sorte que l'ordre des catégories est conservée de haut vers le bas puis de gauche à droite (mais pas forcement au même endroit sur la feuille, je limite les blancs, l'ordre des articles dans une même catégorie n'est pas conservée forcement non plus). Autre précision dans cette nouvelle feuille que je crée, je modifie parfois les quantités (d'où la 4eme colonne dans la première feuille) ce qui modifie dans ce cas la colonne prix (par ailleurs dans cette seconde feuille figure par exemple en A1 (la somme des colonnes prix)

je voudrais, mais je sais pas trop comment m'y prendre, avec VBA, ou une macro ou autre chose, essayer d'automatiser un peu tout ca, du style je vais dans ma feuille 1 je clique sur (par exemple, la cellule contenant la désignation d'un article), apparaitrait par exemple un (ou plusieurs) bouton a proximité (ou ailleurs, ou un bouton fixe dans la barre de bouton) et en cliquant sur ce bouton, il me demande la quantité et en validant, il fait tout seul ce que je fais à la main (création et insertion de la catégorie, ajout de l'article de la quantité et du prix lié a la quantité et j'enchaine en cliquant comme bon me semble sur les articles de mon choix de sorte qu'une fois fini, j'ai bien un extrait de la première feuille dans la seconde et une présentation similaire à la première feuille (les catégories s'enchainant dans le même ordre d'abord du haut vers le bas (et lorsqu'on arrive en bas d'une page A4 paysage), on part dans un groupe de 4 colonnes vers la droite)

Apres je n'ai rien contre le fait qu'il faille rajouter des choses dans la feuille 1, si ca peut faciliter le travail, ou se servir de feuilles annexes, j'y comprends pas grand chose aux langages objets, par contre, je comprends un minimum de programmation quand même

donc merci a ceux qui pourront m'aider a réaliser quelque chose comme ca ou d'approchant quitte a ce qu'ensuite, je doive re rentrer tous les articles à la place d'exemples qui auraient servi pour réaliser le travail

Bonjour,

Un classeur en PJ serait surement souhaitable avec des exemples, histoire de comprendre ce qui est demandé

50exemple.zip (4.34 Ko)

voila un exemple

comme je l'ai expliqué, je souhaiterais automatiser la création de la liste 2 à partir de la liste 1

si tel qu'est la liste 2 actuellement je clique sur chat dans la liste 1 ca produirait quelque chose du genre

1) affichage (ou autre) d'un bouton

2) je clique sur le bouton

3) il me demande la quantité de chat

4) je saisi 3

5) il regarde si dans liste 2 la catégorie animaux domestique existe déjà ou non

  • -- si oui (ce qui est le cas pour chat) il insère après canari (en ligne 8 ), 4 cellules (la première est vide), la seconde y a écrit chat la 3eme 3 et dans la 4eme la valeur de 3*50
  • -- si non (par exemple si j'avais cliqué sur lit) il ajoute (avant jouets) un premier groupe de 4 cellules, avec la première qui comprend Meubles (en gras,italic,souligné, si possible) et dans le second groupe de 4 cellules lit, la quantité saisie et le prix comme pour le cas de chat (un 3eme groupe de 4 cellules vides pour créer une séparation avant jouets)

Est ce que c'est plus clair? est ce que c'est possible d'avoir quelque chose de plus moins de ce genre? après si ca simplifie beaucoup on peut éventuellement envisager de tout empiler dans les 4 premières colonnes, je pourrai toujours ré arranger la page en faisant des couper/coller à la main avant d'imprimer

PS: ce qui serait bien dans la liste 2, c'est que le bas soit borné par la taille d'un papier A4 paysage comme je le précisais (ça évite d'avoir a tout décaler à la main ensuite dans la liste 2 pour pouvoir imprimer correctement (je sais pas trop à quelle ligne cela tombe, peut etre autour de 45), on peut aussi ajouter des informations dans la liste 1 si ca simplifie du moment que ça alourdi pas trop le visuel (je pense entre autre à un numéro de catégorie qui pourrait être en blanc sur blanc dans la cellule vide devant les articles)

Personne n'a d'idée pour faire ce que je souhaiterais obtenir?

Bonjour,

Je ne comprends pas trop :

L'onglet "Liste1" semble être la base de donnée. Si oui, il faudrait à mon avis revoir sa structure selon les règles énoncées dans ce forum, par exemple

,

L'onglet "Liste2" serait'il une commande, facture, stock?

En bref je souhaiterais connaître les "tenants" et "aboutissants" de ton projet

@+

ok, je te réponds d'ici ce soir, quand j'aurai un petit moment

mais oui la liste 2 est une commande la liste 1 un stock

Je veux pouvoir piocher à la guise des groupes de 4 cellules contiguës (qui correspondent à un article dans un stock, dans la liste 1), saisir une quantité (vis a vis du packaging correspondant au prix unitaire) et recopier ce même groupe de 4 cellules dans la liste 2 (la commande) avec le bon calcul du prix total par article et total

Si j'utilise les règles que tu m'as annoncées, je suppose que ma liste 1 deviendrait

A B C D

1 | categorie | désignation | quantité/prix unit. | Prix unitaire

2 | animaux sauv. | Zèbre Bleu | 1 | 2.02

3 | animaux sauv. | Lion (3 pattes) | 1 | 2.04

et comme ca sur 4 colonnes, jusqu'à épuisement des articles. Au final exit la présentation sur plusieurs colonnes

maintenant si on fixe l'impression papier A4 paysage (par exemple ligne 45), on peut voir ma liste 1 comme celle souhaitée (avec des modulo 45 pour la hauteur et des modulo 4 pour la largeur)

- la règle qui n'est pas respectée c'est la première colonne, puisque les catégories ne sont pas écrites à chaque ligne, mais une seule fois en tete de groupe (l'écrire à chaque fois alourdi le visuel, par contre, si c'est utile entre autre pour faciliter les insertions dans la liste 2, on peut envisager dans la liste 1 de rajouter un numéro pour la catégorie, c'est en plus le numéro d'ordre des catégories (qui sont fixes, il y en a 8 dans l'exemple de travail, 31 de prévues en tout)

ainsi animaux sauvage porte le 1 (et tous ses articles l'ont devant si on veut; la catégorie jouets le 8 et ces chiffres sont en colonnes A,E,I,M)

- ensuite il y a des lignes vides qui indiquent les changements de catégorie pour alléger le visuel et qu'il soit plus facile de s'y repairer

est ce vraiment utile de les enlever étant donné que le choix de l'article à copier dans la liste 2 se fait à la main

La liste 2 est construite vue que c'est la commande, donc dans mon esprit, l'ordre du choix des articles manuellement est aléatoire

par exemple je peux décider de commander en premier un jouet (tricycle de Julie) puis un animal sauvage (zebre bleu) - dans ce cas

il y a insertion:

a) vérifier si liste 2 a déjà en colonne (A, E,I ,M) Animaux sauvages

b) si oui : on insert un groupe de 4 cellules (avec déplacement vers le bas) dans liste 2 avant la ligne blanche (située juste au dessus de la catégorie ayant le chiffre supérieur le plus proche de celui de animaux sauvages en cooccurrence 1 et dans le cas présent on trouverait que ce chiffre le plus proche serait 8 pour jouet) et on copie ce qui a été sélectionné dans liste 1 (sauf la 3eme cellule du groupe de 4 qui est remplacée par la quantité saisie, et la 4eme doit faire le calcul prix unitaire * quantité)

si non: la différence avec le oui est qu'il faut faire une première insertion pour mettre en première colonne, le nom de la catégorie, suivie d'une seconde qui fait comme le oui

ce qui se simplifie bien sûr en ne faisant dans le conditionnel que la partie spécifique au non et ensuite on fait systématiquement la partie commune

c) on revient au visuel de la liste 1

l'ordre des articles dans une même catégorie, n'a pas d'importance ce qui doit facilité d’insérer l'article en fin de groupe (ce qui m'importe principalement c'est d'obtenir en liste 2 les catégories dans le même ordre et automatiser l'insertion à partir du moment ou la quantité saisie est validée)

Il y a le cas particulier de l'article déjà en liste 2 (on fait selon ce qui arrange le mieux, soit il est modifié par la nouvelle quantité saisie, soit on ajoute la nouvelle quantité saisie à celle déjà indiquée en liste 2)

Si c'est trop compliqué de créer la liste 2 sur plusieurs groupes de 4 colonnes pour respecter l'impression papier, on peut le faire sur 1 seule peut être pour commencer

je ne suis pas contre la modification de la liste 1 (stock), mais j'aurais souhaité rester malgré tout le plus proche du visuel proposé afin de ne pas trop alourdir

Est ce plus clair?

sinon quelles seraient tes questions qui clarifieraient, ou les propositions de modifications de liste 1

bonjour tout le monde

j'aurais souhaité un petit peu d'aide pour mon problème. Je comprends pas trop non plus ce qui pourrait ne pas être trop clair dans ce que je souhaite faire. Dans l'attente j'ai commencé d'écrire ces quelques lignes dans l'idée que ca pourrait peut etre faire la copie

Dim L,C,ligne,colonne As Integer, prem,dern As Byte

With Sheets("Feuil1")

L = .Range(.Cells.row)

C= .Range(.Cells.colomn)

' faire apparaitre un bouton commande.

' si clic demander quantité Q.

' modifier valeur C+1 par Q .

' modifier valeur C+2 par Qx(C+2).

' chercher où copier.

' copier dans feuille 2.

.Range(.Cells(L, C-1), .Cells(L, C+2)).Copy _

Sheets("Feuil2").Range(ligne,colonne)

End With

comme je l'ai dit j'y comprends pas grand chose à VBA, donc il y a surement des erreurs de syntaxe ou bien on peut peut être faire mieux et/ou autrement, j'en sais rien vu que je patauge

après je ne sais pas non plus comment après le clic sur la case L,C, je peux faire apparaitre le bouton dont le clic déclencherait ce code ensuite

je ne trouve pas les commandes pour le moment pour proposer après le clic de saisir la quantité et restera ensuite la recherche dans la feuille 2 pour déterminer ligne et colonne pour ensuite insérer ce qu'il faut (soit la catégorie + les 4 cellules copiées, soit les 4 cellules copiées)

si certains d'entre vous peuvent m'aider un peu, je les en remercie par avance

bon WE a vous tous

Bonjour,

je ne peux qu'aller dans le sens de Bernard22; ta liste ne répond pas du tout à ce que l'on appelle une "base de données" avec tout ce qui est écrit dans son post; je pense que tu devrais refaire ton fichier dans ce sens pour commencer sur de bonnes bases.

la règle qui n'est pas respectée c'est la première colonne, puisque les catégories ne sont pas écrites à chaque ligne, mais une seule fois en tete de groupe l'écrire à chaque fois alourdi le visuel

Il faut pourtant !, tu auras par la suite des TCD qui donneront un résultat avec une entête de catégories et la suite comme tu veux

P.

Rechercher des sujets similaires à "comment automatiser extraction donnees"