Bonjour,
Sur une feuille j'ai 5 tableaux. Hormis le 1er qui ne fait pas parti de ce post, chacun d'entres eux génère un N° chrono accompagné d'un texte spécifique.
Ces 4 tableaux possèdent chacun 3 colonnes.
La 1ere étant le N° Chrono sans texte (ex: 001)
La 2eme étant un choix dans une liste déroulante 'ex: M1)
La 3eme étant le résultat final (ex : PRO-17-001)
Le 1er tableau va de la colonne F à H
La formule en cellule F2 est la suivante :En G2 => Liste déroulante=MAX(F$2:$F2)+1
La formule en cellule H2 est la suivante :La formule en F3 est la suivante :=SI(ESTVIDE(G3);"Sélectionner un élément de la liste";"DIR-" & ANNEE(AUJOURDHUI())-2000 & TEXTE([N° chrono];"-000"))Il faudrait empêcher l'incrémentation de ligne supplémentaire tant que la colonne G (liste déroulante) est vide=MAX(F$2:$F3)+1
Ensuite lorsque la colonne G est remplie dès que la touche "Tabulation" est pressée, cela doit incrémenter automatiquement une nouvelle ligne au tableau et transformer les formules de la ligne du dessus en valeur.
Pourquoi cette transposition des formules en valeur ? Dans la formule en colonne H, il y aqui donne comme resultat le deux derniers chiffre de l'année en cours. Or dès que l'on va changer d'année calendaire (2017 => 2018, l'ensemble des résultats va être modifié (ex: DIR-17-001 deviendra DIR-18-001). Il faut donc figer les résultats en valeurs.& ANNEE(AUJOURDHUI())-2000
Il faut que je puisse faire la meme manip sur les 4 tableaux (pas le premier)
Voici le code que j'ai mis dans la feuille de mon classeur pour transformer les formules en valeurs mais rien ne se modifie :
Ci joint mon fichier afin de voir le positionnement des tableaux
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 Private Sub Worksheet_Change(ByVal Target As Range) 'Si la colonne "Processus liés" du "Tab_Numerotation_Directive" est remplie, les formules de la ligne sont transformées en valeurs If Target.Column = 7 Then With Sheets("Numerotation Doc SMQ NG").Range("Tab_Numerotation_Directive") .Rows(Target.Row - 1).Value = .Rows(Target.Row - 1).Value End With End If 'Si la colonne "Processus liés" du "Tab_Numerotation_Procedure" est remplie, les formules de la ligne sont transformées en valeurs If Target.Column = 11 Then With Sheets("Numerotation Doc SMQ NG").Range("Tab_Numerotation_Procedure") .Rows(Target.Row - 1).Value = .Rows(Target.Row - 1).Value End With End If 'Si la colonne "Processus liés" du "Tab_Numerotation_Formulaire" est remplie, les formules de la ligne sont transformées en valeurs If Target.Column = 15 Then With Sheets("Numerotation Doc SMQ NG").Range("Tab_Numerotation_Formulaire") .Rows(Target.Row - 1).Value = .Rows(Target.Row - 1).Value End With End If 'Si la colonne "Processus liés" du "Tab_Numerotation_Mode_Operatoire" est remplie, les formules de la ligne sont transformées en valeurs If Target.Column = 19 Then With Sheets("Numerotation Doc SMQ NG").Range("Tab_Numerotation_Mode_Operatoire") .Rows(Target.Row - 1).Value = .Rows(Target.Row - 1).Value End With End If End Sub
Partager