Bonjour,
Déjà je voulais vous remercier tous les 3 pour faire avancer mon problème vers une résolution
Pour moi, il y a un problème de conception à la base, et un problème dans l'expression du besoin.
Il est vrai je ne me suis pas penché à analyser les risques et le besoin de ce petit projet, je n'ai pas fait non plus de planning.. :
- D'abord parce que c'est un petit projet, je le fait par initiative et principalement sur mon temps libre. Le besoin a vaguement été évoqué par un collègue qui a dit (en gros) : "Un cahier numérique où l'on retrouverait les interventions de maintenance pour une zone géographique donnée, ça serait top".
- Ensuite parce que je ne connais pas le processus pour développer correctement. Je préfère avancer à taton pour ne pas me décourager; petit pas par petit pas en testant sans arrêt.
A moins que vous évoquez le problème de mon besoin sur ce forum?
Dans ce cas je m'excuse, il est vrai que j'ai entamé la discussion un peu à la vas-vite.
Dans un soucis de clarté je vais donc m'inspirer de ce qu'a dit unparia pour le ré-exprimer au mieux :
(garder à l'esprit qu'il est pour le moins essentiel de préciser ce qui, quand et comment doit déclencher quoi)
Qui déclenche cette macro?
Les utilisateurs de cette application seront des techniciens de maintenance. Voici une capture de l'interface qu'ils verront au démarrage du fichier (mis à disposition sur un seul et unique ordinateur) :
Quand se déclenche cette macro ?
La macro que je souhaites est censée se déclencher à chaque fois qu'une nouvelle ligne est ajoutée dans la base de donnée. C'est à dire après création ou édition de ticket.
Comment se déclenche cette macro ?
Sur le 3ème post de cette discussion, j'ai montré une capture de ma base de données. Toute modification dessus se fait en arrière plan, l'utilisateur ne verra pas cet onglet. Enfaite je lui bloque tous les accès et lui offre seulement une console pour qu'il voit les résultats et quelques d'userforms pour lui permettre de MAJ/naviguer.
Petite précision
Chaque intervention de la maintenance est censé représenter une nouvelle ligne dans la BDD. Imaginons un problème de tension sur un convoyeur, à chaque fois qu'il y a une nouvelle chose de faite pour résoudre ce problème (appelons ça "tentative"), l'utilisateur va renseigner ce qu'il a fait en utilisant MAJ Ticket.
Pour ce faire on lui demande dabord de renseigner le numéro de l'intervention initiale. (Il fera pareil pour Solder le Ticket).
En gros :
1 intervention = 1 ligne dans la BDD
1 problème = 1 numéro (colonne A)
"Mais qu'est-ce qu'il veux alors..."
Et bien j'aimerais éviter que lorsque l'utilisateur consulte les en-cours, n'apparaisse sur sa console "les tentatives" de tickets soldés.
Enfaite patricktoulon à presque résolu le problème :
Il me faut juste modifier son code de tel sorte que les "couleurs" ne soient pas copiées (ou en colonne A éventuellement). Malheureusement là encore je bloque... Autant le dictionnaire j'ai compris mais les tableaux j'ai du mal.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| Sub test()
dim dico as object,plage as range,cel as range,tablo,i&
Set dico = CreateObject("scripting.dictionary")
Set plage = Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)
For Each cel In plage.Cells
If Not dico.exists(cel.Value) Then dico.Add (cel.Value), cel.Offset(0, 7)
If dico(cel.Value) <> "Boom" Then dico(cel.Value) = cel.Offset(0, 7) Else dico(cel.Value) = dico(cel.Value)
Next
tablo = plage.Resize(plage.Rows.Count, 2).Value
For i = 1 To UBound(tablo)
tablo(i, 2) = dico(tablo(i, 1))
Next
Cells(1, 7).Resize(UBound(tablo), UBound(tablo, 2)) = tablo
End Sub |
Partager