VBA : créer colonne (et les nommer) si colonne de référence vide

Bonjour Dan,

encore merci de suivre mon projet et de m'aider comme vous le faites.

Concernant l'organisation de la base de données, oui Jean Paul et vous avez raison : cette organisation en colonnes est trop compliquée et surtout risque vite de devenir ingérable (j'ai vu des lignes et des colonnes toute la nuit ! )

Que pensez vous dans ce cas, de reprendre le formulaire dans son intégralité avec la remontée de l'ensemble des informations de la même manière que pour le formulaire de renouvellement et en y ajoutant les champs relatifs aux avenants ? Ou peut être est il possible de ne reprendre que les champs des avenants sur les petits formulaires et de reprendre l'ensemble des informations de la ligne du contrat concerné sans reprendre l'ensemble des champs sur le formulaire ?

Autre petit point, j'ai voulu reprendre le code que vous avez mis dans le userform Avenant dans le userform Renouvellement, mais j'ai ce message d'erreur que je n'arrive pas à solutionner

ERREUR 438 sur la ligne : prem = c.Adress

13erreur.txt (4.83 Ko)

re

j'ai vu des lignes et des colonnes toute la nuit !

excellent !

Autre petit point, j'ai voulu reprendre le code que vous avez mis dans le userform Avenant dans le userform Renouvellement, mais j'ai ce message d'erreur que je n'arrive pas à solutionner

Ben simplement il faut deux D à Address.... regardez dans le fichier TXT que j'ai posté

Que pensez vous dans ce cas, de reprendre le formulaire dans son intégralité avec la remontée de l'ensemble des informations de la même manière que pour le formulaire de renouvellement et en y ajoutant les champs relatifs aux avenants ? Ou peut être est il possible de ne reprendre que les champs des avenants sur les petits formulaires et de reprendre l'ensemble des informations de la ligne du contrat concerné sans reprendre l'ensemble des champs sur le formulaire ?

Je pense qu'en premier il faut figer votre tableau. Après on voit avec VBA (trop souvent les utilisateurs font l'inverse et là... faut tout refaire).

Ensuite non, à ce stade je ne vois pas le besoin de refaire. C'est surtout le concept de l'identification du num de contrat et son avenant car c'est lui qui va piloter VBA

Ben simplement il faut deux D à Address.... regardez dans le fichier TXT que j'ai posté

Nom di diou !!!!!!! j'y ai passé toute ma soirée !!!! pfffff !!! j'y arriverai un jour !!

Ok, alors allons y avec une nouvelle ligne pour chaque changement, ce sera effectivement plus simple. Il suffit donc d'ajouter un seul pavé des 5 colonnes concernant les changements. Voulez vous que je vous refasse un fichier ?

Il suffit donc d'ajouter un seul pavé des 5 colonnes concernant les changements.
Voulez vous que je vous refasse un fichier ?

Oui je pense que c'est préférable.
je suppose qu'il reprendra aussi tout ce qui a été fait

Bonjour Dan,

J'ai refait le fichier de travail, cela me fait de l'entrainement, mais je rencontre plusieurs problèmes :

- les lv ne s'alimentent pas dans ce fichier de travail, alors que sur mon vrai fichier tout fonctionne parfaitement (j'ai pourtant fait des copier/coller des codes...)

- Je n'arrive plus à alimenter la base de données (onglet "Form"), les codes ont beaucoup changé et je ne suis pas assez calée pour reprendre selon votre méthodologie (qui est forcément bien meilleure que la mienne)

- le tableau est stabilisé, vous verrez sur les dernières lignes de la base de données, j'ai mis quelques lignes pour 1 même personne.

Dites moi si cela convient pour avancer

Encore merci à vous et bon week end

17eactforum.xlsm (114.30 Ko)

Bonjour

- les lv ne s'alimentent pas dans ce fichier de travail, alors que sur mon vrai fichier tout fonctionne parfaitement (j'ai pourtant fait des copier/coller des codes...)

de quelles listview parlez-vous ? Celle dans l'UF avenantUF fonctionne bien

Je n'arrive plus à alimenter la base de données (onglet "Form"), ....

Si cela fonctionne mais il y a une chose à corriger. Allez dans l'USF AvenantsUF et dans le code Private Sub ListViewResultats_ItemClick(ByVal Item As MSComctlLib.ListItem), vous devez désacriver ou supprime la ligne --> Dim ContratLgn As Integer

- le tableau est stabilisé, vous verrez sur les dernières lignes de la base de données,

Ok. je regarde votre fichier

Bonjour Dan,

J'ai encore du faire une bétise : sur ce fichier, je n'ai plus aucune listview qui s'alimente, que ce soit sur AvenantsUF, SortiesUF ou RenouvellementUF

Je n'ai pas de souci dans l'ufavenants avec votre dernier fichier posté
D'où la question de savoir si c'est votre bon fichier ou pas


Sinon j'avance dans votre fichier mais j'ai une question.

Dans l'UFavenant, lors de la sélection du contrat dans le listview, vous ouvrez un message qui demande si vous avez déjà un avenant ou pas.
Ne serait-il pas intéressant que si la réponse est oui, le n° de changement existant dans la feuille Form soit récupéré dans la textbox N° de l'uf HistavtUf et incrémenté d'une unité ?

Donc
- si pas de numéro de changement : on aura 1
- Si numéro de changement existant on aura : N° changement +1

Oui, c'est bien le bon fichier. Je viens de refaire un essai, cela fonctionne bien sur l'AvenantUF mais pas sur les 2 autres (renouvellementUF et SortiesUF). J'essaie de trouver l'erreur que j'ai faite

C'est génial : vous pensez à tout ! oui super d'incrémenter automatiquement de +1

....l'AvenantUF mais pas sur les 2 autres (renouvellementUF et SortiesUF).

Je n'ai pas encore été modifier de ce coté mais là déjà une chose, à quoi cela vous sert les codes UserForm_MouseMove.
Si c'est pour mettre de la couleur au label, faites le directement dans les propriétés de l'UF plutôt que faire un code qui d'ailleurs s'éxécute à chaque fois que vous bougez la souris.

Pour l'UF renouvellement, il manque un R à --> Private Sub BtnRechercheR_Click()
ensuite plus bas, ce n'est pas With ListViewSorties mais with LV_Renouvellement

Bon je repars sur les USF avenant et historique

Pour les couleurs : sur le vrai projet, lorsque l'on passe la souris sur l'un des boutons, il devient blanc et redevient coloré lorsque la souris est sur un autre endroit de l'UF

J'ai modifié mes erreurs. C'est incroyable, je relis pourtant 50 fois....

Bonjour,

Pour les couleurs : sur le vrai projet, lorsque l'on passe la souris sur l'un des boutons, il devient blanc et redevient coloré lorsque la souris est sur un autre endroit de l'UF

Oui j'avais compris. Mais vous devez comprendre qu'une fois l'USF ouverte, le moindre déplacement de votre souris sur l'écran déclenchera le code et çà que vous soyez sur une textbox ou pas.


Bon là il faut se poser un peu concernant l'ID dont on a parlé.

Partons de l'USF Avenants :
En premier, il faut savoir si à chaque nouvel avenant vous voulez conserver l'ancienne ligne ou pas :
- Solution 1 : vous n'avez qu'une seul ligne de contrat et à chaque nouvel avenant on incrémente le N° de changement en AN
- Solution 2 : vous ajoutez chaque fois une nouvelle ligne à chaque nouvel avenant dans le contrat et la colonne AN mentionne le nouveau N° de changement incrémenté. Donc au final chaque contrat pourrait avoir plusieurs lignes.

La solution 1 est la plus simple. La listview n'aura qu'une seule ligne de contrat mentionnée
La solution 2 est plus compliquée car elle nécessite de savoir si la listview doit reprendre chaque ligne du contrat où un n° de changement est mentionné ou si on ne mentionne que le dernier N° de changement effectué. Donc code actuel à revoir.

Exemple : si votre contrat C-124_P-3 comporte 3 changements, on pourrait avoir dans la listview 3 lignes du même contrat ou seulement la ligne du dernier changement


NB : Petite question dans votre dernier fichier, pour le contrat B124_J-6 le n° de changement en AN6 ne devrait pas être 1 au lieu de mettre votre 1 sur AN7

Hello Dan !

J'espère que vous profitez tout de même de votre week end

Ok, je vais regarder pour les couleurs, je n'ai pas trouvé comment faire hier. Je comprends bien la lourdeur pour l'application.

Concernant les avenants, oui il nous garder l'historique de chaque avenant, c'est pour cela qu'au départ j'étais partie sur 1 ligne par contrat (+ les lignes de renouvellements) et des colonnes pour chaque avenant.

Il semble plus simple de faire une seule ligne pour chaque événement du contrat (sauf pour les sorties, j'ai pu m'en sortir).

Ainsi donc :

  • Nouveau = 1 ligne
  • Renouvellement = 1 ligne
  • Chaque avenant = 1 ligne

Pour l'affichage dans la listeVIew, ce n'est pas très grave s'il y a plusieurs lignes pour un même nom. La consigne sera de prendre le dernier numéro . Il faut donc rajouter les dates de début et de fin dans la listview de l'AvtsUF

Pour la question concernant le dernier fichier, je ne comprends pas , je viens de le charger à nouveau : le numéro de changement (1) est bien sur la cellue AN7, correspondant au type de demande "Avenant"

Ne serait pas plus facile pour vous que je vous transmette la vraie version ? (mais pas sur le forum)

Encore un milliard de merci

Re,

je vais regarder pour les couleurs, je n'ai pas trouvé comment faire hier.

Il faut comprendre le but final que vous recherchez.


Concernant les avenants, oui il nous garder l'historique de chaque avenant, c'est pour cela qu'au départ j'étais partie sur 1 ligne par contrat (+ les lignes de renouvellements) et des colonnes pour chaque avenant.

Il semble plus simple de faire une seule ligne pour chaque événement du contrat (sauf pour les sorties, j'ai pu m'en sortir).

Donc si j'ai bien compris, il n'y aura que 3 lignes max par contrat dans la feuille Form.
Nouveau : une seule ligne sans N° de changement
Renouvellement : une seule ligne sans N° de changement
Avenant : Une seule ligne avec N° de changement qui varie.

Correct ?


Pour l'affichage dans la listeVIew, ce n'est pas très grave s'il y a plusieurs lignes pour un même nom. La consigne sera de prendre le dernier numéro . Il faut donc rajouter les dates de début et de fin dans la listview de l'AvtsUF

Ok. On rajoute les colonnes. Donc modifications de code à effectuer


le numéro de changement (1) est bien sur la cellue AN7, correspondant au type de demande "Avenant"

OK. Je n'avais pas fait attention au renouvellement. Point clos


Un autre point que j'ai remarqué, c'est la numérotation de contrat. Là on a un souci pour moi car vous ajoutez le numéro de ligne dans la formule.
Pas sûr que vous y avez pensé mais si par exemple vous triez la base pour une raison quelconque, tous vos numéros de contrat deviendront incorrects.
Idem lorsque vous allez changer d'année puisque vous incluez l'année via la formule Aujourdhui()...

Que veut dire digramme dans votre feuille paramètre puis aussi le chiffre 1 derrière les lettres en colonne 7 (A1, B1....)

Désolé des interrogations mais il faut figer tout cela

Vraiment merci Dan,

Concernant les avenants, oui il nous garder l'historique de chaque avenant, c'est pour cela qu'au départ j'étais partie sur 1 ligne par contrat (+ les lignes de renouvellements) et des colonnes pour chaque avenant.

Il semble plus simple de faire une seule ligne pour chaque événement du contrat (sauf pour les sorties, j'ai pu m'en sortir).

Donc si j'ai bien compris, il n'y aura que 3 lignes max par contrat dans la feuille Form.

Nouveau : une seule ligne sans N° de changement

Renouvellement : une seule ligne sans N° de changement

Avenant : Une seule ligne avec N° de changement qui varie.

Correct ?

Non ce n'est pas tout à fait cela :

1 contrat initial

6 renouvellements possibles (à l'identique du contrat initial, seules les textbox de la dernière ligne du formulaire vont changer)

X changements possibles sur le dernier renouvellement enregistré

Exemple : Ademarrepas Mamoto :

1èr contrat du 01/01/2022 au 31/12/2022

1er renouvellement : du 01/01/2023 au 31/12/2023

2ème renouvellement : du 01/01/2024 au 31/12/2024

Durant cette dernière période :

  • 1ère changement : Structure
  • 2ème changement : le niveau

3ème renouvellement : du 01/01/2025 au 31/12/2025

Etc

Pour la numérotation des contrats : vous avez raison, il faut que je revoie cela.

Les digrammes sont les 2 premières des structures réelles (dans ce fichier je travail, j'ai mis A1, A2 pour faire la distinction avec le nom complet de la structure : A, B, C)

Bonjour

Merci de vos explications.

1 contrat initial

6 renouvellements possibles (à l'identique du contrat initial, seules les textbox de la dernière ligne du formulaire vont changer)

X changements possibles sur le dernier renouvellement enregistré

OK mais dans un Contrat nouveau, vous pourriez très bien avoir un avenant avant le renouvellement éventuel
Et si renouvellement, les avenants sont effectués sur ce renouvellement

En gros un avenant peut-être relié au nouveau contrat ou au renouvellement de contrat

C'est vraiment important de figer la référence pour la suite.
Peut-être faire référence à la lettre N pour nouveau, A pour avenant, R pour renouvellement

Rechercher des sujets similaires à "vba creer colonne nommer reference vide"