Intégration données fichier Exel semaine dans base de donnée Exel suivi annuel

J

Joëlle

Guest
Bien le bonjours à vous tous

Chaque semaine, je me retrouve avec un fichier source.XLS de donnée, qu’il me faut retranscrire dans un autre fichier destination .XLS. L’objectif macroniser cette Tâche.

Le fichier source chaque semaine est identique dans la forme. Mais de nouvelle référence et de nouvelles valeurs pour la semaine écoulée.

Fichier source:

( Nombre de ligne variable mais sans doublon, « Merci à Didier_mDF » )
Référence Libellé date Nombre Prix total
1200225292 GARNI 18/08/2004 2 4,65
1200265409 CAL 19/08/2004 4 164,28
1200230579 TU 20/08/2004 2 27,26

Le fichier de destination:

Extension XLS ( Modifiable au besoin, l’importance est d’avoir les données ci-desous)

Réf / Libellé / Colonne vide pour notation / PRIX Unitaire/ Prix Total depuis début d'année/ Nbre total depuis début d'année/ Sortie en Sem 01 / Sortie en Sem 02 / Sortie en Sem 03.........new colonne à chaque semaine ..........;

Je fait manuellement à ce jour:
- Prend première ligne du fichier source regarde.
Si la référence existe dans fichier destination j'y place le nombre de sortie pour cette semaine.

Si la référence n'est pas dans le fichier destination:
Je crée nouvelle ligne est rentre: Réf / Libellé / Calul et place le prix unitaire (= prix global de la semaine divisé par le nombre de sortie semaine / Nombre de sortie dans la bonne semaine / Prix total ( = sortie de toutes les semaine multiplié par total des sorties)

Long à expliquer, mais bien plus long chaque semaine à me palucher !

Je place les deux fichiers en pièce jointe dans un classeur plus explicite.

Faisable ou mission impossible sous exel ?

G Merci à vous et félicitations pour ce site.

Joëlle
 

Pièces jointes

  • Joellesuivi.zip
    4.3 KB · Affichages: 83
  • Joellesuivi.zip
    4.3 KB · Affichages: 88
  • Joellesuivi.zip
    4.3 KB · Affichages: 87
J

Joëlle

Guest
Bonsoir Jean Marie
Je n’arrive pas y croire, c’est du domaines de l’illusion c’est Magique.
Testée, re-testée c’est Géant, mieux que je ne l'espérai.

J’ai regardé la macro c’est du petit chinois pour My, mais ça fonctionne super top.
Des qu’il met donnée je déploie cela, même mieux fonction de l’aisance de ta macro, je me refait le tout depuis le début d’année.

Smatch et Bigs bisous à toi Jean Marie, tu dois surfer sur exel comme moi dans ma cuisine.

Je suis partie pour mis en application sous 15 jours, je re sur ce poste pour te confirmer que tous est OKI.

Encore un Grand Merci à toi J.M

Joëlle
 
L

loic38

Guest
bonjour joelle, et Jean Marie

j'avais vu ton fil sans réponse depuis plusieurs jours

c'est pourquoi je t'ai présenté ma solution

elle est nettement moins bonne que celle proposée par Jean Marie (plus de lignes d'isntructions et plus de temps de traitement)

comme j'y ai travaillé quelques heures je me suis permis de te l'envoyer

par ailleurs je n'avais pas compris que tu voulais faire un calcul du N° de
Semaine selon les dates de chaque ligne de Source, c'est pourquoi j'avais créé un inputbox pour rentrer le N° de la semaine

pour Jean Marie, j'ai étudié ta macro
elle est très performante
mais j'ai pas tout compris

A quoi servent les fonctions Evaluate, Match ?
tu utilises aussi des noms dont l'un sert à calculer dans Destination la première cellule de Inconnu, comment fais tu pour la recalculer à chq incorporation de nouveau code article ?

bref peux tu en dire un peu plus ?

merci
 
J

Joëlle

Guest
Bien le bonjour à tous

Merci à toi Loic38 d’avoir planché sur le sujet. Mais je conserve la macro de Jean Marie elle est ultra rapide et répond à mes attentes.

Je teste et retesté la macro de Jean Marie au job avant de l’officialiser dans mes bases.
Lors de l’exportation dans le fichier destination, la macro prend en compte les lignes en doublon et les additionnes ci-besoins, et positionnant le nombre de cas et les new Tarif dans les bonnes lignes et semaines.

Elle est Géante cette macro Jean Marie, je reposterai ultérieurement pour confirmer sa fiabilité.

Bigs bisous à vous deux .

Joëlle
 
J

Jean-Marie

Guest
Bonsoir

Je n'ai pas vu que Loïc demandait des explications.

La fonction Evaluate("match(" & .Cells(I, 1) & ",BaseRef,0)") calcul la fonction MATCH qui correspond à la fonction EQUIV() dans Excel (c'est équivalent en anglais). Cette fonction retourne le numéro d'index où se trouve la valeur dans un tableau.

Comme je l'avais mis en commentaire dans le code, Match peu renvoyer une erreur NA# (synonyme d'arrêt de la macro), au lieu de générer un ON ERROR GOTO (que je ne maîtrise pas), j'utilise une astuce, je place à la fin du tableau la valeur à chercher, cela supprime le NA#.

Mais comment connaître la fin du tableau sous VBA ?
Il y a le Range("A65536").end(xlUp).Row qui retourne le numéro de la ligne, ou utiliser un nom nommé, moi je l'ai déclaré INCONNU. Une référence de cellule nommé à l'avantage de suivre l'insertion de nouvelle ligne dans le code VBA.

Pour savoir si le code article doit être rajouté à la base, il suffit de contrôler si le numéro d'index correspond au numéro de la ligne de INCONNU (.row) et de faire l'insertion d'une nouvelle ligne.

Pour la définition de INCONNU ou de BaseRef, va dans Excel puis menu Insertion/Nom/définir.
- BaseRef à une formule pour calculer la déterminer la plage de cellules.
- INCONNU est une référence de cellule.

@+Jean-Marie
 
L

loic38

Guest
bonjour Jean Marie
merci de ses compléments d'info
je les digère (mettons deux semaines pour tout comprendre) et je vais tenter de les mettre en appli sur d'autres macros


dans tous les cas le pb de joelle m'a passionné
merci encore
 
J

Joëlle

Guest
Bonjours à vous tous.

J Marie pour les 54 semaines en voilà le motif :

Fonction des années il y à 52 ou 53 semaines décliné industriellement, cette année 53 semaines définie au sein de la société .
Le temps est souvent perturbé en fin d'année et des contres données de semaine X de l'année arrive. Ou les données de S1 pour nouvelle année doivent être imbriquées sur l’année passé.
Conclusion fonction des ordres et contres ordres, et événement. Je reste donc à jour en un clic de souris. Disons qu’elle n’est pas obligatoire mais est la semaine four tous !

En retour sur ta superbe macro j’ai un plantage, sur des données non prévu à la base :
Elle m’affiche Erreur d’exécution 13 Imcompatibilité de type.
Et surligne la ligne de macro : vIndexBase = Evaluate("match(" & .Cells(I, 1) & ",BaseRef,0)")
Le motif du plantage et que dans la base source, il y a des fois une référence avec des lettres ex : 5042DB5736. Là la macro ne les digère pas.

Voilà évolution du teste à ce jour.

Joëlle
 
J

Jean-Marie

Guest
Bonsoir Joëlle

Voici le code modifié pour la gestion Match d'un code alphanumérique et d'un code numérique.

Pour ce qui concerne ma question du 14/9, le code calcul la semaine en fonction de la date inscrite dans la colonne C, donc tu as pas besoin de la 54ème semaine.

@+Jean-Marie
 

Pièces jointes

  • Joellesuivi2.zip
    15.8 KB · Affichages: 82
J

Joëlle

Guest
Bien le bonjour à tous
J-Marie, je vais donc modifier les macros de mes bases comme suis !
Et chercher a supprimer la S54.

' L’ Ancienne version sans alphanumérique
vIndexBase = Evaluate("match(" & .Cells(I, 1) & ",BaseRef,0)")

' Modifier pour prise en compte version alphanumérique
If IsNumeric(.Cells(I, 1)) Then
vIndexBase = Evaluate("match(" & .Cells(I, 1) & ",BaseRef,0)")
Else
vIndexBase = Evaluate("match(" & Chr(34) & .Cells(I, 1) & Chr(34) & ",BaseRef,0)")
End If

Je rectifie cela dans mes 3 base de données et t’informe de l’évolution de cette méga marco.

Encor merci à toi Jean-Marie Bigs bises

Joëlle