Insertion de lignes dans un tableau en tenant compte des semaines

Ligne concerné

oldnum = Right(Range("C" & i).Value, Len(Range("C" & i).Value) - InStrRev(Range("C" & i).Value, "_")) 'ancien numero

ok et quelle est la valeur de i ?
Passez votre souris sur le i pour voir.
Celle vous donnera la ligne concernée

I = 6

Ok. je n'avais bien vérifié quelque chose.
Dans le code proposé

1. juste avant la ligne oldnum, mettez ceci --> On error resume next
2. juste après la ligne oldnum, mettez --> On error goto 0 (attention le dernier caractère est un chiffre 0 et pas une lettre)
3. Plus bas à la ligne IF changez comme ceci

If IsNumeric(oldnum) And oldnum <> 0 Then 'verifier si oldnum est numerique

refaites un test

Cela fonctionne,
Tous les n° de DEM avec xxx sont incrémentés d'un numéro

Je suppose qu'il faut changer le codage pour ne plus avoir l'incrémentation avec la ligne ?

Je suppose qu'il faut changer le codage pour ne plus avoir l'incrémentation avec la ligne ?

Heu... je n'ai pas compris votre question
L'incrémentation c'est ce que vous vouliez non ?

Le code n'incrémente que si vous avez un X dans le numéro (donc 2024-XXX par exemple)

Si vous enlevez les X du "Numdem", le code ne fera rien à part renuméroter les lignes qui contiennent encore au moins un X et en recommençant à 1

Je viens de créer une nouvelle ligne est il m'a insérer un 2024_xxx_L31 c'est pour cela que je vous parle de changement de codage

Je viens de créer une nouvelle ligne est il m'a insérer un 2024_xxx_L31 c'est pour cela que je vous parle de changement de codage

Juste !
Vous avez conservé ce que je vous avais donné avant mais avec la renumérotation il faut revenir en arrière sur ce que je vous avais proposé ici --> https://forum.excel-pratique.com/s/goto/1178881

Donc là vous devez retourner dans le code USF --> Private Sub CommandButton1_Click() et supprimer le IF .... Else .... END IF et remettre l'instruction précédente

.Cells(lig, 3) = BoxDem.Text

Résultat vous ne devez plus avoir la mention L et le code vous mettra 2024_XXX au lieu de 2024_XXX_L31
ensuite avec le code renumérotation vous aurez ceci --> 2024_XXX_ et indice numéro

Désolé mais chaque changement que vous demandez oblige à revoir ci et là.

Merci, c'est rectifié.

Mais j'ai de nouveau un souci i = 5
J'ai simulé une modification pour remettre une DEM en 2024_xxx et je pensais que cela allait m’incrémenter un n° avec les xxx.
Dans un premier tps, j'ai le 2024_xxx qui est passé en 2025_xxx. J'ai a nouveau changer en 2024-xxx mais désormais j'ai ce souci
J'ai lancé une seconde ligne en 2024-XXX mais aucun changement

capture

1. Par précaution, juste avant la ligne sub renumerotation(), rajoutez --> Option Compare Text

2. plus bas entre les deux END IF, rajoutez oldnum=0

Fait mais aucun changement

Bizarre j'ai fait le test pourtant...

Le code s'arrête sur la ligne jaune ?

Oui avec erreur '1004'

capture

Ce qui est curieux c'est qu'étant donné que les cellules sont en jaune, lorsque je supprime la X en colonne W pour valider les modifications, les cellules restent en jaune tout de même.
Est-ce qu'il y aurait pas un décalage dû à une erreur de manipulation de mon côté ?

Ce qui est curieux c'est qu'étant donné que les cellules sont en jaune, lorsque je supprime la X en colonne W pour valider les modifications, les cellules restent en jaune tout de même.

N'oubliez pas que la couleur jaune ne s'enlève que si les colonnes Q à V sont complétées. Donc supprimer un X en W ne changera rien si vous n'avez pas ces cellules complétées d'une information.
Une fois complétée les cellules jaune sont remises à leur couleur prévue et la planning est adapté à partir de la colonne X.

Bonjour Dan,

C'est curieux, je viens de relancer la macro du code renumerotation et cela fonctionne également.

J'ai tout de même recréée une nouvelle ligne et j'ai le même problème qu'hier (pas d'incrémentation et erreur '1004' avec toujours cette ligne surlignée en jaune

        .Range("C" & i) = Replace(.Range("C" & i), "-", "_") 'remplace les tirets par souligne
Je me suis dit : Est-ce qu'il faut pas faire une mise à jour avant d'effectuer le code renumerotation.
Et c'est effectivement ça !
Pouvons-nous faire une mise à jour automatique dans le codage à chaque nouvelle ligne insérée ou modification ?

N'oubliez pas que la couleur jaune ne s'enlève que si les colonnes Q à V sont complétées

Effectivement, j'avais oublié ce point,
Merci

Nouvelle question : Que dois-je faire au cas ou une ligne serait supprimé par erreur ? Peut-on trouver une parade ?

Bonjour

Je n'ai aucune erreur.
Lorsque vous créez une nouvelle ligne vous mentionnez quoi en textbox N°dem.

Je fais le test comme ceci

- Semaine = 8
- Num Demande = 2024-xxx

L'ajout de la nouvelle ligne mentionne bien 2024-xxx
Ensuite on complète Q à V. Dès que vous avez les cellules complétées le planning se fait et cela change les tirets par soulignés

Si j'exécute le code renumérotation, pas de bug

Donnez-moi un exemple de ce que vous faites pas à pas que je puisse reproduire car je ne vois pas le souci


Pouvons-nous faire une mise à jour automatique dans le codage à chaque nouvelle ligne insérée ou modification ?

Chaque fois que vous remplissez les 6 cellules ou que vous supprimez le X de la colonne W, le planning est réactualisé


Je me suis dit : Est-ce qu'il faut pas faire une mise à jour avant d'effectuer le code renumerotation.

Je ne comprends pas trop. Le code renumérotation n'est pas lié à la mise à jour. Il renumérote uniquement les valeur avec X dans la colonne C.
Il n'y a aucun lien entre les deux codes

Je comprends désormais notre incompréhension.

Ce que vous faite et tout a fait juste. Le problème est que les utilisateurs peuvent entrer plusieurs lignes en avance de plusieurs semaines avant que moi je renseigne les informations dans les colonnes allant de Q à V.
Il arrive très souvent que les utilisateurs doivent modifier des informations même avant que les colonnes Q et V soient complété. C'est pour cela que nous devons avoir l'incrémentation avant le remplissage de ces dernières colonnes.

Ce que vous faite et tout a fait juste. Le problème est que les utilisateurs peuvent entrer plusieurs lignes en avance de plusieurs semaines avant que moi je renseigne les informations dans les colonnes allant de Q à V.

Comme je vous ai écrit nul besoin de renseigner les colonnes Q à V pour renuméroter. On peut exécuter quand on veut
Lorsque vous avez l'erreur comme vous écrivez avant, i vaut combien dans le fichier

Rem : c'est bien avec le code renuméroter que vous avez l'erreur ?
Car cette ligne d'instruction est aussi dans la sub maj dans le fichier

Rem : c'est bien avec le code renuméroter que vous avez l'erreur ?

C'est bien ça.

Il faudrait lancer la macro en auto lors d'ajout ou modification de lignes

Vérifiez que la feuille n'est pas protégée lors vous exécutez le code renumerotation
Si oui, juste avant le FOR i= 5, mettez ceci

.Unprotect

et juste avant le dernier END WITH, mettez

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