Insertion de lignes dans un tableau en tenant compte des semaines

C'est tout à fait ça

Avant ces modifications pensez à faire une sauvegarde du fichier juste pour conserver les codes initiaux

Puis essayez comme ceci

1. Dans la feuille Provisio, remplacez tout le code par celui ci-dessous

Option Explicit
Dim stpevt As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Count > 1 Or Target.Row <= 4 Or stpevt = True Then Exit Sub

If Not Intersect(Target, Range("Q" & Target.Row & ":S" & Target.Row)) Is Nothing Then
    lig = Target.Row
    Call planning
End If

If Not Intersect(Target, Range("U" & Target.Row & ":V" & Target.Row)) Is Nothing Then
    If Target.Column = 21 And Target <> vbNullString Then
        stpevt = True
        Cells(Target.Row, Target.Column) = "S" & Format(Cells(Target.Row, Target.Column), "00")
        stpevt = False
    End If
    lig = Target.Row
    Call planning
End If

If Not Intersect(Target, Range("W" & Target.Row)) Is Nothing Then
    If UCase(Target.Value) = vbNullString Then
        lig = Target.Row
        Call Ajout_couleur(lig, couleur)
        Call planning
    End If
End If
End Sub

2. Macro Planning
Remplacez les deux lignes

If WorksheetFunction.CountA(Range("Q" & lig & ":V" & lig)) = 6 Then 

par ceci

If WorksheetFunction.CountA(Range("Q" & lig & ":S" & lig)) = 3 Then 

J'ai effectué les changement, par contre, à partir du moment que je rentre mon mdp, dès que je valide celui-ci, voilà ce que j'obtiens :

capture

Aucun souci de mon coté

Vous lancez l'USF via le bouton ?
Lorsque la ligne est surlignée en jaune, que vaut la variable "Lig" et qu'avez vous comme info en colonne Q, R, S...

Oui, je lance l'USF via le bouton

Pour le reste, je ne comprends malheureusement pas ce que vous me demandez, désolé

Oups dans la ligne qui bugue ce n'est pas

If WorksheetFunction.CountA(Range("Q" & lig & ":S" & lig)) = 3 Then 

mais ceci

If WorksheetFunction.CountA(Range("Q" & i & ":S" & i)) = 3 Then 

Désolé

Je viens de faire la modif.

Je dois mettre une première fois :

If WorksheetFunction.CountA(Range("Q" & lig & ":S" & lig)) = 3 Then

Et dans un second temps (la ligne qui bugue) :

If WorksheetFunction.CountA(Range("Q" & i & ":S" & i)) = 3 Then

Et dans un second temps (la ligne qui bugue) :

Oui comme je vous ai écrit

C'est parfait !
Merci encore Dan pour votre aide

Bonjour Dan,

Je reviens à nouveau sur le sujet pour vous faire part de la demande suivante :

Comme vous le savez, à chaque modification d'une ligne, la cellule modifiée passe en jaune et une croix apparaît en colonne W.
Pour cela, aucun changement à faire, cela fonctionne très bien.

C'est plutôt pour mettre en évidence les nouvelles lignes créées.
Est-il possible de mettre en avant ces nouvelles lignes ?
Soit en mettant en jaune l'ensemble de la lignes (colonne allant de B à O) avec la croix en W.
Soit en mettant uniquement la croix en W avec un petit quelque chose supplémentaire pour différencier les nouvelles lignes des lignes modifiées.

Merci

Bonjour

C'est plutôt pour mettre en évidence les nouvelles lignes créées.
Soit en mettant uniquement la croix en W avec un petit quelque chose supplémentaire pour différencier les nouvelles lignes des lignes modifiées.
Soit en mettant en jaune l'ensemble de la lignes (colonne allant de B à O) avec la croix en W.

Mais le code n'a jamais prévu de mettre un X en W dans les nouvelles lignes créées ni de couleur. La colonne W est utilisées pour une modification dans une ligne existante.
Mais en cas de nouvelles lignes créées vous n'avez rien en Q à R et pas de planning
On peut mettre une de ces 3 cellules ou les trois en jaune par exemple ou peut être ajouter un N (nouveau) en colonne W. A voir ce qui est le plus simple pour ne pas avoir à de nouveau changer dans tous les codes

Crdlt

Un simple N dans la colonne W suffit amplement

Bon j'étais plutôt parti sur l'idée de mettre une couleur entre les colonnes Q et R
Mais mais essayez ceci :

- Allez dans l'USF dans le code Private Sub CommandButton1_Click()
- Ajoutez cette ligne juste après la ligne --> .Cells(lig, 22).NumberFormat = "d-mmm"

.Cells(lig, 23) = "N" 'ajout de X dans colonne modification

Faites quelques tests en ajout et modif pour vérifier

Parfait !
Merci encore

Bonjour Dan,

Je reviens vous consulter

Je rencontre un problème sur le fichier au niveau des numérotations des DEM.
Il arrive que nous ayons des changements de n° à l'ouverture du fichier mais nous ne savons pas pourquoi ?!
Auriez-vous une petite idée ? Les numéros peuvent commencer par 2024 pour les demandes de cette année mais aussi 2023 pour les demandes qui non pas été traitées en fin d'année dernière.
Aujourd'hui nous avons ceci :

capture

Merci

Pas facile de comprendre

En principe de ce que je vois, vous devez introduire le numéro 2024-XXX dans la textbox BOXDEM qui correspond à l'année en cours. Donc si vous avez 1724, par exemple c'est que vous avez introduit 1724 dans la textbox

C'est ce que je pensais au début.
Après je me suis demandé si cela n'était pas lié au fait que les "x" soient en minuscule ou majuscule ?

Après je me suis demandé si cela n'était pas lié au fait que les "x" soient en minuscule ou majuscule ?

En principe non car j'avais prévu ce cas de figure en utilisant l'instruction "Option Compare text"

Maintenant vous pouvez toujours modifier ces lignes dans la Private Sub CommandButton1_Click() qui se trouve dans l'USF

.Cells(lig, 3) = UCase(BoxDem.Text)

et plus bas

Ucase(.Cells(lig, 23)) = "X" 'ajout de X dans colonne modification

.Cells(lig, 3) = UCase(BoxDem.Text)

Faut intégrer cela à la place de .Cells(lig, 3) = BoxDem.Text ?

et remplacer ceci : .Cells(lig, 23) = "N" 'ajout de N dans colonne modification par cela :

Ucase(.Cells(lig, 23)) = "X" 'ajout de X dans colonne modification

Nous n'aurons plus l'information d'une nouvelle ligne si l'on fait cela ?

Faut intégrer cela à la place de .Cells(lig, 3) = BoxDem.Text ?

Oui exact

et remplacer ceci : .Cells(lig, 23) = "N" 'ajout de N dans colonne modification par cela :

Non surtout pas cette ligne, on ne parle pas de N mais de X

La ligne .Cells(lig, 23) = "X" dont je parle est située avant le CALL TRIER. Regardez plus haut

Rechercher des sujets similaires à "insertion lignes tableau tenant compte semaines"