Extraction de données via VBA
Re,
Voici la 3ème version du fichier
Au démarrage le code te demandera si tu veux réinitialiser la liste des fichiers
Cette procédure te permet de relancer le code autant de fois que tu veux sans effacer la liste des fichiers si tu réponds NON
La liste des fichiers à traiter est parcouru par une première boucle qui les inscrit dans la feuille "Params"
Ensuite une 2ème boucle traite la liste triée et si il y a un problème de valeur non trouvée, un FLAG (drapeau) se met à VRAI
A la fin de l'import tu auras un message d'avertissement et le code s'arrêtera
Te laissant ainsi la possibilité de remplir le modèle selon les valeurs souhaitée
Normalement, après remplissage, tu lances une impression de la feuille modèle ce qui devrait te créer en fait le fichier PDF avec le nom adéquat (mais non testé)
Après ça tu continue en cliquant de nouveau sur le bouton, (attention, bien répondre nono à la question)
Edit : fichier supprimé, problème de code
@+
Merci beaucoup pour ton travail.
Je note donc toujours mon chemin de mes fichiers base dans la feuille Params, puis je lance la Macro, je réponds oui et je choisis le dossier d'export. Et là cela affiche ça sans rien remplir :
Ai-je loupé quelque chose ? ^^'
Oui oui pardon, je viens d'éditer mon message ^^'. Donc je choisis le dossier d'export, je valide et c'est à ce moment là que ça affiche ça sans rien remplir
Re,
Désolé, pas pris le temps de tester mes dernière modifs
Il y avait un problème lors de la tentative d'impression, c'est corrigé
@+
Merci
Voici ce qu'il se passe :
Je rentre mon Chemin Base dans la feuille Params
Je lance la macro, je mets Oui pour la RàZ
Je choisi le dossier Export (ce qui remplace le chemin dans Params, mais ce doit être juste un problème de variable ça c'est pas grave)
La macro démarre, je récupère les premières données jusqu'à Chat (j'ai supprimé Chat dans un des fichiers pour simuler une erreur)
> A ce niveau, qu'est ce que je suis censé faire ? La relancer et faire non pour récupérer les valeurs suivantes ? Ou bien je suis censé ouvrir le fichier, remettre "Chat" là où cela avait été oublié puis relancer la macro en faisant oui ? en faisant non ?
Merci à toi,
Il semblerait que l'ajout de "On Error Resume Next" au tout début de la macro me permette de sauter les erreurs sans gêne. Il faudrait seulement que je puisse afficher en fin de macro le fait qu'il y ait eu une erreur.. !
Edit : J'ai réussi à ce qu'il m'affiche qu'il y a eu une erreur !
Re,
Vraiment désolé Bastien, c'est mon gros défaut, je ne prends pas le temps de tout tester
Sinon, voici la v4, je pense que le message sera plus explicite
Pour ta demande :
La macro démarre, je récupère les premières données jusqu'à Chat (j'ai supprimé Chat dans un des fichiers pour simuler une erreur)
> A ce niveau, qu'est ce que je suis censé faire ? La relancer et faire non pour récupérer les valeurs suivantes ? Ou bien je suis censé ouvrir le fichier, remettre "Chat" là où cela avait été oublié puis relancer la macro en faisant oui ? en faisant non ?
J'ai modifié le code ainsi :
1) le code te demandera de faire le choix de 2 dossiers : celui de base et celui pour les impressions
Nota : pour moi à la base je pensais que ça pouvait être le même
2) Lors du lancement de la MàJ, dès une erreur rencontrée, un message s'affichera t'indiquant pour quelle rubrique et activera le dernier fichier ouvert
Nota : inutile de continuer la MàJ
3) Après modification, enregistrement et fermeture du fichier base (en cas d'erreur)
il faudra cliquer de nouveau sur le bouton, mais répondre NON à la question pour réinitialiser la liste
4) A la fin, toutes tes fiches auront été imprimées dans le dossier déterminé
Voilà, j'espère avoir été assez clair
Waouh c'est top !
Quand il n'y a pas d'erreur dans les fichiers, cela me crée bien mes fichiers sans aucun soucis. En revanche, quand il y a eu une erreur, il m'affiche bien le message d'alerte, je modifie et je relance en mettant "non" et ensuite tout re-fonctionne bien. MAIS : du coup au final je me retrouve avec 2 exports pour chaque fichier traité. Je pense que cela vient du fait que dans la feuille Params il récupère le nom des fichiers à chaque erreur.
Et je vais être un peu compliqué, mais y a t-il une solution pour le deuxième problème que je t'ai expliqué hier ?
Ne serait-il pas intéressant de mettre plusieurs lignes sur le modèle, qui se remplieraient pour de multiple cas
Si oui, combien ?
Ce cas là serait pour un autre fichier modèle sensiblement identique. Par exemple :
Je cherche le premier "Chien", je récupère la valeur à sa droite et je la met en C3
Je cherche le second "Chien", je récupère la valeur à sa droite et je la met en C34
idem et je met en C54
idem et je met en C67
Max 4 fois normalement !
C'est possible ça ?
Merci (:
Bonsoir Bastien
Waouh c'est top !
Merci beaucoup.
Merci à toi d’apprécier le boutlot
Quand il n'y a pas d'erreur dans les fichiers, cela me crée bien mes fichiers sans aucun soucis. En revanche, quand il y a eu une erreur, il m'affiche bien le message d'alerte, je modifie et je relance en mettant "non" et ensuite tout re-fonctionne bien. MAIS : du coup au final je me retrouve avec 2 exports pour chaque fichier traité. Je pense que cela vient du fait que dans la feuille Params il récupère le nom des fichiers à chaque erreur.
Encore une anerie de ma part, il faut que je passe le code de recherche de fichiers puisque déjà fait, sinon, effectivement ça me crée des doublons non traités
Corrigé
Et je vais être un peu compliqué, mais y a t-il une solution pour le deuxième problème que je t'ai expliqué hier ?
Ne serait-il pas intéressant de mettre plusieurs lignes sur le modèle, qui se remplieraient pour de multiple cas
Si oui, combien ?
Ce cas là serait pour un autre fichier modèle sensiblement identique. Par exemple :
Je cherche le premier "Chien", je récupère la valeur à sa droite et je la met en C3
Je cherche le second "Chien", je récupère la valeur à sa droite et je la met en C34
idem et je met en C54
idem et je met en C67
Max 4 fois normalement !
C'est possible ça ?
Peux-tu me donner un modèle avec ces 4 zones ?
Car tu me parles de C3, puis de C34, C54 et C67
@+
J'aimerai en savoir autant sur le VBA que toi aha !
Merci encore pour la correction (: !
En pj un exemple d'un fichier base avec les multiples "Chien" "Chat" etc et donc le fichier récap qui devrait récupérer les 4 à chaque fois ..
Je reste en ligne si besoin de plus d'infos !
Re,
Pourquoi tes zones ne sont pas identiques !?
Ta zone 2 ne contient que Chien, Cheval et Oiseau...
@+
Re,
J'ai fait un copier coller un peu trop rapide .. Les voici avec les zones identiques !
Merci
Salut Batiens,
T'inquiète tu avais juste à me dire que c'était une erreur (ce que je pensais)
@+
Re,
Voici la v5 du fichier
Dans ce fichier, je boucle pour traiter 4 fiches par fichier
J'adapte la zone d'impression par rapport au nombre de fiches créées
Reste un souci, comment détecter si il manque un titre (Chien, Cheval, etc..) ou si le fichier ne contient qu'une fiche à faire
@+
Re
Merci ! Je vais tester ça !
Reste un souci, comment détecter si il manque un titre (Chien, Cheval, etc..) ou si le fichier ne contient qu'une fiche à faire
Cette version de la macro, je ne la ferai que sur les fichiers qui en contiennent 4 de fiches, ça je le sais à l'avance ! Et s'il manque un titre, ta boucle d'erreur ne fonctionne plus comme celle d'hier ?
Re
Peux tu m'expliquer comment le code sait qu'il doit chercher dans la deuxième partie de la fiche ? Est-ce parce qu'il y a le "2" ?
S'il y avait 4 valeurs textes différentes cela marcherait quand même ?
J'aimerai juste comprendre comment la boucle fonctionne
Merci
Re,
Ce code peut être utilisé pour tous les fichiers, mais c'est ce que je été disais plus haut pour l'erreur.
Sera t'elle lié au nombre de fiche ou à une valeur non trouvée
Si non j'imbrique 2 boucles, 1 pour traiter les fichiers du dossier, l'autre pour traiter 4 fiches max.
C'est à la fin des 4 fiches que je vérifie si une erreur a eu lieu
@+
Je peux utiliser cette version de la macro sur mes fichiers à 4 fiches, et l'autre sur les fichiers à 1 fiches, ce n'est pas un soucis.
Mais du coup une question supplémentaire, si j'ai un fichier à 2 fiches, le code fonctionnera aussi ?