VBA report données, création dossier et renommage fichier

Bonjour,

Dans le cadre de la gestion de mes travaux, j’aurai besoin de certaines mise en place par VBA afin de réaliser des actions automatiques qui simplifieront l’initiation de mes documents et dossiers et me feront gagner un temps précieux.

Les fichiers en pièces jointes sont un exemple pour être plus parlant.

J’ai insérer une simple macro d’incrémentation dans chacun des onglets du tableur XLS.

Le but pour moi est d’initier chaque chantier à partir d’un onglet de tableur unique, et qu’ensuite une ou plusieurs macros (ou fonctions) me permettent de réaliser les actions suivantes :

1 – À partir de l’onglet « LISTE GLOBALE », une fois qu’une nouvelle ligne est remplie, je voudrai que lorsqu’un document à initier est estampillé « OUI », alors en actionnant une macro l’onglet correspondant au registre de gestion de ce document propre soit incrémenté et renseigné avec les indications des cellules correspondantes de l’onglet « LISTE GLOBALE ». Dans l’exemple j’ai tout fait manuellement.

2 – Après incrémentation de chaque registre en fonction des choix « OUI » de l’onglet « LISTE GLOBALE », j’aimerai qu’un nouveau dossier soit créé pour chaque travail nécessitant un document à initier.

Ce dossier serait placé sur un endroit de mon disque réseau et s’appellerai : « N° CHRONO » (trois chiffres) « ANNÉE » « - » « Abréviation du document à initier » « -» « NOM ENTREPRISE » « - » « DÉNOMINATION TRAVAUX ». Soit pour la ligne 1 : 001-2015 – Av Com – AAAAA – TRAVAUX 1 et 001-2015 – Pl Prev – AAAAA – TRAVAUX 1.

3 – Dans chaque nouveau dossier créé, insérer (faire une copie depuis un emplacement fixe de mon disque réseau) le document PDF correspondant (voir pièces jointes) et le renommer de la même manière qu’au point 2.

Voilà, je ne pense pas que les commandes soient trop compliquées mais j’ai du mal à les trouver…

Merci d’avance pour vos réponse.

Bonsoir,

Ci-joint un début de proposition, à tester (fait sous 2007, peut-être certains instructions non compatibles).

nickal a écrit :

Voilà, je ne pense pas que les commandes soient trop compliquées mais j’ai du mal à les trouver…

Dis comme ça, on est motivé pour aider ! C'est un petit peu compliqué quand même

Bonne soirée

Bouben

Bonjour,

après un petit temps mort dans ce projet, j'ai pris le temps de regarder le code et c'est relativement clair et efficace.

Il y a deux petites choses qui me pose soucis et que j'ai un peu de mal à résoudre :

1 - Private Enum E_Type, E_AvisComm, E_AutoAcces, E_PlanPrev, End Enum fait référence à quoi exactement ?

Quand je met OUI dans une des cases de mon onglet LISTE GLOBALE, le dossier généré porte toujours comme nom de fichier ***Av com***, c'est à dire le dernier de la liste de la Private Sub CreerRep(piLig As Integer)...Le nom normé ne varie pas.

Du coup je n'arrive pas à avoir dans le nom de mon dossier l'abréviation qui correspond au type de document (Av com pour AVIS DE COMMENCEMENT, Aut ac pour AUTORISATION D'ACCES etc.

2 - Selon le type de dossier (AVIS DE COMMENCEMENT, AUTORISATION D'ACCES...), celui-ci ne sera pas créé au même emplacement. Et là encore je ne vois pas comment modifier le chemin de création du répertoire en fonction du type de dossier...

D'avance merci si la solution est à portée de code.

bonne journée.

Bonjour,

Ca fait toujours plaisir d'avoir des nouvelles ... même 3 mois après

 Private Enum E_Type, E_AvisComm, E_AutoAcces, E_PlanPrev

Dans la version précédente, cette belle énumération était pensée, mais non utilisée ! D'où l'incompréhension.

Pour éviter ce genre de boulette, bien penser à rendre obligatoire la déclaration des variables (cf PJ).

Ci-joint une nouvelle version à tester. Les modifications sont précisées "V0.2"

A bientôt ?

Bouben

declarationvariablesobligatoires

Merci pour la rapidité, je me garde ça pour les vacances...

Bonnes fêtes.

Bonjour,

Ça fonctionne parfaitement, effectivement c'est nickel et explicite.

Par contre pour faire en sorte que selon le document concerné (avis de commencement, autorisation d'accès etc.) le répertoire se crée à un emplacement différent et que le modèle à copier soit lui aussi à aller prendre dans un emplacement particulier, il faut boucler de quelle manière ?

Bonjour,

Ci-joint la V0.3 à tester.

Les 3 chemins à modifier dans la procédure

Private Sub CreerRep(peType As E_Type, piLig As Integer)

Exemple :

        'V0.3
        'A modifier, avec le répertoire contenant le modèle
        sCheminModele = "C:\TEMP\GestionTravaux\Modele1\"
        'A modifier, avec le répertoire final
        sCheminRep = "C:\TEMP\GestionTravaux\Final1\"
        'V0.3-fin

Bonne journée

Bouben

Merci, j'ai regardé le code et ça devrait être au top. J'essaie dès que je peux...

Bonnes fêtes.

Bonjour,

Alors, je viens de tester la V3 (après adaptation à mon tableur final) et c'est exactement ce qu'il me fallait (même mieux car il y'a la vérification de l'existence du dossier à créer).

J'ai donc envie d'abuser sur 2 petits points...

j'ai une particularité sur l'onglet "PLAN DE PREVENTION" : il faudrait que le dossier généré ne porte pas le numéro de la colonne A de l'onglet "LISTE GLOBALE", mais le numéro suivant de l'onglet "PLAN DE PREVENTION" (car je peux en créer sans passer par l'onglet "LISTE GLOBALE")...

Et puis comment faire pour que les choix "OUI" ou "NON" des colonnes 7 à 9 renvoient un message d'erreur si les cellules des colonnes A à F de la ligne concernée ne sont pas toutes remplies ?

Encore merci pour le travail.

Bonjour,

Ci-joint une nouvelle version à tester.

Comprend le premier point : contrôle + message

Pour le second point :

nickal a écrit :

j'ai une particularité sur l'onglet "PLAN DE PREVENTION" : il faudrait que le dossier généré ne porte pas le numéro de la colonne A de l'onglet "LISTE GLOBALE", mais le numéro suivant de l'onglet "PLAN DE PREVENTION" (car je peux en créer sans passer par l'onglet "LISTE GLOBALE")....

Je ne vois pas comment on peut déterminer la ligne correspondante entre les 2 onglets, si le n° n'est pas fiable.

Exemple :

  • j'ai 3 lignes "Plan de prévention" dans l'onglet la liste globale (n° chrono : 1, 2, 3)
  • j'ai 3 lignes dans l'onglet "Plan de prévention", avec n° chrono 7, 8, 9
En modifiant le OUI/NON (liste globale) du n°1, comment peux-tu savoir que cette ligne correspond au n°7 ?

En attente d'infos complémentaires ...

Bonne journée

Bouben

Bonsoir,

Pour la V0.4, le code pour la message box si une cellule de la ligne concernée n'est pas remplie c'est parfait.

Pour mon autre soucis c'est juste que si l'onglet "PLAN DE PREVENTION" en est au numéro chrono X (qui ne correspond pas forcément au nombre de "OUI" de l'onglet "LISTE GLOBALE" car c'est le seul onglet que je peux incrémenter pour des raisons réglementaires sans passer par l'onglet "LISTE GLOBALE"), alors si je crée une ligne, il faut que la privateSub AlimCible incrémente la cellule A5 de l'onglet "PLAN DE PREVENTION" avec X+1.

Sinon, d'une manière générale, la message box pour dire que "Le répertoire existe déjà" est parfaite, mais comment faire pour que lorsque cette message box se déclenche, alors l'onglet correspondant au "OUI" concerné ne s'incrémente pas ? Ceci afin de ne pas remettre un ligne identique .

Si des explications supplémentaires sont nécessaires je suis là...

Merci d'avance et bonne soirée.

Bonsoir,

Ci-joint une nouvelle version à tester.

Pas clair à 100 %, j'espère que c'est ça l'idée ...

Bonne soirée

Bouben

Bonjour,

Merci pour le version 5. J'ai bien vu la différence mais je me suis un peu emballé dans mes dernières explications car en fait la fonction que je voulais fonctionne parfaitement en changeant le "For iCol = 2 to 6 dans la Private sub alimCible pour la récupération des autres valeurs.

En fait, la petite chose qui me manque est la suivante :

Lorsque la Message box "Le répertoire existe déjà" apparaît, il faudrait qu'en plus une phrase dise "Donc il n'y aura pas d'entrée de créer dans le registre correspondant" et donc que cette entrée de registre ne se crée pas, car sinon, malgré le répertoire qui existe déjà et qui donc n'a pas à être remplacé, et bien une nouvelle entrée se crée.

Je mets la V0.6 avec laquelle je travail...

Par contre la version V0.5 me servira à autre chose...

Merci d'avance.

J'allais oublier: pour la vérification du remplissage de la ligne concernée, je ne saisie pas pourquoi c'est 65 to 70 (car dans ma version finale j'aurais une petite modification à faire...).

Merci.

Bonjour,

Pour la dénomination C65 to C70 des cellules à vérifier c'est bon. Par contre pour ne pas incrémenter le registre concerné si le répertoire est déjà créé, malgré pas mal de tentative avec des Exit Sub ou autre commandes de ce genre je ne trouve pas...

Bonnes fêtes.

Rechercher des sujets similaires à "vba report donnees creation dossier renommage fichier"