Base de donnée

re,

Voici un 1er jet , voir si je suis bien en phase ?

https://www.excel-pratique.com/~files/doc/Jackall_essai1.zip

Questions :

  • que deviennent les fichiers de départ (G200......), une fois enregistrés ?
  • pourquoi ne pas copier ces feuilles directement dans le fichier de la BDD, en les renommant "GOOD" et "REJECT", puis , une fois enregistrés , on supprime ces 2 feuilles
dans le fichier de la BDD ,?

Il me semble que cela serait + simple !

à te lire

Claude.

Bonour à tous le forum ,

Tout dabord je te remerci de te pencher sur mon problème Dubois, ensuite la solution que tu ma deja proposer est trés trés bien vraiment, elle me montre deja des choses que je voulais voir mais que je n'arrivais pas à faire ^^

Pour répondre a tes question:

- que deviennent les fichiers de départ (G200......), une fois enregistrés ?

Les fichiers donc sont ouvert par le programme, sont copier dans les feuilles GOOD et REJECT et sont ensuite refermer pour m'éviter de faire une mauvaise manipulation sur les originaux.

- pourquoi ne pas copier ces feuilles directement dans le fichier de la BDD, en les renommant "GOOD" et "REJECT", puis , une fois enregistrés , on supprime ces 2 feuilles

dans le fichier de la BDD ,?

Je ne les copient pas dans la base de donnée parceque c'est deux feuilles la me servent seulement de support pour pouvoir faire mes calculs, les seuls données que je doit mettre dans ma BDD sont les résultats au calculs que j'effectue.

Maintenant en reprennant ton fichier, ta solution ma beaucoup plus, mais lorsque je veut ouvrir un autre fichier GOOD/REJECT, que je fais mes calculs, et que je clique sur le bouton que tu a mis en place, il me copie les résulats dans la BDD mais pas le nom de fichier, donc je ne comprend pas trop comment tu a fait pour le placer dans la feuille GOOD (parceque je ne peut pas le rajouter à la main, il faut que se soit automatique, ce programme est déstiné pour des personnes ne sachant pas utiliser un ordinateur (sans être méchant), donc il faut qu'il soit le plus simple et le plus autonome possible).

Voila en te remerciant beaucoup.

Amicalement.

Bonjour à tous,

C'est ce que je te disais, il faut récupérer en amont le nom du fichier !

Je te propose ce code :(à l'ouverture du fichier source G200........)

Il mettra en B1 le nom du fichier.

Code à placer dans le fichier source.(ThysWorkbook_open)

Sub NomFich()
        With Range("b1")
            .FormulaR1C1 = "=NOMCLASSEUR()"
            .Copy
            .PasteSpecial Paste:=xlValues
               Application.CutCopyMode = False
        End With
End Sub

pour simplifier, tu peux remplacer la macro : Sub moy_good() par :

Sub formules() 'remplace Sub moy_good()
   Sheets("STAT_GOOD").Activate
    Range("C17").Select '1ère ligne 17
    Selection.FormulaArray = _
        "=SUMIF(GOOD!C[-1],RC[-1],GOOD!C[1])/COUNTIF(GOOD!C[-1],RC[-1])"
    Range("D17").Select
    Selection.FormulaArray = _
        "=SUMIF(GOOD!C[-2],RC[-2],GOOD!C[2])/COUNTIF(GOOD!C[-2],RC[-2])"
    Range("E17").Select
    Selection.FormulaArray = _
        "=SUMIF(GOOD!C[-3],RC[-3],GOOD!C[3])/COUNTIF(GOOD!C[-3],RC[-3])"
    Range("F17").Select
    Selection.FormulaArray = _
        "=SUMIF(GOOD!C[-4],RC[-4],GOOD!C[4])/COUNTIF(GOOD!C[-4],RC[-4])"
    Range("G17").Select
    Selection.FormulaArray = _
        "=SUMIF(GOOD!C[-5],RC[-5],GOOD!C[6])/COUNTIF(GOOD!C[-5],RC[-5])"

          Range("c17:g17").Select
    Selection.AutoFill Destination:=Range("c17:g25") 'lignes 18 à 25
End Sub

teste et dis-moi

bonne journée

Claude.

re,

Voila je viens de tester tes propositions, la simplification du code de la macro Sub moy_good() fonctionne à merveille, mais le code à placer dans le fichier source "ThisWorkbook" ne fonctionne pas, il ne me marque pas le nom du fichier ouvert en B1.

Bonne journée à toi aussi

Amicalement.

re,

je viens de tester et çà marche, vérifie et enregistre avant de fermer.

Private Sub Workbook_Open()
        With Range("b1")
            .FormulaR1C1 = "=NOMCLASSEUR()"
            .Copy
            .PasteSpecial Paste:=xlValues
               Application.CutCopyMode = False
        End With
End Sub

ou

Private Sub Workbook_Open()
 call NomFich
End Sub

Claude.

re,

Je suis vraiment désolé, mais sa ne veut toujours pas fonctionner, j'ai pourtant sauvegarder, fermer le programme, et rouvert, mais sa ne va toujours pas.

Je ne pense pas me tromper dans le code, j'ai suivi à la lettre ce que tu m'a dit de faire.

J'ai copié le code :

Private Sub Workbook_Open() 
        With Range("b1") 
            .FormulaR1C1 = "=NOMCLASSEUR()" 
            .Copy 
            .PasteSpecial Paste:=xlValues 
               Application.CutCopyMode = False 
        End With 
End Sub

dans la feuille "ThisWorkbook".

La vraiment je ne comprend pas ce qui ne va pas.

Amicalement.

re,

envoie le fichier source ou tu a mis le code, que je vérifie quelque chose !

Claude.

re,

Ce qui ne vas pas , c'est que tes fichiers source sont au format "texte"

- je l'ai enregistrer sous format normal, mais les valeurs ne sont plus exploitables,

elles se convertissent en texte !

Il faudrait revoir ton modèle de fichier source, et le mettre en format normal (type de fichier :

"Classeur Microsoft Excel")

Je m'étonnais aussi que ces fichier ne faisait que 3Ko ! (23Ko en format normal)

Tu ne m'a pas répondu, que deviennent ces fichiers une fois enregistrés dans BDD.

on t'ils encore une utilité ?

Voilà le Hic !

Claude.

re,

En fait, je récupère les fichiers sources sur un ligne de production, et donc comme tu me la dit ils sont au fichier texte. Je ne peut pas intervenir sur le format des fichiers sources au départ, je suis obliger de les récupéré comme ils me viennent.

Les fichiers une fois utilisés ils sont garder quand même sur le disque dur du pc d'acceuil de la ligne de production.

Ils peuvent encore avoir une utilité si on veut pouvoir vérifier les données pour diverses raison, c'est pour cela que pour ne pas les endomager, je les copies dans mon classeur, et je les refermes.

Amicalement.

re,

jackall, Il faut donc que la ligne de production fasse le nécessaire pour insérer dans son

fichier cette INFO. (c'est pas le bout du monde !)

Sinon, te reste plus qu'à saisir le nom manuellement (source d'erreurs)

- je peux te rajouter dans la macro un InputBox pour saisir le nom. mais c'est dommage !

dis-moi.

Claude.

re,

Je vais voir pour faire ce changement à la ligne de production, les faires craquer pour qu'ils fassent la modification ^^

Sinon je voudrais bien voir quand même ce que sa donne avec un inputbox.

En tout cas je tiens vraiment à te remercier pour ton aide et ta patience surtout ^^

Amicalement.

re,

J'ai ouvert un post pour essayer de récupérer le nom du fichier autrement .

en attendant, voici la version InputBox

https://www.excel-pratique.com/~files/doc/projet_stage2_essai2.xls

Je t'ai mis les macros à jour.

Claude.

re,

Je te remerci vraiment pour ce que tu fait, c'est vraiment trés trés sympa de ta part.

Je vais regarder le code que tu a placé dans la version que tu a mis en ligne .

Un grand merci

Amicalement.

re,

J'ai eu une réponse de felix,

je l'ai mise en place à la fin de la macro "Récup_données"

provisoirement, le nom de fichier devrait apparaitre en D12 de la feuille "STAT_GOOD"

il faudrait que tu teste en renommant ce fichier comme à l'origine. (fait une sauvegarde de

ton fichier d'origine sur un disk, on ne sait jamais !)

- j'ai supprimé le bouton (macro incorporée dans "calcul total"

https://www.excel-pratique.com/~files/doc/projet_stage2_essai3.xls

à te lire

Claude.

re,

J'ai une bonne nouvelle, les tests sont trés trés concluant. ^^

Il y avait juste une variable qui n'été pas déclaré, mais en quelque touche de clavier sa a été réparé.

Désormé tout fonctionne trés bien il n'y a plus de problème.

Je te remercie vraiment beaucoup Dubois ainsi que Felix qui a aussi participé. ^^

Je vais maintenant me pencher sur d'autre probleme que je pourrais avoir par la suite. ^^

A bientôt.

Amicalement .

Jackall.

Rechercher des sujets similaires à "base donnee"