Création de macro VBA - Suivi de prestataires

Sur le fichier de renouvellement Prest intervention et sur les lignes que vous rapatriez en macro, il n’y a pas la mise en forme souhaitée des colonnes de O à BL. C’est à dire en ligne 6/7/8… etc en fonction du nombre de renouvellement qui pourrait tomber. La mise en forme est seulement faite sur la première ligne, soit L5. Serait-il possible de faire pareil pour toutes les lignes qui viendraient s’ajouter dans le fichier ?

Pour le 2ème point, chaque contrat doit être recopier autant de fois que les mois inclus dans les dates de contrat dans l’onglet facturation. C’est l’exemple dans le fichier PRESTA_2021-5.
Mon PRESTA 1 à un contrat du 30/01/2021 au 31/03/2021 donc j’obtiens bien un 1 dans colonne P de Etat contrat, dans colonne Q Etat contrat, dans colonne R Etat contrat donc l’idée est d’obtenir 3 lignes dans l’onglet facturation puisque mon contrat intervient bien sur janvier/février et mars.

Merci d’avance

Peux tu me donner un exemple concret de ce que tu attends sur ces 2 points je n’arrive pas à comprendre
Quelle mise en forme de O à BL ???

Du fichier source mais les colonnes utilisées vont jusqu’à AA et non BL

Du fichier cible aucune mise en forme sur ces colonnes seules les 4 premières lignes ont la liste des jours sur 2 mois

Je nage complètement

Pour le 2° point que dois dupliquer : données sources à spécifier

« d’obtenir 3 lignes dans l’onglet facturation puisque mon contrat intervient bien sur janvier/février et mars. »

C’est 3 lignes sont constituées de quelles données à prendre où ?

Merci de me fournir un exemple (source et cible)

Bonjour,

Pour le 1er point, il faut venir faire la même mise en forme que la ligne 5 du fichier cible pas du fichier source. Puisque les colonnes de O à BL n’existent que dans le fichier cible.
« La mise en forme est seulement faite sur la première ligne, soit L5. Serait-il possible de faire pareil pour toutes les lignes qui viendraient s’ajouter dans le fichier ? » Il faut donc la dupliquer sur les lignes suivantes autant de fois qu’il y a de contrat, soit sur les lignes 6,7,8,et ainsi de suite s’il y a.

Pour le 2ème point, tout est dans le fichier PRESTA_2021-5 onglet « Etat contrat ». Comme indiqué :

Comme vous le voyez, les noms des colonnes dans « Etat Contrat » sont les mêmes de A à N dans « Facturation » de B à O. Donc ce sont ces lignes qu’il faut dupliquer en y ajoutant en colonne le mois (format date au 01/MM/AAAA) de facturation (colonne A dans « Facturation ») à partir de l’information contenue dans les colonnes P à AA onglet Etat contrat.
Le résultat de ce que je souhaite obtenir en fonction des éléments renseignés dans l’onglet « Etat contrat » est déjà dans l’onglet facturation.
Est-ce clair?

merci d’avance,

PRESTA_2021-5.xlsm (62,1 Ko)

Bonjour

Pour le 1° la ligne 5 du fichier cible de la colonne O à BL n’a aucune liste déroulante juste du quadrillage c’est tout
Dans la nouvelle version ci-jointe à chaque enregistrement intégré colone A à N celle-ci est donc recopié en l’état pour toutes ces colonnes

Pour le 2°

« Le résultat de ce que je souhaite obtenir en fonction des éléments renseignés dans l’onglet « Etat contrat » est déjà dans l’onglet facturation. »

ET donc ne faut il pas vérifier que les résultats à obtenir dans l’onglet « Facturation » ne soient pas déjà présents ce qui est le cas avec ton fichier selon tes propos ci-dessus ?

Le traitement à mettre en place ne doit il pas nettoyer l’onglet de destination avant une nouvelle intégration au risque de créer des doublons ?

Sinon on peux vérifier la présence de la ligne à mettre en place sur la base des données « Mois » et « NOM PRENOM » et ne le réaliser que si ce n’est pas le cas

Mais le plus simple serait de réinitialiser l’onglet « Facturation » et de le réalimenter intégralement sur la base des données onglet « Etat contrats »

Merci de me dire

Ci-joint une nouvelle version pour l’évolution du 1° point mis en place

Testes et dis moi

PRESTA_2021-5.xlsm (67,3 Ko)

Je te propose pour le 2° point cette version ci-jointe avec la réinitialisation de l’onglet « Facturation » à chaque activation du bouton « Facturation » de l’onglet « Etat contrats »

Testes et dis moi

PRESTA_2021-6.xlsm (70,4 Ko)

Bonjour,

Pour le 1er point, dans le fichier modèle il y a bien une liste déroulante (voir capture ci-jointe).

Pour le 2ème point,
« ET donc ne faut il pas vérifier que les résultats à obtenir dans l’onglet « Facturation » ne soient pas déjà présents ce qui est le cas avec ton fichier selon tes propos ci-dessus ? »
Oui cela peut être bien de vérifier que la ligne n’est pas déjà présente.
« Le traitement à mettre en place ne doit il pas nettoyer l’onglet de destination avant une nouvelle intégration au risque de créer des doublons ? »
Non, car des informations seront contenus dans les colonnes suivantes de l’onglet « Facturation » (de P à AB) donc il ne faut pas supprimer à chaque fois les données.

Merci d’avance,

Bonjour

Ci-joint une version qui maintient et recopie sur chaque enregistrement intégré en fichier cible les listes déroulantes de la ligne 5 colonnes O à BL

Pour le 2° point lorsque je te propose une réinitialisation de l’onglet « Facturation » c’est uniquement pour les colonne A à O
A partir de la colonne P celles-ci ne sont pas touchées

Fais des testes et dis moi

PRESTA_2021-6.xlsm (70,3 Ko)

Super, pour le 1er point ça fonctionne parfaitement. Merci,

Et, je viens de faire des tests. ça m’a l’air très bien tout fonctionne même si je fais une modification de date dans l’onglet Etats contrat donc c’est top.
Serait-il possible d’appliquer la mise en forme dès lors que les lignes sont ajoutées à l’onglet « Facturation » et serait-il possible de supprimer la mise en forme si on vient modifier le contrat en réduisant les dates?
Merci,

PRESTA_2021-6.xlsm (72,0 Ko)

Merci pour ce retour

Si j’ai bien compris tes dernières demandes testes ce fichier ci-après et dis moi

PRESTA_2021-6.xlsm (68,3 Ko)

Merci, c’est parfait.
Par contre, je viens de tout retester et en cliquant sur le bouton « Facturation » pour le Presta 2, il y un bug. Car les lignes sont dédoublées dans l’onglet « Facturation ». Il ne faut qu’une seule ligne par mois. Pouvez-vous voir cela svp ?
Fichier joint :
PRESTA_2021-6 (1).xlsm (72,3 Ko)

Merci,

Merci pour ton retour

Pour ton doublon voir du côté des données source onglet « Etat contrats » la « PRESTA2 » pour le mois de juillet est aussi en double sur 2 lignes :

Donc à la restitution onglet « Facturation » ce doublon est recopié

Idem pour juin :

Pour moi le fonctionnement est normal

Regardes et dis moi

Sinon cette version ci-jointe sur la base des NOM PRENOM et des mois traités élimine tous les doublons présent dans l’onglet « Etat contrats »
Ce n’était prévu dans ta demande pour ce point 2

Seule l’alimentation de l’onglet « Facturation » devait être réalisé mais sans effectuer de filtre sur la base de toutes les données onglet « Etat contrats »

J’ai donc rajouté cette option

Testes et dis moi

PRESTA_2021-7.xlsm (67,5 Ko)

Malheureusement, cela ne fonctionne pas car si j’ai des saisies dans les colonnes à partir de P de l’onglet « Facturation » ça garde les données mais sur les lignes ajoutées alors qu’elles faisaient références à la ligne du dessous.

La il faudra choisir ou les doublon et l’intégralité des données qui vont avec ou pas de doublon mais pour les seuls enregistrement conservées les données à partir de P qui correspondent les autres en doublon ne seront pas restitués ni leur valeur à partir de cette colonne pas d’autre choix

Désolé je n’ai pas d’autre solution

Maintenant si tu vois autre chose merci de m’expliquer exemples à l’appui

Bonjour,

Dans ce cas la version du fichier PRESTA_2021-6 me convient mieux. On ne peut pas écraser les données déjà renseignées dans l’onglet facturation.
N’est-il pas possible de mettre une condition de copie dans « Facturation » en disant que si :

  • NOM PRENOM (col B)
  • MOIS (Col A)
    en doublon, alors on ne garde qu’une ligne dont la date du contrat est la plus lointaine.

Exemple dans le fichier pour le PRESTA 2 : la date la plus lointaine est bien celle du 23/07/2021 donc je ne compte pas le doublon 1 de « Etat contrat » en juillet.

Je ne sais pas si c’est possible, mais ça rendrait les choses beaucoup plus facile en tout cas.
Peut-être avez-vous une autre solution, auquel cas je suis à l’écoute.

Merci,

Bonjour

« en doublon, alors on ne garde qu’une ligne dont la date du contrat est la plus lointaine. »

Onglet « Etat contrats » date contrat Début colonne M ou Fin colonne N ?

Merci de préciser

Cette version prenant en compte pour les doublons les dates de fin pour ne conserver que l’enregistrement qui a celle la plus éloignée

Testes et dis moi

PRESTA_2021-8.xlsm (92,0 Ko)

C’est parfait pour moi écoutez, je ne vois rien d’autres à dire pour le moment, je vais tester cette fois-ci avec mes collaborateurs et je vous dirai si il y a quoique ce soit.

Merci pour ce retour
N oublies pas de valider
A ta disposition pour tout besoin

Bonjour,

Je me permets de revenir vers vous au sujet de la macro « Facturation ».

Elle écrase toutes mes données (Col P à AB) si je trie mon tableau dans l’onglet « Facturation » par mois puis par Nom Prénom et que j’appuie sur « Facturation » pour actualiser.
Il faudrait vraiment que cela garde les informations pour chaque collaborateur pour chaque mois.
Dans un précédent fichier, j’avais ce code et cela ne venait pas altérer les données déjà insérées :

Option Explicit

Sub Dispatch_facturation()
Dim dlg As Integer
Dim cel As Range, plage As Range

With Worksheets(« Contrats presta »)
Set plage = .Range(« N4:Z » & .Range(« A » & .Rows.Count).End(xlUp).Row)
dlg = Feuil2.Range(« A » & Feuil2.Rows.Count).End(xlUp).Row + 1
For Each cel In plage
If cel.Value = 1 Then
.Range(« A » & cel.Row & « :K » & cel.Row).Copy Feuil2.Range(« B » & dlg)
Feuil2.Range(« A » & dlg) = .Cells(1, cel.Column).Value
dlg = dlg + 1
End If
Next cel
End With
Call Trier
Range(« A1 »).Select
End Sub

Sub Ajouter()
Dim plage As Range, cel As Range
Dim dlg As Integer

Call Defiltre

'vérification que le contrat existe
Set plage = Feuil2.Range(« B2:B » & Feuil2.Range(« B » & Feuil2.Rows.Count).End(xlUp).Row)
If WorksheetFunction.CountIf(plage, Feuil1.Range(« A » & ActiveCell.Row)) > 1 Then
MsgBox « Le Contrat existe déjà dans la feuille facturation ! Vous ne pouvez pas l’ajouter »: Exit Sub
End If

With Feuil1
Set plage = .Range(« M » & ActiveCell.Row & « :X » & ActiveCell.Row) '.Range(« A » & .Rows.Count).End(xlUp).Row)
dlg = Feuil2.Range(« A » & Feuil2.Rows.Count).End(xlUp).Row + 1
For Each cel In plage
If cel.Value = 1 Then
.Range(« A » & cel.Row & « :K » & cel.Row).Copy Feuil2.Range(« B » & dlg)
Feuil2.Range(« A » & dlg) = .Cells(1, cel.Column)
dlg = dlg + 1
End If
Next cel
End With
Application.ScreenUpdating = True
Call Trier
End Sub

Sub Trier()
Application.ScreenUpdating = False
With Feuil2.ListObjects(« Tableau2 »).Sort
.SortFields.Clear
.SortFields.Add Key:=Feuil2.Range(« Tableau2[Mois] »), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Application.ScreenUpdating = True
End Sub

Sub Defiltre()

Application.ScreenUpdating = False

'on enlève les filtres dans la feuille facturation
Feuil2.Select
On Error Resume Next
Feuil2.ShowAllData
Feuil1.Select
On Error GoTo 0
Application.ScreenUpdating = True
End Sub

Merci de votre retour.