Ajouter info à partir 2nd onglet
Emma
-
Emma -
Emma -
Bonjour à tous !!
Je me rapproche de vous car j'ai une colle à vous soumettre:
dans le fichier http://cjoint.com/?BJxjHx6ljkm
Sur chaque ligne de l'onglet "database", en colonne K je voudrais indiquer le nom d'un agent indiqué dans l'onglet "list agent" afin que chacun traite une ligne de la database
S'il y a + de lignes dans database que dans list agent, on peut répêter le nom d'un agent plusieurs fois, en essayant toutefois de répartir le plus équitablement possible les lignes de la database.
Toutefois on ne remplit colonne K QUE si la ligne remplit les 2 conditions ci dessous:
- Il faut que colonne I contienne "DLV" ou "Closed" ou "RCV"
-Il faut que colonne H contienne 05K
sinon laisser K vide pour les ligne qui ne remplisent pas ces conditions
(il faudrait que je puisse modifier au quotidien la liste des agent dans "list agent" en fonction des absents, donc le nombre d'agent peut varier chaque jour)
Pour corser un peu, il faudrait que la macro fonctionne sous excel 2000 !
Merci beaucoup d'avance pour votre aide :)
Je me rapproche de vous car j'ai une colle à vous soumettre:
dans le fichier http://cjoint.com/?BJxjHx6ljkm
Sur chaque ligne de l'onglet "database", en colonne K je voudrais indiquer le nom d'un agent indiqué dans l'onglet "list agent" afin que chacun traite une ligne de la database
S'il y a + de lignes dans database que dans list agent, on peut répêter le nom d'un agent plusieurs fois, en essayant toutefois de répartir le plus équitablement possible les lignes de la database.
Toutefois on ne remplit colonne K QUE si la ligne remplit les 2 conditions ci dessous:
- Il faut que colonne I contienne "DLV" ou "Closed" ou "RCV"
-Il faut que colonne H contienne 05K
sinon laisser K vide pour les ligne qui ne remplisent pas ces conditions
(il faudrait que je puisse modifier au quotidien la liste des agent dans "list agent" en fonction des absents, donc le nombre d'agent peut varier chaque jour)
Pour corser un peu, il faudrait que la macro fonctionne sous excel 2000 !
Merci beaucoup d'avance pour votre aide :)
A voir également:
- Ajouter info à partir 2nd onglet
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Info pc - Guide
- Crystal disk info - Télécharger - Informations & Diagnostic
- Rouvrir onglet fermé chrome - Guide
- Ajouter à l'écran d'accueil iphone - Guide
4 réponses
J'ajoute que la database peut contenir + ou - de lignes en fonction des jours. :)
Merci d'avance pour votre aide !!
Merci d'avance pour votre aide !!
Bonjour,
Tu parles de jour, quelle est l'influence des dates inscrites en colonne A dans ton tableau ?
la solution proposée sera en VBA due à un personnel éventuellement insuffisant ....je m'absente, je regarderai en fin d'aprèm ou demain matin
Michel
Tu parles de jour, quelle est l'influence des dates inscrites en colonne A dans ton tableau ?
la solution proposée sera en VBA due à un personnel éventuellement insuffisant ....je m'absente, je regarderai en fin d'aprèm ou demain matin
Michel
ci joint proposition (attention ta liste d'agents n'auraient pas du comporter de doublons !!!...)
https://www.cjoint.com/?3JxvwWFEoEi
le code
https://www.cjoint.com/?3JxvwWFEoEi
le code
Option Explicit
Sub Repartir_w()
Dim Derlig As Byte, Cptr As Byte, Cptr_d As Byte, num As Byte
Dim T_staff, T_hijk, T_libre
Dim D_staff As Object
Dim Agent As String
'initialisations
Randomize
Application.ScreenUpdating = False
Set D_staff = CreateObject("scripting.dictionary")
With Sheets("list agent")
'mémorise la liste des agents
Derlig = .Columns("A").Find("*", , , , , xlPrevious).Row
T_staff = Application.Transpose(.Range("A2:A" & Derlig).Value)
End With
With Sheets("database")
'mémorise les critères d'attribution
Derlig = .Columns("A").Find("*", , , , , xlPrevious).Row
T_hijk = .Range("H2:K" & Derlig).Value
End With
'mémorise l'affectation aléatoire d'un agent
For Cptr = 1 To UBound(T_hijk)
If D_staff.Count = 0 Then ' initialisation au départ ou si il n'y a plus personne de disponible chez les agents _
(nbre des lignes répondant aux critères > nbre agents)
For Cptr_d = 1 To UBound(T_staff)
If Not D_staff.exists(T_staff(Cptr_d)) Then D_staff.Add T_staff(Cptr_d), ""
T_libre = D_staff.keys
Next
End If
If T_hijk(Cptr, 1) = "05K" And _
(T_hijk(Cptr, 2) = "DLV" Or T_hijk(Cptr, 2) = "CLOSED" Or T_hijk(Cptr, 2) = "RCV") Then
'tirage au sort d'un agent
num = Int(Rnd * D_staff.Count)
Agent = T_libre(num)
'affectation de l'agent
T_hijk(Cptr, 4) = Agent
'suppression de l'agent de T_libre
D_staff.Remove (Agent)
T_libre = D_staff.keys
End If
Next
'restitue l'affectation des agents
Sheets("database").Range("H2:K" & Derlig) = T_hijk
End Sub
bonjour Emma, Michel,
Une proposition par formule seulement :
https://www.cjoint.com/?BJxwLdYPTBT
Sélection des lignes concernées et ventilation des "agents" définis par formule nommée dynamique en fonction du nombre.
Une proposition par formule seulement :
https://www.cjoint.com/?BJxwLdYPTBT
=SI(ET(H2="05K";OU(I2= "DLV";I2="Closed";I2= "RCV" ));DECALER('list agent'!$A$2;MOD(SOMMEPROD((K$1:K1<>"")*1);NBVAL(Agents));0);"")
Sélection des lignes concernées et ventilation des "agents" définis par formule nommée dynamique en fonction du nombre.