Simplification fichier avec macro

Bonjour,

Utilisant un fichier excel avec macro depuis plusieurs années, je vois de plus en plus les difficultés de celui-ci.

Plusieurs feuilles reprennent les mêmes informations (la macro copie les informations dans la feuille « tableau général" qui reprend l 'ensemble des informations et copie également les informations dans une feuille dédié à chaque produit spécifique)

Je souhaiterai toujours avoir ce système mais avec un lien direct entre les 2

Je m’explique, quand je dois modifié certaines entrées à l'unité, il me faut changer les données dans les différentes feuilles manuellement alors que je souhaiterai pouvoir les changer dans la feuille "tableau général" et que celles-ci se changent automatiquement dans les autres feuilles.

Pourriez-vous donc me simplifier mon fichier ou me proposer un autre type de mise en forme.

Merci beaucoup pour votre aide car moi j’ai atteint malheureusement les limites de mes connaissances.

23stock-test.zip (1.08 Mo)

Bonjour,

A voir le tableau général colonne C, on est en terre de connaissance là...

Il faudrait en premier comprendre le fonctionnement du fichier. je suppose que vous partez de la feuille Choix ?
A première vue, un truc qui gêne c'est qu'il n'y a pas de code article

Sinon il y a du boulot là...

bonjour,

Oui je pars de la feuille choix .
Qui est validée et envoie les données vers la feuille récap choix grace à une macro.
De cette feuille recap choix, des modifications peuvent etre apportée aux données avant la validation.
une fois la validation effectuée, une macro copie les données de la feuille recap choix vers la feuille tableau général ainsi que vers une des autres feuilles (qui est selectionnée par la macro par rapport a la dénomination de l'article)

Mon problème est que "l'article copié" est un ensemble d'article (un peu comme un colis ikea :p)

et mon plus gros soucis est que lorsque je veux pour une raison ou un autre modifier un encodage, je suis obligé de le modifier dans la feuille tableau général et dans la feuille à laquelle l'article se rapporte. Ce qui est fastidieux et source d'erreur

et je ne peux pas ne pas avoir des feuilles séparée car chaque ensemble est composé de pieces spécifiques que je dois pouvoir compté (ce qui est fait dans les différentes feuilles)

J espere avoir été clair....

Bonjour

Oui je pars de la feuille choix .Qui est validée et envoie les données vers la feuille récap choix grace à une macro.
De cette feuille recap choix, des modifications peuvent etre apportée aux données avant la validation.

Oui j'ai vu. Cela me paraitrait intéressant de revoir la manière de fonctionner car en gros vous utiliser trois deux feuilles alors que vous pourriez simplifier en utilisant une seule. Mais cela n'est pas l'objet de votre demande... donc à voir si cela vous intéresse.

une macro copie les données de la feuille recap choix vers la feuille tableau général ainsi que vers une des autres feuilles (qui est selectionnée par la macro par rapport a la dénomination de l'article)

Oui et c'est cela que l'on peut adapter

Vu que, si je ne me trompe, les entêtes des colonnes A à N sont identiques entre celles du tableau général et celles des feuilles 2m, 3m, ...., l'idée serait celle -ci :
1. une macro envoie les données vers la feuille tableau général
2. une macro envoie du tableau général vers les feuilles selon la valeur de la colonne D de la feuille Tableau général. Cette macro ne toucherait pas les colonnes contenant des formules donc de O à....

Si vous modifiez quelque chose dans le tableau général, vous pourrez réactualiser toutes les feuilles selon la macro du point 2

Mes Questions :
- est-ce que les listes reprises en colonne C et D de la feuille source sont bien celles que l'on retrouve en colonne D de la feuille Tableau général ? Je pense que oui mais votre avis est important
- Est-ce ceci correspond à ce que vous souhaitez dans un premier temps ?


Edit : en annexe voici un fichier qui reprend les entêtes de colonnes par rapport au nom de feuille de la colonne A
Il y a des différences et là ce serait bien de faire une correction
Peut être me dire ce qui est à modifier

13classeur1.xlsx (14.12 Ko)

Bonjour,

Merci pour votre analyse.

Pour moi le but est que ça fonctionne de la manière la plus simple possible donc s il faut revoir les bases, je suis preneur.

La colonne d du tableau général correspond bien à la feuille source.

Si avec votre proposition, je voulais changer un élément de la feuille tableau général, étant donné que la 2eme macro copie du tableau général au différentes feuilles, le changement serai donc effectif sur les autres feuilles?

Pour moi le but est que ça fonctionne de la manière la plus simple possible donc s il faut revoir les bases, je suis preneur.

Oui on peut. Le tout est de savoir comment vous fonctionnez. Mais là le plus important est la remise à jour de vos feuilles

La colonne d du tableau général correspond bien à la feuille source.

Oui j'ai vu mais il y a trois colonnes concernées C, D et H non ? et toutes les feuilles ne sont pas créés pour ces 3 colonnes

Si avec votre proposition, je voulais changer un élément de la feuille tableau général, étant donné que la 2eme macro copie du tableau général au différentes feuilles, le changement serai donc effectif sur les autres feuilles?

Oui via un code exécuté par un bouton par exemple. Ce que vous devez savoir c'est que le code remettra à jour la totalité de chaque feuille depuis la feuille
Donc on efface tout (sauf les entetes) et on réactualise depuis la feuille tableau général. Rasion pour laquelle je vous ai donné un fichier qui reprend les entete actuelles.

Parfait je me penche la dessus ce soir afin de vous remettre un fichier adapté

Merci d avance

Voici le fichier avec les différentes pages mise a jours pour correspondre au même schéma (du moins je pense )

N' hésitez pas a me faire changer si necessaire

20stock-test.zip (1.11 Mo)

Merci du fichier

1. Est-ce que les couleurs doivent être dans chaque feuille et donc comme dans la tableau général ou ce n'est pas important ?
2. Feuille 6 X6 alu et 4x4 acier : il y a des formules en colonne G, on peut supprimer ?
3. Feuille 20-25m LLR :
- en N on a une mention de manchon que l'on ne trouve pas dans le tableau genéral. Si je regarde la feuille 20-25m LLR, je vois des mentions en colonne N. D'où viennent-elles
- En colonne D on a des infos 20 m nouveau. Elles ne sont pas à la bonne place je pense

4. Pouvez me confirmer que les feuilles à compléter depuis le tableau général, sont bien celles nommées sur base des valeurs trouvées dans les colonnes Largeur et Pagode de la feuille Source et uniquement celles là ?


Il faut vraiment que chaque feuille de destination soit identique pour ce qui concerne les colonnes A à N de la feuille Tableau général car le code va écraser les lignes de chaque feuille et les réimporter depuis tableau général
Imaginez que pour chaque feuille je supprime A à N avant de réimporter les données depuis le tableau général. Cela veut aussi dire que la ligne orange en fin serait supprimée.

Ne me reposter pas de fichier. Donnez-moi les modif à effectuer si besoin

1. Est-ce que les couleurs doivent être dans chaque feuille et donc comme dans la tableau général ou ce n'est pas important ? la couleur est juste un marqueur de controle afin que si je me trompe dans l encodage d une date, la nouvelle entree avec une date erronee face tache au milieu de la couleur
2. Feuille 6 X6 alu et 4x4 acier : il y a des formules en colonne G, on peut supprimer ? oui, la colonne g n est rien d autre qu une copie du tableau général.
3. Feuille 20-25m LLR :
- en N on a une mention de manchon que l'on ne trouve pas dans le tableau genéral. Si je regarde la feuille 20-25m LLR, je vois des mentions en colonne N. D'où viennent-elles la colonne n avec la mention manchon est une pièce particulière qui comme dans les autres feuille est reprise sous le nom pied h3. C est le seul moyen que j ai trouvé pour pouvoir avoir le même canevas de feuille et malgré tout pouvoir encoder et copié sans que cela ne pose problème. Les mentions en colonne n ont été ajoutée manuellement au départ mais vu le nouveau fichier, celle ci correspondront à la h3/manchon 25m De la feuille choix
- En colonne D on a des infos 20 m nouveau. Elles ne sont pas à la bonne place je pense

Cela est du à un couper coller de la feuille 20m nouveau vers la feuille 20-25mllr suite à des décisions stratégique et la dénomination n a pas été changée.

4. Pouvez me confirmer que les feuilles à compléter depuis le tableau général, sont bien celles nommées sur base des valeurs trouvées dans les colonnes Largeur et Pagode de la feuille Source et uniquement celles là ? Oui c est bien cela

Il faut vraiment que chaque feuille de destination soit identique pour ce qui concerne les colonnes A à N de la feuille Tableau général car le code va écraser les lignes de chaque feuille et les réimporter depuis tableau général
Imaginez que pour chaque feuille je supprime A à N avant de réimporter les données depuis le tableau général. Cela veut aussi dire que la ligne orange en fin serait supprimée. Attention que la copie doit être triée de z à a et dans l ordre croissant des dates afin d avoir les montages avant les demontages sur une meeme journee.

Y a t il moyen d avoir tjs la dernière ligne en orange mais avec la formule minimum (mais limitée a aujourd hui jusque fin 2040?)


Bonjour,

Par rapport à votre message d'hier sur fond bleu.--> https://forum.excel-pratique.com/s/goto/1189046

Point 1 : Ok donc cela ne gêne pas si elles ne sont pas reprises dans les feuilles

Point 2 : Ok. Point clos

Point 3 :

- Colonne N : Le souci est que lors de l'importation depuis la feuille Total général cette donnée sera effacée de la feuille. Exemple : si on prend cette feuille en C15 " fabrication 3 fermes"et une mention de 3 en N15. Comme elle n'est pas dans le tableau général cette ligne serait effacée lors de l'importation.

Cela pose d'ailleurs une question plus générale à savoir pourquoi dans le tableau général on ne trouve plus des dates de 2021. En y relisant j'ai l'impression que l'on doit laisser les données des années qui ne sont pas reprises dans le tableau général.

- Colonne D : ok. Point clos

Point 4 :
ok. Point clos

Point 5 : ok. Oui les données seraient enregistrées en dessous de la dernière. Comme le code balayera de haut vers le bas dans le tableau général et enregistrera en dessous de la dernière ligne à chaque fois. cela implique aussi que votre tableau général soit dans l'ordre voulu.

Point 6 :

Y a t il moyen d avoir tjs la dernière ligne en orange mais avec la formule minimum (mais limitée a aujourd hui jusque fin 2040?)

Comment fonctionne cette formule ? Pourquoi dans certaines colonnes la formule renvoie toute la colonne et pas dans d'autres ?
exemple : feuille 3 m en P47 on va de la ligne 44 à 46, feuille 2m on va de la ligne 3 à 4.
En gros, pourquoi ne partez-vous pas chaque fois de la ligne 3

Bonjour

Point 1 : Ok donc cela ne gêne pas si elles ne sont pas reprises dans les feuilles

Point 2 : Ok. Point clos

Point 3 :

- Colonne N : Le souci est que lors de l'importation depuis la feuille Total général cette donnée sera effacée de la feuille. Exemple : si on prend cette feuille en C15 " fabrication 3 fermes"et une mention de 3 en N15. Comme elle n'est pas dans le tableau général cette ligne serait effacée lors de l'importation.

Cela est du à un changement dans la feuille et non dans le tableau general. Cela ne posera pas problème si je repars d une ligne du type inventaire (repris sous la reference demontage et ou j encode manuellement les donnees du jours de la mise en place du fichier)que je pourrai mettre dans le tableau général et effacé l historique
Cela pose d'ailleurs une question plus générale à savoir pourquoi dans le tableau général on ne trouve plus des dates de 2021. En y relisant j'ai l'impression que l'on doit laisser les données des années qui ne sont pas reprises dans le tableau général.

J ai effacé vu la taille du fichier afin de le mettre en ligne.

- Colonne D : ok. Point clos

Point 4 :
ok. Point clos

Point 5 : ok. Oui les données seraient enregistrées en dessous de la dernière. Comme le code balayera de haut vers le bas dans le tableau général et enregistrera en dessous de la dernière ligne à chaque fois. cela implique aussi que votre tableau général soit dans l'ordre voulu.

Point 6 :

Y a t il moyen d avoir tjs la dernière ligne en orange mais avec la formule minimum (mais limitée a aujourd hui jusque fin 2040?)

Comment fonctionne cette formule ? Pourquoi dans certaines colonnes la formule renvoie toute la colonne et pas dans d'autres ?
exemple : feuille 3 m en P47 on va de la ligne 44 à 46, feuille 2m on va de la ligne 3 à 4.
En gros, pourquoi ne partez-vous pas chaque fois de la ligne 3

Cette formule n a jamais été automatisée et est adaptée deux fois l année manuellement afin de voir le point bas du stock à partir de la date voulu (en général la date du jour). L important de cette formule est de voir le point le plus bas futur et non dans le passé.

Point 3 :

- Colonne N : Le souci est que lors de l'importation depuis la feuille Total général cette donnée sera effacée de la feuille. Exemple : si on prend cette feuille en C15 " fabrication 3 fermes"et une mention de 3 en N15. Comme elle n'est pas dans le tableau général cette ligne serait effacée lors de l'importation.

Cela est du à un changement dans la feuille et non dans le tableau general. Cela ne posera pas problème si je repars d une ligne du type inventaire (repris sous la reference demontage et ou j encode manuellement les donnees du jours de la mise en place du fichier)que je pourrai mettre dans le tableau général et effacé l historique

Je n'ai pas saisi.
Pour faire simple, prenons l'exemple de la feuille 3m et ce que le code ferait :
- Effacement de toutes les lignes depuis A3 à W47 (on conserve la ligne 2 qui concerne le stock et les formules à droite)
- Importation des lignes comportant la valeur 3m dans la colonne D de la feuille Tableau général
- Ajout de la ligne orange (minimum) et des formules NB.SI

Cela veut dire que la feuille 3m ne reprendra que les données inscrites dans la feuille tableau général


Point 6:

Y a t il moyen d avoir tjs la dernière ligne en orange mais avec la formule minimum (mais limitée a aujourd hui jusque fin 2040?)Comment fonctionne cette formule ?

Pourquoi dans certaines colonnes la formule renvoie toute la colonne et pas dans d'autres ?exemple : feuille 3 m en P47 on va de la ligne 44 à 46, feuille 2m on va de la ligne 3 à 4.En gros, pourquoi ne partez-vous pas chaque fois de la ligne 3

Cette formule n a jamais été automatisée et est adaptée deux fois l année manuellement afin de voir le point bas du stock à partir de la date voulu (en général la date du jour). L important de cette formule est de voir le point le plus bas futur et non dans le passé.

Ok mais la date du jour n'est pas toujours mentionnée. Donc là ce n'est pas facile de se faire une règle d'autant que chaque fois que vous ferai une mise à jour on doit refaire le calcul. Peut-être se dire que l'on repère la date la plus proche ? ou alors prendre la première date de l'année en cours ?

A réfléchir

EDIT : dans la feuille 3m, est-ce normal d'avoir la date 01/02/24 en B46 après celle en B44 ?

Je n'ai pas saisi.
Pour faire simple, prenons l'exemple de la feuille 3m et ce que le code ferait :
- Effacement de toutes les lignes depuis A3 à W47 (on conserve la ligne 2 qui concerne le stock et les formules à droite)
- Importation des lignes comportant la valeur 3m dans la colonne D de la feuille Tableau général
- Ajout de la ligne orange (minimum) et des formules NB.SI

Cela veut dire que la feuille 3m ne reprendra que les données inscrites dans la feuille tableau général

J ai bien compris et c est bien cela que je désire.

Je disais juste que le point soulevé était du à une modification manuelle qui n était pas complète. (Et qui ne posera pas problème vu que je compte effacé les données qui sont avant mars 2024 afin de repartir sur une base correcte.

Ok mais la date du jour n'est pas toujours mentionnée. Donc là ce n'est pas facile de se faire une règle d'autant que chaque fois que vous ferai une mise à jour on doit refaire le calcul. Peut-être se dire que l'on repère la date la plus proche ? ou alors prendre la première date de l'année en cours ?

A réfléchir

Est il envisageable d intégrer une ligne avec la formule aujourd hui dans le tableau général avec la valeur 2m en colonne d et rien dans les autres colonnes afin que la macro qui copie vers la feuille 2m cette ligne en quelques sortes neutre et qui permettra dans la feuille 2m de faire la recherche du nombre minimum à partir de la date d aujourd hui?

Et donc creer dans le tableau général le nombre de ligne correspondant au nombre de feuille?

Est il envisageable d intégrer une ligne avec la formule aujourd hui dans le tableau général avec la valeur 2m en colonne d et rien dans les autres colonnes afin que la macro qui copie vers la feuille 2m cette ligne en quelques sortes neutre et qui permettra dans la feuille 2m de faire la recherche du nombre minimum à partir de la date d aujourd hui?

Et donc creer dans le tableau général le nombre de ligne correspondant au nombre de feuille?

Non puisque d'après ce que je vois les dates sont toujours en ordre croissant, je peux récupérer l'adresse de la date en colonne B
Le tout est que je sache quelle date on doit prendre. Là en regardant le fichier je vois que la formule reprend souvent la première date de l'année en cours dans la colonne B. Ce qui n'est pas nécessairement la date la plus proche de la date d'aujourd'hui dont vous aviez parlé avant.
Le tout est de savoir quelle date à prendre

Rem : dans la feuille 3m, est-ce normal d'avoir la date 01/02/24 en B46 après celle en B44 ?


EDIT : pour vous montrer l'état vos feuilles avant l'exportation des données depuis la feuille Total général, faites le test suivant

1. Placez le code ci-dessous dans un module

Sub nettoyer()
Dim i As Byte
Dim plage As Range, c As Range

Application.ScreenUpdating = False

Set plage = Feuil1.Range("D6:D16,H6:H11")

For i = 1 To Sheets.Count
    Set c = plage.Find(Sheets(i).Name, LookIn:=xlValues, lookat:=xlWhole)
    If Not c Is Nothing Then
        With Sheets(i)
            On Error Resume Next
            .ShowAllData
            On Error GoTo 0
            dlg = .Range("A" & Rows.Count).End(xlUp).Row
            If dlg <= 2 Then dlg = 3
            .Range("A3:W" & dlg).Delete
        End With
    End If
Next i
Application.ScreenUpdating = True
End Sub

2. Placez-vous sur la feuille Tableau général
3. Exécutez le code et allez voir les feuilles 2m, 3m etc qui sont vidées des données

Ce code servira en premier pour vider les feuilles des informations avant d'exporter les données depuis la feuille Tableau général

Est il envisageable d intégrer une ligne avec la formule aujourd hui dans le tableau général avec la valeur 2m en colonne d et rien dans les autres colonnes afin que la macro qui copie vers la feuille 2m cette ligne en quelques sortes neutre et qui permettra dans la feuille 2m de faire la recherche du nombre minimum à partir de la date d aujourd hui?

Et donc creer dans le tableau général le nombre de ligne correspondant au nombre de feuille?

Non puisque d'après ce que je vois les dates sont toujours en ordre croissant, je peux récupérer l'adresse de la date en colonne B
Le tout est que je sache quelle date on doit prendre. Là en regardant le fichier je vois que la formule reprend souvent la première date de l'année en cours dans la colonne B. Ce qui n'est pas nécessairement la date la plus proche de la date d'aujourd'hui dont vous aviez parlé avant.
Le tout est de savoir quelle date à prendre

j'aurai pensé une ligne du genre

image

qui permettrai d'avoir automatiquement la date d'aujourd'hui (grace à la formule aujourd'hui en colonne b) et de la, pouvoir faire la recherche d'aujourd hui dans la formule de la valeur la plus basse (formule dans la ligne orange en dessous de chaque page) en prenant la plage de donnée situee entre aujourd hui et l'année 2040 (par exemple)

Ou, si c'est plus simple, mettre cette ligne dans chaque page directement et alors avec la macro qui permet d'effacer, effacer tout sauf les lignes 1-2-3.

image

Rem : dans la feuille 3m, est-ce normal d'avoir la date 01/02/24 en B46 après celle en B44 ?

non, cela doit etre du à un mauvais trie effectuée par la suite.

EDIT : pour vous montrer l'état vos feuilles avant l'exportation des données depuis la feuille Total général, faites le test suivant

1. Placez le code ci-dessous dans un module

Sub nettoyer()
Dim i As Byte
Dim plage As Range, c As Range

Application.ScreenUpdating = False

Set plage = Feuil1.Range("D6:D16,H6:H11")

For i = 1 To Sheets.Count
    Set c = plage.Find(Sheets(i).Name, LookIn:=xlValues, lookat:=xlWhole)
    If Not c Is Nothing Then
        With Sheets(i)
            On Error Resume Next
            .ShowAllData
            On Error GoTo 0
            dlg = .Range("A" & Rows.Count).End(xlUp).Row
            If dlg <= 2 Then dlg = 3
            .Range("A3:W" & dlg).Delete
        End With
    End If
Next i
Application.ScreenUpdating = True
End Sub

2. Placez-vous sur la feuille Tableau général
3. Exécutez le code et allez voir les feuilles 2m, 3m etc qui sont vidées des données

Ce code servira en premier pour vider les feuilles des informations avant d'exporter les données depuis la feuille Tableau général

je viens de tester et c 'est bien ce que j'avais compris donc le point de départ est bon.

Re

J'ai difficile à vous lire dans vos réponses car vous mélangez ce que je vous écrit avec votre réponse
Est-ce que dans la barre de menu vous n'avez pas l'icone "Citation" disponible ?


Non puisque d'après ce que je vois les dates sont toujours en ordre croissant, je peux récupérer l'adresse de la date en colonne B

Le tout est que je sache quelle date on doit prendre. Là en regardant le fichier je vois que la formule reprend souvent la première date de l'année en cours dans la colonne B. Ce qui n'est pas nécessairement la date la plus proche de la date d'aujourd'hui dont vous aviez parlé avant.

Le tout est de savoir quelle date à prendre

j'aurai pensé une ligne du genre

je n'ai pas compris la finalité
Mais laissez tomber je vais mettre le code qui ira chercher l'adresse de la première date trouvée pour l'année en cours, ici 2024. on verra par la suite

EDIT On est bien d'accord que ce sont toutes les lignes du tableau général qu'il faut envoyer dans les feuilles et pas seulement les lignes dont la date est sur l'année en cours

Oui c est bien l ensemble des lignes du tableau général

Merci pour tout ce que vous faites pour arriver à me facilite la vie

Bonjour,

Voici les modification à faire dans votre fichier :

1. Créer un nouveau module
qui reprendra tous les codes concernés par l'exportation
2. Code Exportation
: ajoutez le code ci-dessous qui sera en quelque sorte celui duquel vous partirez pour envoyer les données vers les feuilles (voir point 6)

Option Explicit
Dim plage As Range

Sub exportation() 'exportation donnees depuis tableau general
Dim dlg As Integer, i As Integer
Dim cel As Range

Application.ScreenUpdating = False

Set plage = Feuil1.Range("D6:D16,H6:H11")

Call nettoyer 'effacer donnees feuilles 2m,3m....

With Feuil6 'feuille tableau general
    If Not .AutoFilterMode Then .Range("A1:W1").AutoFilter 'veririfer si filtre actif
    On Error Resume Next
    .ShowAllData
    On Error GoTo 0

    For Each cel In plage

        dlg = .Range("A" & Rows.Count).End(xlUp).Row

        If WorksheetFunction.CountIf(.Range("A3:N" & dlg), cel) > 0 Then

            With .Range("$A$3:$N" & dlg).SpecialCells(xlCellTypeVisible)
                .AutoFilter Field:=4, Criteria1:=cel
                .Copy
            End With

            With Sheets(CStr(cel))
                'coller les données
                .Range("A3").PasteSpecial Paste:=xlPasteValues
                'recopier formules colonne P et W depuis ligne 3
                .Range("P2:W2").AutoFill Destination:=.Range("P2:W" & .Range("A" & .Rows.Count).End(xlUp).Row), Type:=xlFillDefault
                'format date
                .Range("B3:B" & dlg).NumberFormat = "dd/mm/yyyy"
            End With

            Call ajoutligMin(CStr(cel)) 'ajout ligne minimum
        End If

    Next cel
End With

Application.ScreenUpdating = True
End Sub

3. Code ligne minimum. Ajoutez ce code en dessous du précédent. Il permet de créer la ligne minimum et couleur

Sub ajoutligMin(cel As String)
Dim lig As Integer, dlg As Integer

With Sheets(cel)

    dlg = .Range("A" & .Rows.Count).End(xlUp).Row 'derniere ligne

    'ajout minimum
    .Cells(dlg + 1, 1) = "minimum"
    .Cells(dlg + 1, 2) = CDate(51501) '31/12/2060
    .Cells(dlg + 1, 3) = "valeur minimum"

    'ajout formule MIN colonnes P à W
    Call trouvedate(CStr(cel), lig) '

    'ajout formule minimum cellule P
    .Cells(dlg + 1, 16).FormulaR1C1 = "=MIN(R" & lig & "C:R[-1]C)"
    'recopie formule minimum de colonne P a W
    .Cells(dlg + 1, 16).AutoFill Destination:=.Range("P" & dlg + 1 & ":W" & dlg + 1), Type:=xlFillDefault

    'Mise en couleur orange
    .Range(.Cells(dlg + 1, 1), .Cells(dlg + 1, 23)).Interior.Color = 8696052
    'format conditionnel ligne min
    .Range("P" & dlg & ":W" & dlg).AutoFill Destination:=.Range("P" & dlg & ":W" & dlg + 1), Type:=xlFillFormats

End With
End Sub

4. Code pour la date dans formule Minimum. Ajoutez ce code qui permet d'aller chercher la première date de l'année en cours (ici ce sera 2024)

Sub trouvedate(cel As String, lig As Integer) 'trouver ligne premiere date annee en cours
Dim dateanneeprec As Long
Dim i As Integer

dateanneeprec = CLng(DateSerial(Year(Date) - 1, 12, 31))

With Sheets(CStr(cel))
    For i = .Range("B" & Rows.Count).End(xlUp).Row To 3 Step -1
        If .Range("B" & i).Value2 <= dateanneeprec Then
        lig = i + 1
        Exit For
        End If
    Next i
End With
End Sub

5. code Sub Nettoyer() Très important !!!
- déplacez ce code dans ce nouveau module. Mettez le en dessous des autres par exemple
- supprimez cette ligne

Set plage = Feuil1.Range("D6:D16,H6:H11")

6. Ajoutez un bouton sur votre feuille Tableau général et associez-le au code EXPORTATION

Il vous reste à tester...

Si souci, ne me repostez pas de fichier ou les codes dans votre réponse. dites moi simplement où il y a un problème

Edit : le code prend un peut de temps vu le nombre de feuille à traiter. J'ai essayé de réduire au max

Bonjour,

Je viens de copier le code et voici ce qu'il se passe

image
Rechercher des sujets similaires à "simplification fichier macro"