XL 2019 Récupérer des données et les inscrire jour après jour des premières cellules vides de colonne

Cédric L

XLDnaute Nouveau
Bonjour,
J'avance à tout petit pas sur un projet que je vous explique ci-après :
Je récupère chaque jour des données par mail au format CSV (il s'agit de vente de produits)
Je transforme se données pour qu'elle soit mise sous forme de tableau dans un premier onglet d'Excel.
Ensuite je voudrais qu'en appuyant sur un bouton, les quantités de produits identiques vendus s'additionnent sur une colonne (en face de leur nom) sur un autre onglet. Exemple : j'ai vendu 5 Orangina à 2€ , je souhaite qu'en face de mon tableau Orangina soit marqué le total de la vente 10 €.
Ca s'est fait. Mais à l'enregistrement suivant je n'arrive pas à décaler d'une case. Je réussi juste à additionner dans la même case.
Je joins mon fichier pour plus de clarté.
Si vous avez la solution je suis preneur.
Merci
Cédric

Voici la partie de mon code qui fonctionne mais qui ne me convient pas entièrement :

Dim Derlig&, Val As Currency
Derlig = Feuil2.Range("A" & Rows.Count).End(xlUp).Row
Derlig1 = Feuil1.Range("C" & Rows.Count).End(xlUp).Row

For j = 1 To Derlig1
For i = 1 To Derlig
If Feuil2.Range("A" & i).Value = Feuil1.Range("C" & j).Value Then
Feuil2.Range("E" & i).Value = Feuil1.Range("E" & j).Value + Feuil2.Range("E" & i).Value
 

Pièces jointes

  • Ventes Buvette.xlsm
    28.4 KB · Affichages: 12

Phil69970

XLDnaute Barbatruc
Re

Perso je pense qu'il faut :
1- une référence dans la feuille 1 (calculs) avec par exemple en N1 ==>Jx (x étant le numéro du jour)
Ou bien
2- si tu travailles tous les jours y compris samedi/dimanche et jours fériés on peut s'en passer
Ou bien
3-Si on part du principe que tu fais tes imports chaque soir c'est à dire que le 4 octobre tu veux importé dans les cases correspondant à J4 on peut se servir de la date mais il ne faut jamais oublié un soir et on peut se servir de la date système

A toi de nous dire tes préférences sachant que les pistes (1,2 et 3) ne sont pas du tout pareil dans le code

@Phil69970
 

chris

XLDnaute Barbatruc
Bonjour à tous

Une autre solution consiste à stocker les csv dans un dossier et les traiter par PowerQuery (intégré à Excel) puis 2 TCD

J'ai bricolé 2 csv supplémentaires dans l'exemple

Modifier le chemin du dossier contenant les csv du mois (cellule en jaune) puis Données, Actualiser tout
 

Pièces jointes

  • ventes-buvette28.zip
    30.1 KB · Affichages: 5

Cédric L

XLDnaute Nouveau
Bonjour,
Et bien si...Je travaille tous les jours même le dimanche ! o_O
En fait il s'agit d'un programme pour la saison estivale et du coup pas de repos.
Ca m'a l'air quand même très bien.
Je regarde, je fais plein de test, je met en forme... Puis je reviendrai faire un retour :)
Merci beaucoup
 

Cédric L

XLDnaute Nouveau
Bonjour chris,
Merci beaucoup pour ta proposition.
Je dois avouer que je préfère celle de Phil69970. Peut-être parce que je ne connais pas du tout PowerQuery.
Mais aussi parce que cela me fais une étape supplémentaire : enregistrer ma commande dans un fichier Excel puis aller dans l'autre fichier Excel pour mettre à jour. Alors que dans la première solution je copie-colle mes commandes du jour en A1, je clique et c'est fini.

D'ailleurs @Phil6997, Pourrais tu me montrer ta solution 2 ?

Cédric
 

Phil69970

XLDnaute Barbatruc
Bonjour @Cédric L , @chris

Comme tu l'as demandé :
D'ailleurs @Phil6997, Pourrais tu me montrer ta solution 2 ?

Dans cette solution on ne regarde pas la date mais on recherche la 1ere colonne vide après la colonne D, des qu'on l'a trouvé on copie les valeurs et les formules dans la colonne vide.
Donc les valeurs et les formules s'incrémentent sur la droite au fur et à mesure.

*Merci de ton retour

@Phil69970
 

Pièces jointes

  • Ventes Buvette V6.xlsm
    36.5 KB · Affichages: 5

Cédric L

XLDnaute Nouveau
Merci Mille fois.
C'est super !

Bon maintenant je vais étudier la solution de chris... Parce que c'est tellement sympa de m'aider.

@chris tu dis que "la synthèse s'enrichit au fil du mois simplement en actualisant..." ça d'accord

Mais tu écris aussi "tu utilises directement les csv sans avoir à les ouvrir". Peux tu m'expliquer la démarche.

Moi je reçois ça par mail :
000140,2021-10-05-18-28,Eau_1/2_L,Boissons,1
000140,2021-10-05-18-28,Eau_1L,Boissons,2
000140,2021-10-05-18-28,Eau_citronnée,Boissons,1.5
000140,2021-10-05-18-28,Eau_Pétillante,Boissons,1.5
000140,2021-10-05-18-28,Coca,Boissons,2
000140,2021-10-05-18-28,Coca_0,Boissons,2
000140,2021-10-05-18-28,Ice_Tea,Boissons,2
000140,2021-10-05-18-28,Oasis,Boissons,2
000140,2021-10-05-18-28,Orangina,Boissons,2
000140,2021-10-05-18-28,Perrier,Boissons,2
000140,2021-10-05-18-28,Scheppes_agrumes,Boissons,2
000140,2021-10-05-18-28,Café,Boissons,1.5
000140,2021-10-05-18-28,Thé,Boissons,1.5
000141,05-10-02021-18-42,Magnum_Double_Caramel,Glaces,3
000141,05-10-02021-18-42,Magnum_Chocolat_Blanc,Glaces,3
000141,05-10-02021-18-42,Magnum_Billion,Glaces,3
000141,05-10-02021-18-42,Magnum_Amande,Glaces,3
000141,05-10-02021-18-42,Magnum_Caramel_Amande,Glaces,3
000141,05-10-02021-18-42,Solero_Exotic,Glaces,2.8
000141,05-10-02021-18-42,Solero_Citron,Glaces,2.8
...

Je pensais devoir créer un fichier Excel pour copier le listing ci-dessus. Enregistrer ce fichier en le nommant sous une certaine forme. Puis mettre à jour le fichier Excel que tu m'as envoyé.

Je me trompe ?
 

chris

XLDnaute Barbatruc
Bonjour

Si c'est dans le corps d'un mail ce n'est pas un csv mais un copier coller, donc l'énoncé de départ est fausse ou imprécise

Si c'est un fichier csv en pièce jointe, il faut l'enregistrer dans le dossier du mois concerné...
 

Cédric L

XLDnaute Nouveau
Effectivement, c'est mon énoncé qui est faux... désolé.

Encore une question pour m'éviter la crise de nerf :
Dans mon fichier j'ai mis sous forme de tableau automatique.
Il y en a deux. Pour le deuxième pas de problème lorsqu'une colonne se crée la mise en forme du tableau suit.
Par contre pour le premier rien n'y fait. La solution est peut-être simple mais je ne la trouve pas.
Auriez-vous une idée.
Je met le fichier en pièce jointe...
 

Pièces jointes

  • Ventes Buvette V14.xlsm
    70 KB · Affichages: 2

chris

XLDnaute Barbatruc
Dans un tableau structuré les formules doivent être identiques de la 1ère à la dernière ligne sinon il y a aura des problèmes... (Tableau du haut)

De plus (tableau du bas)
  • mélanger dans une même colonne des Catégories et des Produits est une mauvaise pratique.
  • travailler avec des numéros de lignes qui risquent de devoir évoluer au fil du temps parce qu'on ne vendra plus la crêpe truc mais qu'on vendra une nouvelle boisson l'est également
Une structure doit toujours être pensée en fonction des évolutions possibles et probables.

Pa railleurs le code est pensé pour des plages, et n'utilise pas les propriétés des ListObjects...
 

Phil69970

XLDnaute Barbatruc
Bonjour @Cédric L ,@chris

@Cédric L
J'ai regarder ton nouveau fichier et je l'ai légèrement modifié.
Remarque :
-Il est inutile de mettre 1000 lignes au fichier vu qu'il s'adapte automatiquement à la longueur de la feuille 1
(C'est à cela que sert les variables c'est de s’affranchir du nombre de ligne de ton fichier)
-J'ai pas compris pourquoi tu veux mettre la cellule A1 en bleu (j'ai rationalisé le code il y a pas besoin de mettre 9 lignes quand 1 seule suffit)

@Phil69970
 

Pièces jointes

  • Ventes Buvette V15.xlsm
    62.6 KB · Affichages: 6

Cédric L

XLDnaute Nouveau
Merci @Phil69970,
Effectivement c'est mieux 👍
Maintenant le message de @chris m'a bien piqué...
J'ai commencé à regarder les tutos de PowerQuery. Je me suis rendu compte que l'un de mes deux ordi étaient en Excel 2013 et l'autre 2019. Je passe les deux sur 2019 (comme ça PowerQuery est intégré) et je me penche sur sa solution. J'ai cru comprendre que la source de données pouvait aussi être le copier-coller des produits vendu dans la journée.
Je ne peux pas nier qu'en matière d'Excel et VBA je rame pas mal et je bricole beaucoup alors...
Affaire à suivre ;)
 

Discussions similaires

Réponses
7
Affichages
292
Réponses
6
Affichages
202
Réponses
16
Affichages
981