XL 2013 (RESOLU) Modification Manuelle et changement Automatique

chaelie2015

XLDnaute Accro
Bonsoir Forum,
Je reviens vers vous avec mon fichier (usine à Gaz;))) dans la feuille 'BdD CEO', plus précisément dans les tableaux (Zone_Lot_...).
Prenons l'exemple du fichier attaché, en considérant le cas du 'Lot_01'. Si je modifie MANUELEMENT la cellule de la dernière colonne (attribution) de 'Attribution après alignement' à 'Refus d'alignement', je souhaite passer AUTOMATIQUEMENT ensuite au 'Job 06'. Cependant, cela dépend de la condition du nombre de lots maximum (cellule D5). Si 'Job 06' est saturé, nous passerons AUTOMATIQUEMENT au lot suivant, à condition qu'il ne soit pas saturé par rapport à l'ensemble des lots, bien sûr.


Edit : Prenons le 'Lot 02' comme un autre exemple, c'est une illustration pertinente. Imaginons que pour le 'JOB 12', il refuse de s'aligner. Dans ce cas, je modifie la cellule pour indiquer "Refus d'alignement." Dans cette situation, je passe automatiquement à la ligne suivante (JOB 1), à condition qu'elle ne soit pas saturée (c'est-à-dire qu'elle doit être inférieure ou égale à la cellule D5). Supposons qu'elle soit saturée (par exemple, elle a déjà pris le 'LOT 7'), alors j'affiche automatiquement dans la cellule 'Nombre de lots saturés' et je passe automatiquement au suivant (JOB 8). Dans le cas où JOB 8 n'a rien pris, nous lui attribuons automatiquement alors "Attribution après alignement" s'il accepte, et ainsi de suite.

J'espère que cette explication est plus claire🤞.
A+
Exemple LOT 02.png
 

Pièces jointes

  • BdD CEO V11 JOB en cours du 27 10 2023.xlsm
    226.2 KB · Affichages: 2
Dernière édition:
Solution
Une info-bulle ? Il suffit d'afficher une MsgBox, placez dans la macro Worksheet_Change :
VB:
If Target(1) = "Refus d'alignement." Then MsgBox "Les cellules sous ""Refus d'alignement."" peuvent être testées par la combinaison de touches Ctrl + T"

job75

XLDnaute Barbatruc
Bonjour chaelie2015, le forum,

Ce que l'on peut faire c'est tester par double-clic les cellules situées sous "Refus d'alignement" ou "Attribution après alignement" :
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim c As Range, n%
Set c = Target(1).EntireColumn.Find("alignement", , xlValues, xlPart)
If c Is Nothing Then Exit Sub
If Target.Row <= c.Row Then Exit Sub
Cancel = True
Target(1, -2).Name = "Nom" 'nom défini
ThisWorkbook.Names.Add "col", Target.Column 'nom défini
n = [SUMPRODUCT((BE7:MM56=Nom)*(LEFT(BH7:MP56,8)="Attribut")*(COLUMN(BH7:MP56)<>col))]
MsgBox IIf(n < [D5], "Vous pouvez utiliser '" & [Nom] & "' comme attributaire à la place de '" & c(1, -2) & "'", "'" & [Nom] & "' ne peut pas être attributaire")
End Sub
En fonction du résultat on remplira la cellule manuellement avec "Nombre de lots saturés" ou "Attribution après alignement".

Edit : avant de tester il faut ôter la protection de la feuille...

A+
 

Pièces jointes

  • BdD CEO V11 JOB en cours du 27 10 2023.xlsm
    224.6 KB · Affichages: 1
Dernière édition:

job75

XLDnaute Barbatruc
Pour éviter d'avoir à déprotéger la feuille on peut utiliser une simple macro lancée par un raccourci clavier :
VB:
Sub Test()
'se lance par les touches Ctrl+T
Dim c As Range, n%
Set c = ActiveCell.EntireColumn.Find("alignement", , xlValues, xlPart)
If c Is Nothing Then Exit Sub
If ActiveCell.Row <= c.Row Then Exit Sub
ActiveCell(1, -2).Name = "Nom" 'nom défini
ThisWorkbook.Names.Add "col", ActiveCell.Column 'nom défini
n = [SUMPRODUCT((BE7:MM56=Nom)*(LEFT(BH7:MP56,8)="Attribut")*(COLUMN(BH7:MP56)<>col))]
MsgBox IIf(n < [D5], "Vous pouvez utiliser '" & [Nom] & "' comme attributaire à la place de '" & c(1, -2) & "'", "'" & [Nom] & "' ne peut pas être attributaire")
End Sub
 

Pièces jointes

  • BdD CEO V12 JOB en cours du 27 10 2023.xlsm
    234.9 KB · Affichages: 2

chaelie2015

XLDnaute Accro
Bonjour JOB,
Je tiens à t'exprimer ma gratitude pour ton idée ingénieuse et la solution exceptionnelle que tu as partagées👏. Afin d'améliorer davantage cette solution, j'envisage d'intégrer une info-bulle dans les cellules de la colonne "Attribution". Cela permettrait aux utilisateurs de savoir qu'ils doivent sélectionner la cellule suivante et utiliser la combinaison de touches Ctrl+T en cas de modification manuelle.
MERCI
 
Dernière édition:

job75

XLDnaute Barbatruc
Une info-bulle ? Il suffit d'afficher une MsgBox, placez dans la macro Worksheet_Change :
VB:
If Target(1) = "Refus d'alignement." Then MsgBox "Les cellules sous ""Refus d'alignement."" peuvent être testées par la combinaison de touches Ctrl + T"
 

Pièces jointes

  • BdD CEO V13 JOB en cours du 27 10 2023.xlsm
    235.6 KB · Affichages: 3

ChTi160

XLDnaute Barbatruc
Bonjour le Fil !
Bien que la solution ait été donnée
Une question :
Dans la feuille "BdD CEO" dans chaque tableau "Lot_1" à "Lot_50" tu ne récupères en feuille "Recap" qu'une seule Ligne ? Est-ce à dire qu'il n'y aura qu'une seule Ligne qui contiendra soit "Attribution par écart." ou "Attribution après alignement."
Bonne Journée
Jean marie
 

Statistiques des forums

Discussions
314 710
Messages
2 112 115
Membres
111 428
dernier inscrit
Andrya