Recherche de données sur plusieurs feuilles

Bonsoir à tous,

Je me permet de vous demander votre aide sur un projet personnel qui est en passe de devenir professionnel, donc cela commence à devenir important pour moi

Je vais essayer d'expliquer du mieux possible :

Cadre : on parle d'une micro-ferme maraîchère en hors sol. Plusieurs paramètres sont à surveiller et une compta rigoureuse est nécessaire. D'où la tentative de me créer un outils pratique et complet, qui plus est, me permettra de boucler le businessplan/étude de marcher.


Soucis 1 (il n'y en a que deux )

Mon thermomètre, qui surveille les paramètres de T° min/max - T° actuelle - Hygro relative min/max - Hygro relative actuelle, me permet d'extraire les données par une fichier .csv. Lors de l'export, par BT avec le téléphone directement à côté du thermo, je peux choisir le début/fin d'export niveau date, la périodicité.

Du coup ça me fait un fichier horodaté différent à chaque relevé (comme dans la pièce jointe "serre maison.....").

Hors, c'est là que je bug , j'aimerais exploiter ce fichier pour remplir les données de la seconde pièce jointe "V3". Alors j'arrive bien à "défaire" la première colonne en plusieurs pour n'avoir qu'une donnée par cellule.

Le but est que dans le fichier "V3" - feuille GENERAL - cellules J5 à M5 viennent se mettre les paramètres issu du .csv - étant donné que la cellule A5 renvoie la date de la veille (permet de comparer les paramètres instantanés avec les valeurs de la veille pour avoir une tendance).

Voilà je ne sais pas si c'est vraiment possible...

Soucis 2 (le dernier et je ne vous embête plus)

Comme vous l'avez remarqué dans la feuille GENERAL et sur la ligne 5, il reste des cellules vides. Ici, je souhaite rechercher dans les onglets PARAM T1/PARAM T2/PARAM T3/ etc, les valeurs, de la veille encore, dans les cellules C7 et F7 et les comparer toutes, donc les 10 valeurs, afin d'en sortir les mini et maxi et du coup les afficher dans les cellules B5/D5/F5/H5 de la feuille GENERAL. Ensuite il faudrait que, par exemple, la feuille PARAM T3, renvoie la valeur qui est le pH min de toutes les feuilles, on affiche le numéro 3 en cellule C5 de la feuille GENERAL. Je pourrais ainsi le faire sur les cellules N5/O5 qui concerne un autre paramètre.

Ah si et j'oublais, désolé ça fait trois ), toujours dans la même feuille GENERAL, cellules B11 à B15 (qui sont liées aux cellules A22:A26 dans la feuille CONSO - je n'ai pas réussi à ce qu'il incrémente les lignes tout seuls alors que je l'ai fait sur tout le tableau...) - arriver à faire un calcul qui en fonction de la valeur de la cellule A11:A15 m'indiquer la quantité restante dans la cellule adjacente en allant chercher le total dans la cellule B22 - feuille conso - et en enlevant toutes les valeurs des cellules des colonnes J, L ou N en fonction de ce qui est sélectionné dans les colonnes I, K et M (feuille PARAM TXX).

Comme un système de niveau je ne sais pas si vous voyez ce que je veux dire, pour me faire un voyant coloré en fonction des niveaux pour commander le produit avant qu'il n'y en ait plus.

J'ai réussi à faire un semblant de truc mais ça additionnait uniquement les quantités et non en fonction du produit....

Voilà, promis j'ai fini de vous embêter, je continue à chercher de mon côté en même temps, et je vous remercie d'avance pour le temps que vous aurez pris.

Bonne soirée,

Nico

21v3.xlsm (131.93 Ko)

Bonjour,
Juste quelques questions, il y en aura forcément d'autres.
Je suppose que chaque fois qu'on exporte par "BT (???)" les relevés temp/hygrométrie, un nouveau fichier CSV est généré avec le groupe date-heure-minute comme identifiant. Il se trouve donc à la fin de la liste (ordre alphabétique) des relevés dans un sous-dossier prévu à cet effet.
- quel est le nom de ce dossier ?
- comme on peut effectuer plusieurs relevés un même jour, est-ce qu'il peut y avoir des chevauchements de plages horaires (par exemple de 08:51 à 15:25 pour le 1er et de 10:30 à 23:15 pour le 2e s'il y en a deux au moment de l'importation dans le fichier V3) ? Autrement dit, faut-il fusionner les données ?

Bonjour Optimix,

Merci déjà pour avoir pris le temps de lire et tenter de comprendre mes explications un peu "brameuses" j'avoue.

Pour répondre à tes questions :

- Pour le moment je n'ai pas de dossier prévu pour stocker mes exports du thermomètre. Je devrais d'ailleurs en prévoir un, si jamais il y a besoin du lien pour le répertoire, je peux le sortir au besoin.

- Il y a eut plusieurs relevés car "j'essayais" le système d'export (qui fonctionne très bien). En fait je me connecte en BT (BlueTooth) au thermomètre, je lance l'application liée, et je choisis mes valeurs de date et heure de début et fin d'export. Je peux, si j'ai saisi le sens dans lequel tu veux aller, me dire qu'il faut que j'exporte les données à une heure précise (le jour va être compliqué car pour le moment ce n'est pas mon travail et je ne peux pas passer à la serre tout les jours, mais je peux faire un effort aussi). Je m'explique : je pense qu'il sera plus simple a gérer un fichier qui commence toujours à la même heure et qui fini également à une heure donnée. On peut donc envisager de faire des exports couvrants de "DATE 1 - 08H00" à "DATE X - 08h00" (pas certains que les jours importent beaucoup dans le traitement des données.

En espérant avoir répondu à tes demandes.

Bonne journée à tous,

Nico

Dans bien des cas, il est plus facile de tout créer ab initio - ou presque - que de chercher à adapter un existant dont on n'est pas toujours l'auteur. Voici comment je procèderais si j'avais à le faire pour moi.

- le choix du nom des fichiers CSV est parfait car il colle avec l'ordre chronologique dans le dossier de sauvegarde : serre-maison-exportyyyymmddhhmm.csv.
- peu importe le nom du dossier de sauvegarde, pourvu qu'il y en ait un : je l'ai appelé /historique dans mon exemple.
- pour pouvoir comparer les température et les taux d'hygrométrie mini-max d'un relevé à l'autre (qui peut être journalier), il est nécessaire d'aménager une ligne dans le collecteur V3.xlsx dans laquelle on va recopier les données du dernier relevé avant de mettre celles du jour. Dans l'exemple ci-joint (V3), j'ai inséré une ligne au-dessus de la 5 pour les données d'hier. Celles d'aujourd'hui iront donc dans la plage J6:M6.
- il n'est donc pas nécessaire de passer à la serre tous les jours pour faire les relevés.

Dans ce plan, j'ai créé de toute pièce un fichier serre-maison-export202106110801.csv (donc pour hier 11 juin à 8h01) et un fichier serre-maison-export202106120900.csv pour aujourd'hui (12 juin à 9h). Les moyennes d'hier sont sur la ligne 6 à l'ouverture du fichier.
- le dernier fichier qui se trouve dans le dossier /historique est celui d'aujourd'hui.
- si je lance l'importation, les données d'hier sont recopiées sur la ligne 5 et sont remplacées en ligne 6 par les données d'aujourd'hui.

Ceci n'est qu'une ébauche. Je ne sais pas si elle peut t'aider.

16v3.xlsm (139.78 Ko)

Bonjour Optimix,

Encore merci infiniment pour t'être penché sur le problème. Je regarde ça dans la journée.

Pour que le dossier /historique, je peux le placer où je veux (tout en allant modifier le chemin sous excel) ou il faut que je respecte un "placement" du dossier bien précis ?

Bonne journée,

Nico

7v3.xlsm (140.69 Ko)

(Re)Bonjour Optimix,

Encore merci pour ton travail, c'est parfait c'est exactement le résultat que j'attendais !

Néanmoins, j'ai donc essayé de mettre mon dernier CSV exporté dans le dossier prévu à cet effet. J'ai créé sur le Finder (bureau si W10), un dossier "Serre" dans lequel on trouve le fichier "V3" et un sous dossier "csv" (c'est plus parlant pour moi) et j'ai donc modifié la macro en conséquence (juste changé le "historique" en csv" dans le "module" de la macro qui va chercher le fichier.

Il en sort un bug sur la macro à la ligne "table(compt, 1) = CSng(eclate(1))" lorsque je clique sur le bouton import... Je ne connais pas grand chose en VBA, pour ne pas dire rien du tout, j'ai donc pensé à une erreur de nommage du fichier importé (bien que ce que je comprends du "bug" c'est que ce n'est pas ça). Donc j'ai essayé en mettant ton format de nommage en vain. De mon point de vue on dirait que c'est au moment de la mise en forme du csv que ça bug (note pour moi même : il faut que je vérifie si mon csv n'est pas verrouillé en édition ou un truc du genre...)

Toujours est-il que je vais regarder voir si je trouve une solution ou juste un indice. Il faut d'ailleurs que j'essaye de comprendre le processus afin de réitérer avec les valeurs min/max pH-EC-H2O...

Par ailleurs j'aimerais trouver comment bêtement recopier la ligne de la veille par exemple dans un espèce d'historique que j'avais créé sur la feuille "ENVIRO". Cette feuille va me permettre de faire un graph avec les tendances des paramètres (permettre le constat de l'influence de la température extérieure sur la température de l'eau et donc sur les valeurs de pH/EC...

Bref pas mal de compréhension et d'essais à venir afin de finaliser le fichier.

En tout cas, je te remercie à nouveau pour ton travail, c'est vraiment gentil!

Bonne journée,

Nico

Je viens de trouver pour le "bug" lors de l'import : la présence d'une ligne de texte à la première ligne du CSV exporté.

En supprimant manuellement cette ligne, la macro fonctionne. Plus qu'a trouver la solution pour indiquer à la macro d'ignorer la première ligne car forcément elle ne reconnaitra pas les marqueurs "." et "," pour pouvoir "séparer" le tableau en plusieurs colonnes.

Nico

C'est très simple, il faut lire à vide la 1ère ligne.

tu remplaces :

    ' Chargement du tableau général
    ff = FreeFile
    compt = 0
    Open fichier For Input As #ff
        While Not EOF(ff)

par :

    ' Chargement du tableau général
    ff = FreeFile
    compt = 0
    Open fichier For Input As #ff
        Line Input #ff, ligne
        While Not EOF(ff)

Merci Optimix !

Je dois être un boulet car en copiant/collant le bout de code et bien la macro sort une erreur sur la même ligne que citée au dessus.
Ca me dit : erreur d'exécution 9 - l'indice n'appartient pas à la sélection.

Je cherche !

Bonne journée

7v3.xlsm (140.85 Ko)

Donne-nous exactement le contenu de la 1ère ligne (copier-coller).

@Optimix

Voici le contenu de la première ligne du csv

Horodatage pour chaque échantillon de fréquence chaque 1 min min,Température_Celsius,Humidité_Relative

Désolé pour le "copier/merder", en fait c'est une explication qui est mise en A1...
Je remets le fichier d'hier soir en pièce jointe ;)

Bonne fin de journée

Je te remets les 3 fichiers qui fonctionnent chez moi.
Hummm...hummm ! D'ou vient ce compt = compt + 2 au lieur de compt = compt + 1 ?

6v31.xlsm (140.04 Ko)

Ah merde je suis démasqué !

Non j'ai essayé vite fait ce midi au taf de chercher une réponse avec mes connaissances proches du néant... Je me suis dit que c'était pour zapper une ligne !

Le seul truc que j'ai appris bah c'est que ce n'était pas la solution !

Je viens donc de passer sur l'ordi de la maison, iMac, j'ai donc mon dossier "Serre" sur le bureau, lequel contient le fichier "V31" (le tableau) et un répertoire "CSV" contenant les fichiers issus du thermomètre...

Bon bah ça me dit pas de fichier trouvés... Hors il y en a...

J'ai aussi une liaison vers un ancien fichier mais je sais pas d'où elle proviens. Je fais rompre la liaison mais ça ne change pas...

Moralité : je suis vraiment une chèvre aujourd'hui !

Attention, la gestion des dossiers et des fichiers est très différente entre un iMac et un PC. Donc le truc \csv n'est pas fait pour.
Laisse tomber le taf à la maison, c'est pas fait pour. Demain il fera jour sur ton PC.

Ah oui, je m'en serais douté en même temps....

Malheureusement, je vais devoir continuer à creuser car d'ici peu (une fois ma reconversion finie), le pc windows du boulot j'y aurai plus accès (et j'avoue que ça va pas me manquer !!! ).

En tout cas merci beaucoup pour ton temps et ton aide ! C'est super gentil.

De rien, bon vent !

Rechercher des sujets similaires à "recherche donnees feuilles"