VBA cracker, les problèmes commencent
Bonsoir le forum,
Je viens vers vous en ce début de printemps, car je suis tombé dans un trou noir,
Voilà quelques temps un gentil Bio-informaticien nous a bidouiller un jolie tableau excel qui va récupérer des relevés de température dans un logiciel de traçabilité.
Le gentil Bio-informaticien est maintenant partie vers des cieux plus bleu, nous laissant un jolie système de fichier excel complètement verrouiller.
Heureusement les richesses du web m'ont permis de casser le mdp vba et d'accéder au code....
Et c'est la que je vais avoir besoin d'aide,
Si j'ai bien compris il y a deux fichier dans son montage :
Un fichier xlam qui contient le code
et un fichier " fille". xlsm qui récupère les données, dessine les graphes etc......
Mais le code pressente un problème que je n'arrive pas à résoudre, ( mais peut etres qu'avec vos idées....)
Lors de l'import des données dans le fichier "fille", les données (les dates ) se collent directement les une derrières les autres sans vérifier si les données ont déjà été importées. Dans une utilisation idéale on devrait pas avoir besoin de réimporter les données mais le principe de réalité...nous rattrape toujours.
Donc j'aimerai ajouter dans le code une notion de vérification de date pour que le collages des données commence à la "date de dernière mise à jour" définie sur l'onglet Accueil du fichier "fille" "Modele extraction".
Pour des raisons d'import j ai du modifier l'extension de"macro derives oceasoft" en xlsm, alors que l’extension initiale est bien xlam
Bien que le code soit relativement bien détaillé je n'ai pas encore trouver comment et ou resoudre mon probleme
PS : par défaut les données importées proviennent du mardi de chaque semaine
je tourne autour depuis quelques semaines et je commence à déprimer sérieusement, donc si vous avez des idées pour réaliser ceci?, je suis preneur !
Et merci à ceux qui auront lu le post jusque là
Edit : Nouveau fichier source plus bas a la demande d'eriic
et ci joint le fichier fille
Bonjour,
aie, ça commence mal !
Peux-contrôler que IsAddin de ton ex .xlam est bien à False ? Sinon le mettre et reposter le fichier. Et fait Enregistrer sous... *.xlsm, sans renommer juste l'extension
Passer une semaine dessus crée de l'intimité. Si tu pouvais préciser la macro en cause et son module stp
eric
bonsoir eriic,
je suis heureux que tu te penches sur mon cas
je dirais module traitement des données
c'est mieux ainsi ?
message en doublon oup's
Pour êtres plus précis je penses que c'est ici qu'il faut ajouter le contrôle des dates pour sélectionner la cellule ou les données doivent êtres collées,
'MsgBox (NomFeuille)
'pour chaque sonde, on peut chercher les données
'on cherche le point de départ pour écrire les données
Sheets(NomFeuille).Select
Sheets(NomFeuille).Unprotect Password:=qwerty
col_deb = 1
While (Sheets(NomFeuille).Cells(9, col_deb).Value <> "")
col_deb = col_deb + 1
Wend
'MsgBox (col_deb)
For dat = 0 To (nb_dates - 1)
Sheets(NomFeuille).Cells(9, col_deb + dat).NumberFormat = "@"
Sheets(NomFeuille).Cells(9, col_deb + dat).Value = liste_dates(dat)
Sheets(NomFeuille).Cells(13, col_deb + dat).Value = Sheets("Accueil").Cells(ind_ligne - 1, 3).Value
Sheets(NomFeuille).Cells(11, col_deb + dat).Value = Sheets("Accueil").Cells(ind_ligne - 1, 4).Value
Sheets(NomFeuille).Cells(10, col_deb + dat).Value = "S" & DatePart("ww", liste_dates(dat))
Par défaut il cherche ( si j'ai bien compris ) la première cellule vide de la ligne 9, alors que j'aimerai retrouver la premiere cellule dont la date est égale ou supérieure à la date de dernière mise à jour
Alors évidement je trimme plusieurs semaines sur probleme dont je ne trouve pas la solution et moin de 24h apres avoir poster je trouve la solution
du coup dans le code je remplace
col_deb = 1
While (Sheets(NomFeuille).Cells(9, col_deb).Value <> "")
col_deb = col_deb + 1
Wend
'MsgBox (col_deb)
Par
col_deb = 2
While (Sheets(NomFeuille).Cells(9, col_deb).Value <> "")
If (Sheets("Accueil").Cells(6, 2).Value) >= (Cells(9,col_deb).Value) Then
col_deb = col_deb + 1
Else
col_deb = col_deb
GoTo Suite
End If
Wend
'MsgBox (col_deb)
Suite:
Par contre si quelqu'un sais comment sortir de la boucle While je suis preneur car ma méthode est je penses loin d'être orthodoxe....
Bonjour,
Bon, tant mieux, voilà ce que je m’apprêtais à te répondre :
j'ai jeté un oeil.
La date en B6 est bien prise en compte dans plusieurs endroits. Est-ce le résultat de tes tentatives ?
Parce que sinon ça brouille les pistes et on ne sait pas ce qui est actif ou non, valide ou non.
Si c'est le cas peux-tu mettre le fichier original, expurgé de tes modifs.
Donc à regarder, les dates semblent prises en compte après la dernière récup.
Le soucis c'est qu'on ne peut rien tester en réel vu qu'il faut une connexion à une base à laquelle on n'a pas accès. On ne peut qu'imaginer...
Pas sûr que ton col_deb = col_deb
serve à grand chose
eric
Bonsoir eriiic,
Hé non, c'est le code originalEst-ce le résultat de tes tentatives ?
Pas sûr que ton col_deb = col_deb serve à grand chose
Bah ... je suis pas fier mais j'ai pas trouvé mieux
heureusement je manque pas d'inspirationLe soucis c'est qu'on ne peut rien tester en réel vu qu'il faut une connexion à une base à laquelle on n'a pas accès. On ne peut qu'imaginer...
Franchement, tu ferais comment pour valider la valeur de col_deb dans la boucle While ( que j'utilise pour la première fois
Et j'ai pas compris comment on sortait proprement de la boucle, du coup ce goto doit être un affront pour l’œil d'un programmateur aguerri
Et encore merci,