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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
| Sub Planning()
Dim Lig As Long
Dim Col As Long
Dim Lig2 As Long
Dim Col2 As Long
Dim Stag As String
Dim V As String
Dim Ref As Date
Dim Ref2 As Date
Dim Ref3 As Date
Dim C As Long
Dim I As Long
Dim Cod As String
Dim Lig3 As Long
Dim Lig4 As Long
Dim LongueurCod As Long
Dim LongueurStag As Long
Dim Cible As String
Dim Debut As Long
Dim Longueur As Long
Dim Compteur As Long
Dim Compteur2 As Long
Dim CompteurTxt As String
Lig = 3
Lig2 = 2
Col2 = 32
Application.ScreenUpdating = False
' Vidage du planning
Range("G3", "M1050").ClearContents
Rows("3:1664").EntireRow.AutoFit
Workbooks.Open "\\Uf11-001\EIFORMAFIN\Gestion financière - formation (kieffesa)\Etudes\Bases données\00-CDECDFC (avec modif PIDGES).xls"
Windows("00-CDECDFC (avec modif PIDGES).xls").Activate
'Workbooks(1).ActiveSheet.Cells(1, 2).Formula = Workbooks(2).ActiveSheet.Cells(1, 2).Formula
' Sheets("Base").Activate
' Selection de la colonne cible en fonction du gestionnaire
While Cells(Lig2, 1) <> ""
' si quelque chose dans cette cellule(donc une absence) on zappe cette ligne
If Trim(Cells(Lig2, 17)) <> "" Then GoTo Boucle
If Trim(Cells(Lig2, 5)) >= "M1000" And Trim(Cells(Lig2, 5)) <= "M1050" Then GoTo Boucle
Select Case Trim(Cells(Lig2, 29))
Case "FAULSO"
Col = 7
Case "FURSTDA"
Col = 8
Case "HANTZOVI"
Col = 9
Case "HONOLDLA"
Col = 10
Case "JACQUEMR"
Col = 11
Case "MASTIOSO"
Col = 12
Case "VENANTIS"
Col = 13
Case Else
GoTo Boucle
End Select
' Récupération dans le fichier source des données que je vais inscrire dans la colonne cible
' libelle stage
Stag = Trim(Cells(Lig2, 6))
' Code stage
Cod = Cells(Lig2, 7)
' Date début
Ref = Cells(Lig2, 18)
' Date fin
Ref2 = Cells(Lig2, 19)
' On se place dans la feuille cible
Windows("Planning Logistique Réseau.xls").Activate
Sheets("Planning").Activate
' en début de fichier (ici ligne733)
Lig3 = 3
' Ref3 egal date debut
Ref3 = Ref
' Il y a peut etre quelque chose a faire tant que la date du planning est inf ou egal a la date fin
While Cells(Lig3, 3) <= Ref2
'definition de la cible
' Si ligne egal date debut stage
If Cells(Lig3, 3) = Ref Then
Do
' Si le stage est déjà dans la cellule
Cible = Cells(Lig3, Col)
Debut = InStr(Cible, Cod)
Select Case Debut
Case Is <> 0
LongueurCod = Len(Cod)
LongueurStag = Len(Stag)
Longueur = Debut + LongueurCod + LongueurStag + 4
Compteur = Mid(Cible, Longueur, 2)
Compteur2 = Compteur + 1
CompteurTxt = Right("00" & Compteur2, 2)
Mid(Cible, Longueur, 2) = CompteurTxt
Cells(Lig3, Col) = Cible
Case Else
' Alors on inscrit le code stage et le libelle stage dans la cellule
Cells(Lig3, Col) = Cells(Lig3, Col) & Chr(10) & Cod & "-" & Stag & " : " & "01"
End Select
' on ajoute un jour à ref3
Ref3 = Date + 1
' On descent d'une ligne sur le planning
Lig4 = Lig3 + 1
If Cells(Lig4, 3) > Ref2 Then Exit Do
Lig3 = Lig3 + 1
'If Cells(Lig4, 3) <= Ref2 Then Lig3 = Lig4
' On continue d'inscrire ce stage dans les jours suivants du planning tant que jour du planning est plus petit ou egal a date fin(Ref2)
Loop Until Cells(Lig3, 3) > Ref2
End If
Lig3 = Lig3 + 1
Wend
' On passe à la ligne suivante dans le fichier source
Boucle:
Windows("00-CDECDFC (avec modif PIDGES).xls").Activate
'Sheets("Base").Activate
Lig2 = Lig2 + 1
Wend
Windows("00-CDECDFC (avec modif PIDGES).xls").Close
Windows("Planning Logistique Réseau.xls").Activate
Sheets("Planning").Activate
Application.ScreenUpdating = True
End Sub |
Partager