Trier à partir une base de donnée complex

creolia

XLDnaute Impliqué
Bonsoir à tous

je suis bloquer sur une extraction de la BDD je sais pas si c'est possible mais pour moi c'est compliquer

en fait j'ai une BDD de 80 sapeurs on utilise un programme en ligne de gestion de disponibilité avec extraction en CSV autant dire excel

les journée sont divisé en 3 partis Matin Apres-midi nuit

donc l'extraction donne exemple

Agent1 M
A
N


évidement tous les sapeur sont pas disponible tous les jours et toute les période de la journée

je cherche donc une solution pour extraire la BDD et classer par date de jour qui est disponible dans les 3 période

je vous ai fais un fichier

avec la source de ma BDD et le résultat attendu

j’espère vous pourrez m'aider je souhaite pas une liste déroulante un membre ma gentillement proposé y a quelque semaine sa c'est pas un soucis mais bien une liste comme dans l'onglet résultat

je vous remercie par avance pour mon petit centre de secours
 

Pièces jointes

  • TESTE.xlsx
    9.9 KB · Affichages: 50
  • TESTE.xlsx
    9.9 KB · Affichages: 45

creolia

XLDnaute Impliqué
Re : Trier à partir une base de donnée complex

Re bonjour à tous je viens vous demander un complément d'information si vous voulez bien m'aider.

j'utilise la macro que dranreb ma sympathiquement donner qui fonctionne très bien au passage mais je souhaiterais l'ajouter un élément supplémentairement à M, A,N je voudrais ajouter "Pro" comment puis je faire svp merci j'ai tenter cela

Code:
Sub Test2()
Dim TE(), LE&, CE&, TS(), LS&, CS&, TLC&()
TE = Feuil2.UsedRange.Value
ReDim TS(1 To UBound(TE, 1) \ 3 + 1, 1 To UBound(TE, 2) * 3 - 2)
ReDim TLC(1 To UBound(TS, 2))
For LE = 2 To UBound(TE, 1)
   For CE = 2 To UBound(TE, 2)
      Select Case TE(LE, CE)
         Case "M": CS = CE * 3 - 5
         Case "A": CS = CE * 3 - 4
         Case "N": CS = CE * 3 - 3

 Case "Pro": CS = CE * 3 - 3
Case "Pro": CS = CE * 3 - 3
Case "Pro": CS = CE * 3 - 3

         Case Else: CS = 0: End Select
      If CS > 0 Then
         LS = TLC(CS) + 1: TLC(CS) = LS
         TS(LS, CS) = TE(LE - (LE - 2) Mod 3, 1)
         End If: Next CE, LE
Feuil1.[B3].Resize(UBound(TS, 1), UBound(TS, 2)).Value = TS
End Sub

sa fonctionne mais au lieux me mettre dans matin après midi ou Nuit il me met tous dans matin

ou es ce qui faut je modifie cela svp merci
 

Pièces jointes

  • TESTE3-6.xlsm
    19.7 KB · Affichages: 32

Dranreb

XLDnaute Barbatruc
Re : Trier à partir une base de donnée complex

Bonjour.
Où voulez vous que ça aille un "Pro" ?

Notez que ça irait dans la même position que celle de la ligne en écrivant ainsi le Select Case :
VB:
      Select Case TE(LE, CE)
         Case "M":   CS = CE * 3 - 5
         Case "A":   CS = CE * 3 - 4
         Case "N":   CS = CE * 3 - 3
         Case "Pro": CS = CE * 3 + (LE - 2) Mod 3 - 5
         Case Else:  CS = 0: End Select
 
Dernière édition:

creolia

XLDnaute Impliqué
Re : Trier à partir une base de donnée complex

Bonjour dranreb je veux qu'il aille dans la colonne qui lui soit propre

je m'explique
Rapel

Agent1 'Matin
'Apres midi
' Nuit

je veux que si je met Pro dans la première ligne il aille dans matin la seconde ligne Après midi et 3eme ligne dans la colonne nuit


je sais pas si j était clair
 

Dranreb

XLDnaute Barbatruc
Re : Trier à partir une base de donnée complex

Oui, c'est ce que fait le code que j'ai proposé.
Si chacune des 3 lignes est réservé successivement à Matin, Après-midi, Nuit, on n'aurait même plus besoin de tester M, A, N, on pourrait toujours faire CS = CE * 3 + (LE - 2) Mod 3 - 5 du moment que ce n'est pas vide.
 

creolia

XLDnaute Impliqué
Re : Trier à partir une base de donnée complex

Re oui je te confirme que chacun de ses ligne sont réserver à M A N à part Pro qui peut etre dans les 3 en meme temps et donc extraire dans les bonne colonne

desoler j'avais pas vue ton dernier code je teste sa des cette aprem merci encore
 

Discussions similaires

Statistiques des forums

Discussions
312 520
Messages
2 089 298
Membres
104 092
dernier inscrit
karbone57