TRIER DES PHOTOS A LA VOLEE

Résolu
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 - 3 mars 2012 à 02:48
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 - 11 mars 2012 à 17:51
Bonsoir le Forum,

Je suis à la recherche de quelques lignes de code qui m'aideraient à réaliser une opération que je fait souvent et que je trouve fastidieuse !

Voila la chose :

-J'ai un dossier qui contient uniquement des photos. A chaque fois je dois ouvrir ce dossier, prendre les 13 premières photos, les copier, les coller dans le répertoire précédent celui qui contient les photos (en gros je sors les photos du dossier pour pouvoir les traiter).
Une fois les 13 premières photos collées, je supprime les 5 premières et les 5 dernières pour ne garder que les 3 du milieu.

-Ensuite je retourne dans mon dossier qui contient les photos, je sélectionne une deuxième série qui contient 14 photos cette fois-ci. Je copie-colle cette série à la suite des 3 photos qui sont à la racine du dossier qui contient toutes les photos. Je ne travaille que sur les 14 photos importées, je supprime les 6 premières, je supprime les 5 dernières pour n'en garder de nouveau que 3.

-Ce dossier contient donc 6 photos qui sont le résultat "épuré" d'une série de photos.

-Et ainsi de suite. Je retourne donc dans mon dossier qui contient toutes les photos, je sélectionne les 13 prochaines photos, je les sors du dossier par copie, je les colles et supprime les 5 premières et 5 dernières. Plus 3 photos sont donc ajoutées.

-Je retourne dans mon dossier qui contient toutes les photos, je copie-colle les 14 nouvelles photos et supprime les 6 premières et 5 dernières.

Etc, Etc jusqu'à parcourir toutes les photos du dossier.

Le but étant de sortir du dossier qui contient toutes les photos uniquement un échantillons caractérisé.

Voici comment je verrai le fichier Excel :

Un fichier Excel qui possède un bouton de commande. Ce bouton de commande permet de sélectionner le dossier qui contient toutes les photos et de lancer l'extraction.

Une cellule qui contient le nombre de photos de la première série que l'on veut extraire (dans mon cas 13 mais ça peut varier).
Une cellule qui définis le nombre de photos que l'on souhaite garder de la série.

Et la même chose pour la deuxième série, c'est à dire :

Une cellule qui contient le nombre de photos de la deuxième série que l'on veut extraire (dans mon cas 14 mais ça peut varier).
Une cellule qui définis le nombre de photos que l'on souhaite garder de la série.

En fonction des nombres paires et impaires je me fiche de savoir de quel bord de la série on doit garder les photos. On en choisis en un et puis c'est tout.

A chaque fois on doit sortir obligatoirement le bon nombre de photos. Dans mon cas pour les deux séries il faut sortir tout le temps 3 photos.

Il est également indispensable de réaliser une copie et non un couper !


Mon dossier contient plusieurs centaines de photos.


Des questions, des remarques je reste disponible. Pour une fois, je dois avouer que ce code m'aiderais si je pouvais l'obtenir pour ce weekend. Sinon je vais tout me taper à la main ENCORE. Et j'avoue que j'ai pas envie de passer mon weekend à faire ce traitement pourtant obligatoire pour la suite de mon projet.


Merci à tous ceux qui sauront m'aider.

Bien cordialement,


André

84 réponses

Utilisateur anonyme
4 mars 2012 à 18:33
Bien entendu, comme Ucfoutu, il reste à gérer les éventuelle erreurs de frappe et de chemin de fichiers...

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
4 mars 2012 à 19:40
Bien bien bien les amis...Je viens faire un premier retour.

Ucfoutu :

A première vue ça semble bien fonctionner ! J'ai réussi à lancer les extractions et tout et tout.

Par contre j'observe un petit décalage de quelques photos. En effet, si je regarde les dernières photos qui ont été extraites elles ne sont plus centrées sur la série. Du coup peut être qu'il y a léger décalage qui s'effectue au cours de l'extraction.

Mais attention, je ne de dis pas que c'est le code qui réalise le décalage ! Loin de moi cette idée. Je pense plutôt que c'est la caméra qui n'est par régulière dans l'aquisition. Ce serait donc elle qui engendre le décallage.

Heureusement que j'ai placé 2 séries ! Comme ça, je peux trouver un petit compromis pour rééquilibrer les choses.
Et voila aussi pourquoi mes séries de photos sont longues par rapport au photos que je veux garder. Comme ça si je me décale...J'ai de la marge !



Bon pour finir...Pendant que je jouais avec l'extraction, à force de supprimer et extraire j'ai finis par supprimer mon dossier source. Les boules. Mais bon c'était une copie, tout ça pour dire que je n'ai pas le temps de copier de nouveau 1 Go d'images pour tester.
Je poursuivrai ce soir.
J'ai un train à prendre prochainement....


Les premières conclusions sont toutes favorables pour toi Ucfoutu ! Bon travail.

-Acive, vu que j'ai supprimé mon dossier de photos je n'ai pas pu tester ton fichier pour le moment. Mais je le ferai taleur ;)

A tous les deux un grand merci ! Quel plaisir d'attendre seulement 30 secondes et voir un tel résultat. Whaou quoi !

Respect


Bien cordialement,

André


Ps : Je viendrais rajouter des remarques au fur et à mesures de mes tests.
Ucfoutu, vu ton vertige, tu ne dois pas beaucoup aimer le style "musique syncopée" on dirait

Bonne soirée
0
Utilisateur anonyme
4 mars 2012 à 19:53
Eh bien, je n'ai fait que la première série d'une part je ne sais pas comment tu veux gérer les données utilisateurs, (le nombre de fichiers, l'extension etc.) et puis je voudrais m'assurer si c'est ce que tu cherches à faire.

Mais le principe est la, on pourra y faire appel quand on veux.

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 mars 2012 à 21:04
@ André,
Tu as peut-être la solution à tes problèmes de décalages dans les prises de vue dans la "récursivité" adaptative et paramétrable de l'horloge à musique syncopée dont je t'ai dotée !
Je t'explique :
rythme = Array(13, 14,12,11) '<<<<<<======== ici tes cycles répétés
corrythme = Array(3,4,5,2) '<<<<<======== ici les conservés correspondant à chaque série

Traiterait (avec cette même horloge) par exemple :
une série de 13 (avec 3 gardés) suivie d'une de 14 (avec 4 gardés) suivie d'une de 12 (avec 5 gardés) suivie d'une série de 11 (avec 2 gardés) et on reboucle sur série de 13, puis de 14, 12, et 11.
L'horloge est ainsi parfaitement capable de s'adapter (sans rien changer dans son code) à toute succession de "cycles de séries".
Capte ce qu'il convient de capter de "c't'affaire-là" . Tu as entre les mains, tout simplement, de quoi composer toute mélodie, y compris syncopée, composée de phrases musicales et d'un refrain, le tout en boucle.

C'est là que l'on apprécie l'apport de l'informatique, à la seule condition que l'on ait "en coulisse" un raisonnement répétitif et donc répété.

Bonne nuit.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 mars 2012 à 21:42
Vois d'abord celà (mon dernier message).
Je te parlerai peut-être ensuite de la difficulté à transformer un ensemble PC + caméra en "oscilloscope" (tu n'échapperas jamais aux décalages dus au matériel lui même). C'est également vrai avec un véritable oscilloscope et l'oeil humain, mais c'est alors presque instantané et les décalages sont insignifiants.
Comment régler un ensemble caméra + carte graphique + processeur pour que la fréquence des prises de vues "colle" au mieux possible avec celle d'un mouvement répétitif ? ===>> dur dur, à moins de toujours travailler avec les mêmes matériels (pc inclus) et dans les mêmes circonstances (charge du processeur). Pas donné d'avance, c't'affaire !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 mars 2012 à 22:11
Un indice de base, déjà et toutefois :
- soit un mouvement périodique dont le cycle est de s millisecondes à plein régime constant
- soit la nécessité d'observer une position tous les millièmes de secondes ===>>

Tu obtiendras exactement le même résultat en prenant des clichés tous les millièmes de secondes qu'en prenant des clichés tous les y = (s * y millisecondes) cycles complets + 1 millième de seconde

Ce qui te permet déjà, au moins, de pallier à certaines "latences" de ton matériel (caméra, processeur, carte graphique, etc ...). Non ?

Restera que, dans tous les cas, le matériel et les conditions (y compris de température ambiante) devront être les mêmes ou de différences négligeables.

En d'autre termes : on peu peser juste avec une balance fausse, mais toujours avec la même balance.

Bonne nuit.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 mars 2012 à 23:09
Corrige (j'étais fatigué) :
Tu obtiendras exactement le même résultat en prenant des clichés tous les millièmes de secondes qu'en prenant des clichés tous les y = (s * y millisecondes) cycles complets + z millièmes de seconde en faisant varier z de 0 au nombre d'images à obtenir tous les millièmes de seconde


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
9 mars 2012 à 13:45
Bonjour le Forum, bonjour Ucfoutu et bonjour Acive.

Tout d'abord encore dsl pour cet énorme retard de ma part (5 jours pour donner des nouvelles !!!). J'ai eu une semaine des plus chargées. De fait je n'avais pas de machine sous la main, et pas plus de temps libre non plus. S'ajoute à cela que ma connexion internet ne fonctionne plus chez moi... Pas facile.


Bref i am back


Je suis de retour et en plus j'ai toutes les réponses aux questions qui me faisaient défaut initialement. Durant la semaine, j'ai tout de même trouvé le temps de me casser la tête sur le problème de décalage des photos que je rencontrait. J'ai pris le temps qu'il fallait pour calibrer correctement ma caméra et son temps d’acquisition.
De cette façon je me suis rendu très vite compte que la caméra ne dérivait pas du tout au cours du temps. Et ce, même sur des temps d'acquisitions assez longs (1 heure). Alors d'un coté j'étais content car la caméra faisait bien son travail; mais d'un autre coté, j'étais embêté vis à vis de l'extraction et du décalage !

Je me suis alors dis : " La caméra c'est OK, le code de Ucfoutu doit être lui aussi OK connaissant son talent". Ne me restais alors plus qu'une seule raison : La méthodologie que j'emploie n'est pas la bonne tout simplement. En gros chacun fait son travail, mais c'est moi qui défini mal le travail à faire.

J'ai ensuite poussé plus loin mes tests sur l'extraction et je me suis rendu compte que pour mon application il ne fallait pas 2 séries à extraire comme je le pensais....Mais 3 !!!

Il fallait aller un ordre plus loin pour retomber sur la logique de la première série. C'est maintenant super clair pour moi.

Quand j'ai compris qu'il me fallait 3 séries, je me suis dit "et merde ! j'ai demandé à Ucfoutu de me mettre 2 séries uniquement". Et en re-visualisant le code dans ma tête, j'ai immédiatement compris qu'Ucfoutu était juste génial.
Ucfoutu, tu as directement prévu l'intégration de multiples séries. C'est incroyable quoi ! J'ai immédiatement été rassuré en me rappelant de ce détail.


Le soir même je testais 3 séries....Et le résultat était enfin à la hauteur de mes attentes...Juste parfait !

Le code fonctionne donc à merveille, et ma caméra ne se décale pas franchement au cours du temps. Il suffit de bien prendre le soin de paramétrer les choses. Le problème n'était pas simple à la base, mais il est logique et clair à la fin. C'est le principal.


Donc Ucfoutu, un super grand merci. Maintenant que j'ai la maitrise sur l'ensemble du process, je peux extraire à la volée, les yeux fermées et en toute tranquillité toutes les photos que je veux. Sans grands risques apparents. Objectifs pleinement atteints.

C'est seulement maintenant que je viens de lire tes derniers posts, et ils confirment bien ce que j'ai fait (rajouter et/ou programmer de nouvelels séries si besoins est). Ça roule^^


J'ai mis le temps pour faire un retour d'expérience, mais au moins c'est efficace.


André (La suite, et oui tjs une suite, dans le post suivant...)


Ps : Acive, j'ai testé ton fichier. Malheureusement j'ai été très vite limité car il n'y avais qu'une seule cellule. J'ai donc donné priorité pour la suite au code proposé par Ucfoutu cette fois-ci.

N'en sois pas vexé ou gêné s'il te plais . On avance tous ensemble ici. Un grand merci à toi pour ta bonne volonté. C'est sympa. Je te réserve d'autres codes si tu veux. Je regorge d'idées pour ça^^
A bientôt
0
Utilisateur anonyme
9 mars 2012 à 13:55
Salut,
Le problème n'était pas simple à la base, mais il est logique et clair à la fin. C'est le principal.

C'est le but recherché...
Tu as quand même réussi à voler tes photos finalement..

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
9 mars 2012 à 14:03
Bien, maintenant que tout ça est dit, j'aimerais savoir s'il est envisageable de pousser un poil plus les fonctionnalités du code Ucfoutu. Je m'explique.

Le code me permet d'extraire et de sélectionner un certains nombre de photos d'un dossier vers un autre dossier. Il copie simplement les fichiers sans changer leurs noms. C'était dans les contraintes que j'avais définis initialement.

Je ne voulais pas compliquer le code, ni même rendre trop difficile la tâche. Déjà que ça t'a donné mal à la tête^^

Maintenant que la base est faite, j'aimerais savoir s'il est possible de renommer les fichiers qui sont extraits et cela de manière tout aussi automatique que l'extraction ???

Actuellement j'ai un fichier Excel, qui demande une série de paramètres (les paramètres d'extractions tels que le dossier source, dossier cible, extension, rythmes et co-rythmes). J'aimerais rajouter une colonne qui contienne le noms des fichiers extraits. Ainsi, le premier fichier extrait porterait le nom qui est indiqué dans la première cellule de telle colonne. Le deuxième fichier porterait le nom de la cellule suivante etc.

Plusieurs cas de figure peuvent alors se présenter:

-Soit la colonne, qui contient les noms que devront porter les photos extraites, contient moins de noms que de photos extraites (Exemple j'ai 10 lignes soit 10 noms de fichiers à renommer et je viens d'extraire 200 photos). Dans ce cas la, on dit que tant qu'il y a un nom dans la cellule, on lui associe une photo. Et dès qu'il y a plus de photos que de noms alors le reste des fichiers extraits porte le même nom que les fichiers originaux.

-Soit il y a plus de noms de fichiers que de fichiers extraits. Alors dans ce cas la on dit que toutes les photos extraites portent les nom successifs des lignes de mon Excel. Et s'il y a des noms en plus, et bien tant pis aucun fichier ne portera ces noms la car il n'y en a pas assez.

-Soit la liste comportant les noms est aussi grande que le nombre de photos extraites. Dans ce cas, chaque photo aura son nom associé.

Je pense que le tour à jouer est maintenant très simple Ucfoutu. C'est juste mon avis bien sur. Mais je suis persuadé.


Ainsi pour chaque extraction, il me suffit de remplir une colonne de noms sous Excel et de lancer l'extraction qui fera l'association en temps réel.

Actuellement, j'extrais les fichier en 20 secondes grâce au code, et je passe ensuite 15 min pour les renommer un à un. Si j'avais une liste définie sous Excel, je pourrais réaliser le tout en 30 secondes à peine (extraction et les renommer). Et je pourrai changer la liste des noms aussi facilement que possible sous Excel.

Ça rendrait le code 100 % automatique et fonctionnel à mes yeux, et viendrait conclure ce post définitivement.


Si ce n'est toute fois pas possible, pas simple, ou que tu n'as pas envie de le faire Ucfoutu. Et bien ce n'est pas grave. Je ne vais pas cracher dans la soupe. C'est déjà génial ce que tu as fait. Grandiose j'avoue.


Bien cordialement,

André


PS : Pour ce qui est de renommer les fichiers, une attention particulière sera portée sur la définition de la liste contenant les noms que devront porter les fichiers extraits. En effet, pour le moment ce code est simple et unique; mais j'envisage de venir le greffer sur la suite logique de mon big big big code. Donc la liste des noms devra pouvoir se définir simplement le plus simplement possible. Sinon je ne parviendrais pas à intégrer le code plus tard. Idéalement, par le noms d'une feuille, puis du point A (cellule Xa;ColonneYa) au point B(Cellule Xb;Colonne Ya).
Sauf si tu as une meilleure idée bien entendu. Tu as libre cours. D'avance merci.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
9 mars 2012 à 16:05
Bonjour,
Tout est possible, une fois de plus, si ce "tout" correspond à une logique bien établie et arrêtée.
Peux-tu exprimer cette logique de manière technique, au besoin par un exemple simple imagé ?
Si oui et si on peut en tirer une logique claire : ce sera un jeu d'enfant.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
9 mars 2012 à 17:44
Pas de soucis pour le schéma. Je te prépare ça pour ce soir. Tu le verras tout à l'heure tardivement, ou alors demain de bonne heure^^


Je ferai ça bien.


Merci Ucfoutu.


André
0
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
9 mars 2012 à 19:13
Et voila le schéma attendu. Il s'agit d'une feuille Excel bien colorée.

J'espère que tu arriveras à déchiffrer mes idées^^

Je rappelle 2 choses :

-Si la liste des noms comporte un blanc, il faut alors laisser le nom original de la photo concernée

-Le code pour l'extraction des photos fonctionne à merveille. Par contre, si la dernière série traitée n'est pas complète alors le programme extrait tout de même le peu de photo qu'il y a pour la dernière série. Serait il possible au passage, de ne traiter que des séries de photos complètes ? En gros si j demande des séries de 10 et qu'à la fin il me reste 7 photos à extraire. Alors je ne traite pas les 7 dernières photos et je les laisse la ou elles sont initialement. C'est ça aussi qui m'a un peu perturbé dans mon problème de décalage. Normalement les photos qui ne suffisent pas à créer la dernière série, ne sont tout simplement pas traitées.


Voili voilou.

N'hésites pas à me demander plus de détails si besoin est.

André


Ps : Le lien de téléchargement

http://www.packupload.com/X359FL5HMID
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
9 mars 2012 à 19:32
Bon.
Je viens de voir tes deux schémas.
Une précision : dans chaque schéma : c'est toi qui remplis la colonne en blanc ("liste des noms") manuellement ?
Et si oui (fort probablement) : quand ? car je vois mal comment si avant l'extraction elle-même.
Si après : je peux faire d'une pierre plusieurs coups :
1) ne rien extraire et mettre simplement les extractions en colonne "extraction des fichiers"
puis
2) supprimer les "séries incomplètes" dont tu viens de parler
3) attendre l'intervention manuelle pour donner tes noms en colonne "liste des noms"
puis
4) allez mettre toutes les extractions dans le dossier choisi pour l'accueil, avec le nom recomposé, sur la base choisie en colonne "liste des noms". Etant entendu (bien compris) que si pas de nom === >> nom non modifié.

Je ne vois par contre nulle part un rapport quelconque avec un nom de feuille (dont tu avais parlé plus haut).

Je verrai ta réponse ( the sooner the better ) après dîner.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
9 mars 2012 à 21:12
Pour les précisions attendues :

Une précision : dans chaque schéma : c'est toi qui remplis la colonne en blanc ("liste des noms") manuellement ?


Oui en effet

Et si oui (fort probablement) : quand ? car je vois mal comment si avant l'extraction elle-même.


Ben heu je pensais préremplir la liste avant de lancer l'extraction justement. Je sais déjà quels noms devront porter mes images. Donc avant de réaliser l'extraction, je suis à même de prédire les futurs noms. Donc la liste des noms doit être remplie avant l'extraction. Si elle n'est pas remplie avant, alors le programme interprétera la liste des noms comme étant vide. Et du coup il fera son extraction sans changer les noms. S'il détecte une entrée, alors il lui attribue le bon nom.

Le but étant justement de gagner du temps en entrant des séries de noms que je connais déjà et qui se répètent. Ça évite ainsi de tout renommer à chaque fois.


Je ne vois par contre nulle part un rapport quelconque avec un nom de feuille (dont tu avais parlé plus haut).


En effet, je ne sais pas trop comment l'intégrer cet élément. En fait je pensais un truc comme ça :

Tu as créé un tableau dynamique pour gérer les rythmes, un autre pour les co-rythmes. Je me suis dis pourquoi pas un troisième qui contient les noms. Qu'en pense tu ?

Le premier nom du tableau dynamique est atribué à la première photo. Le suivant à la photo 2 et ainsi de suite. S'il trouve un vide, alors la prochaine photo aura le nom initial.

Etc...


Verdict ?


André
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
9 mars 2012 à 21:41
Ben heu je pensais préremplir la liste avant de lancer l'extraction justement. Je sais déjà quels noms devront porter mes images. Donc avant de réaliser l'extraction, je suis à même de prédire les futurs noms. Donc la liste des noms doit être remplie avant l'extraction.

Ce fait ne me pose (à moi) aucun problème.
Mais à toi : peut-être ! comment pourrais-tu savoir à l'avance combien de noms renseigner ainsi, puisque tu ne sais pas combien de cycles de séries différentes va contenir tel ou tel autre dossier ? === >> Hmm ? Et d'un dossier à l'autre, tout peut changer ! Et comme tu écris ces noms toi-même, euh ... ! ?
A toi de voir cet aspect assez curieux !
Tu as créé un tableau dynamique pour gérer les rythmes, un autre pour les co-rythmes. Je me suis dis pourquoi pas un troisième qui contient les noms. Qu'en pense tu ?

Là, je vois mal le cheminement. Sous quelle forme, exactement ?
Car dans les co-rythmes des rythmes, il y a un mouvement périodique répétifif !
A moins que l'on incrémente par concaténation d'un compteur (correspondant à chaque cycle complet) le nom, genre (exemple)
sur 1ère série de 13 dont on garderait 3 : toto1-1, toto1-2, toto1-3
sur 1ère série de 14 dont on garderait 2 : titi-1, titi-2
puis :
sur 2ème série de 13 : toto2-1, toto2-2, toto2-3
sur 2ème série de 14 : titi2-1, titi2,2
etc ...
Cette horloge-là devrait également être possible à construire (je pense y parvenir).

Mais je n'y vois toujours pas un nom de feuille, à moins que ainsi, sur une feuille nommée bidule :
bidule13-1-1, bidule13-1-2, bidule13-1-3 (pour la 1ère série des 13)
bidule14-1-1, bidule143-1-2 (pour la 1ère série des 14)
bidule13-2-1, bidule13-2-2, bidule13-2-3 (pour la 2ème série des 13)
bidule14-2-1, bidule14-2-2 (pour la 2eme série des 14)
bidule13-3-1, bidule13-3-2, bidule13-3-3 (pour la 3eme série des 13)
bidule14-3-1, bidule14-3-2 (pour la 3eme série des 14)

....
bidule13-n-1, bidule13-n-2, bidule13-n-3 (pour la nième série des 13)
bidule14-n-1, bidule14-n-2 (pour la nième série des 14)

De cette manière : tu n'aurais même plus à renseigner tes noms manuellement.
et, comme la première, l'horloge devrais pouvoir suivre tous les rythmes dans les rytmes et tous les cycles paramétrés, bien sûr.
Réfléchis bien d'abord.
Je ne te cache pas que l'horloge va devenir assez cossue, mais j'aime les défis de l'espèce

Je te lirai demain matin.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
9 mars 2012 à 21:54
j'essaie ici de définir le code comme je le verrais. C'est schématique et surtout symbolique.

'les paramètres du dossier
Dim mondossier As String, madesti As String, filtre As String, fic As String, rythme, corrythme
    mondossier = Range("C3") ' <<<<<======================= ici ton dossier d'images à copier
    madesti = Range("C4") & "" ' <<<<<<<<<<<<<=========== ici le dossier (éventuellement à créer) où envoyer tes trucs
    filtre = "\*" & Range("C5") '<<<<<============== ici : l'extension à filtrer
    rythme = Array(Range("C6"), Range("C8"), Range("C10")) '<<<<<<======== ici tes cycles répétés
    corrythme = Array(Range("C7"), Range("C9"), Range("C11")) '<<<<<======== ici les conservés correspondant à chaque série
    
'    Sheets("MA_FEUILLE").Select 'Je sélectionne justement la feuille qui m'interresse ici
'    Liste_Des_Noms = Array(Range("C4")) 'Ici je définis le début de ma liste (le nom suivant se trouve en Range("C5") etc.)
' appel de l'horloge
  horloge mondossier, filtre, madesti, rythme, corrythme



Je ne sais pas ce que ça vaut.

Sinon un truc du genre

'    Sheets("MA_FEUILLE").Select 'Je sélectionne justement la feuille qui m'interresse ici
'    Liste_Des_Noms = Array(Range("C4"),Range("C5"),Range("C6"),Range("C7")...) 'Ici je définis le début de ma liste (le nom suivant se trouve en Range("C5") etc.)



A voir si ça permet d'aider ou pas. En tout cas, je définis la feuille qui m’intéresse ainsi que le début de ma liste pour savoir ou elle commence.


André
0
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
9 mars 2012 à 22:22
Ah zut nos posts viennent de se croiser. Pas grave.

Donc...


comment pourrais-tu savoir à l'avance combien de noms renseigner ainsi, puisque tu ne sais pas combien de cycles de séries différentes va contenir tel ou tel autre dossier ?


Si ça je le sais justement. Si tu regarde bien le schéma que je t'ai fait parvenir tu verras que la première colonne représente les séquences. Chaque séquence dure un même et unique temps. Dans l'exemple d'extraction numéro 1 mes séquences durent 40 secondes. Et je sais combien de séquences j'ai au final. De plus je sais maintenant prédire le nombre de série exactes qu'il me faut et cela quelque soit la durée des séquences, le nombre de rythmes employés, et le nombre de co-rythmes.

Avec toutes ces infos, je sais dire combien de photos devra contenir mon dossier cible à la fin. Et si je sais le nombre de photos du dossier final, je sais également le nombre de noms qu'il me faudra placer dans la liste des noms.

Un vrai jeu d'enfant je dirais.

Donc si pour toi ça ne pose pas de problème pour réaliser l'extraction avec une liste de noms déjà complétée à l'avance, moi ça m'arrange parfaitement. Et je pense que ça facilite au final tout. Donc autant en profiter.

Je confirme bien le fait que je sais à l'avance le nom que devra porter chaque photo. C'est sure à 99% Ucfoutu.


Et d'un dossier à l'autre, tout peut changer !


Oui en effet tout peut changer. Mais si tout change, je suis toujours capable de prédire le nom à l'avance de chaque photo. Donc aucun problème. De plus, la plus part du temps les listes seront prédéfinies. Il y aura quelques listes créées et il me suffira de choisir la liste qui m’intéresse et de la copier-coller dans la listes des noms. Tout est ensuite automatique.

Nan le système me conviens bien ainsi. Enfin si on y parvient.

Et si possible intégrer la petite modification qui dit que dès qu'une série ne peut pas être complétée entièrement pour l'extraction alors l'extraction est terminée et on ne copie pas les dernières photos (au cas ou on oublie)

André

Ps : Pour le nom de feuille oublie pour le moment. Je pense que je parviendrais ensuite à intégrer le nom de la feuille. C'est tout bête en fait.
Pour définir la liste des noms, je dois pouvoir le faire facilement. Que la liste se trouve dans une feuille particulière, dans une cellule particulière etc. Mais oublie ce point la. Je t'embrouille plus qu'autre chose. C'est comme pour les rythmes et les co-rythmes : Tu as mis "Array(13,14)" équivalent "Array(Range("A1"),Array("B6"))" équivalent à "Array(Sheets("MA_FEUILLE").Range("A1"),Sheets("MA_FEUILLE").Range("B6"))" équivalent à "Sheets("MA_FEUILLE").Select, Array(Range("A1"),Array("B6"))"

Voila ce que je veux quand je parle d'intégrer le nom d'une feuille.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
10 mars 2012 à 14:37
Bon, André,
Nous allons passer aux choses sérieuses, si nous voulons nous en sortir .

Il va falloir procéder en deux étapes, pour que tu comprennes et puisses utiliser valablement ce qui va venir ensuite :
Première étape (celle d'aujourd'hui) : ===>>
préparer le terrain sain sur lequel nous allons ensuite travailler ensemble :
- Tu vas me créer une feuille "traitement".
- sur cette feuille :
--- dans A1 : "Filtre/extension"
--- dans B1 : "Dossier à traiter"
--- dans C1 : "Dossier d'accueil"
--- dans D1 : "Rythme"
--- dans E1 : "Co-Rythme"
--- dans F1 :"Liste/nouveaux noms"
--- dans G1 : "Feuille/visualisation"
Donne à ces colonnes une largeur suffisante

--- ajoute un contrôle CommandButton1
--- ajoute une listbox Listbox1

Mets ce code :
Private Type BrowseInfo
    hWndOwner As Long
    pIDLRoot As Long
    pszDisplayName As Long
    lpszTitle As Long
    ulFlags As Long
    lpfnCallback As Long
    lParam As Long
    iImage As Long
End Type
Const BIF_RETURNONLYFSDIRS = 1
Const MAX_PATH = 260
Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long)
Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long

Private Sub ListBox1_Click()
  Dim depart As Worksheet
  Set depart = ActiveSheet
  ma_feuille = ListBox1.List(ListBox1.ListIndex)
  If ma_feuille <> "NOUVELLE A CREER" Then
    Range("G2").Value = ListBox1.List(ListBox1.ListIndex)
  Else
    toto = InputBox("donner un nom à cette nouvelle feuille")
    On Error Resume Next
    With Worksheets.Add
      .Name = toto
    End With
    Range("G2").Value = toto
    On Error GoTo 0
  End If
  depart.Activate
  ListBox1.Visible = False
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 ListBox1.Visible = False
 If Target.Address Range("B2").Address Or Target.Address Range("C2").Address Then
   If Target.Column = 2 Then
     monmsg = "Sélectonne le dossier à traiter puis clique sur OK"
   Else
     monmsg = "Sélectonne le dossier d'accueil puis clique sur OK"
   End If
   Dim iNull As Integer, lpIDList As Long, lResult As Long
     Dim sPath As String, udtBI As BrowseInfo
     With udtBI
        .hWndOwner = 0
        .lpszTitle = lstrcat(monmsg, "") ' lstrcat("C:", "")
        .ulFlags = BIF_RETURNONLYFSDIRS
     End With
     lpIDList = SHBrowseForFolder(udtBI)
     If lpIDList Then
         sPath = String$(MAX_PATH, 0)
         SHGetPathFromIDList lpIDList, sPath
         CoTaskMemFree lpIDList
         iNull = InStr(sPath, vbNullChar)
         If iNull Then
            sPath = Left$(sPath, iNull - 1)
         End If
    End If
    Target.Value = sPath
  ElseIf Target.Address = Range("G2").Address Then
    remplir_choix_feuille
  End If
End Sub
Private Sub remplir_choix_feuille()
    ListBox1.Clear
    For Each sh In Worksheets
      If sh.Name <> ActiveSheet.Name Then
        ListBox1.AddItem sh.Name
      End If
    Next
    ListBox1.AddItem "NOUVELLE A CREER"
    ListBox1.Left = Range("G2").Left
    ListBox1.Top = Range("G2").Top
    ListBox1.Visible = True
End Sub


Attention : tout ceci n'est que la préparation du terrain de ce qui va ensuite venir.
Même si tu constates certaines réactions (en allant Dans B2,C2 ou G2, par exemple), elles ne sont pas là pour autre chose que cette préparation de terrain.
Le reste viendra (on mettra quelque-chose dans l'évènement click du commandbutton) après, lorsque tu m'auras confirmé que le terrain est prêt.



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
SERIEUXETCOOL Messages postés 336 Date d'inscription dimanche 3 avril 2011 Statut Membre Dernière intervention 12 juin 2012 1
10 mars 2012 à 15:32
J'ai créé la feuille, placé les noms dans les cellules adéquates, introduis le CommandButton1, Listbox1.

Pour la listbox, je suis allé dans "Contrôles ActiveX" puis "Zone de liste" (insère un contrôle de zone de liste). Ça me donne un rectangle blanc vide. Quand je fais propriété dessus, j'ai bien Name = ListBox1

Pour le code j'ai fait copier puis coller dans "ThisWorbook". Je ne savais pas s'il fallait ou non créer un module. Donc j'ai préféré tout mettre dans "ThisWorbook".

Voila ou j'en suis de mon coté. Si tu vois que ce n'est pas bon dis moi quoi changer.

Pour le moment rien ne se passe. J'ai regardé dans les cellules B2,C2,G2 et rien. J'ai double cliqué sur la liste boxe et rien non plus.

J'espère que juste la tout vas bien.

Si c'est OK comme ça, alors on peut poursuivre. Sinon on continue de préparer le terrain.
0
Rejoignez-nous