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 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257
| Dim bd, f, temp
Private Sub UserForm_Initialize()
Dim i&, a&, aa, bb
' Met en gras les noms de Sociétés
POSTE.Font.Bold = True
'on remplit la liste ZONE par les données de la colonne 4
Remplir Me.ZONE, 4
'on remplit la liste TYPESOCIETE par les données de la colonne 5
Remplir Me.TYPESOCIETE, 5
'on remplit la liste PRENOMCONTACT par les données de la colonne 8
Remplir Me.PRENOMCONTACT, 8
'on remplit la liste VILLESOCIETE par les données de la colonne 17
Remplir Me.VILLESOCIETE, 17
'on remplit la liste LOGIN par les données de la colonne 22
Remplir Me.LOGIN, 22
'on remplit la liste MDP par les données de la colonne 23
Remplir Me.MDP, 23
'on remplit la liste ANNONCESBYMAIL par les données de la colonne 24
Remplir Me.ANNONCESBYMAIL, 24
'on remplit la liste POSTE par les données de la colonne 32
Remplir Me.POSTE, 32
'on remplit la liste CONTRAT par les données de la colonne 33
Remplir Me.CONTRAT, 33
'on remplit la liste LIEU par les données de la colonne 34
Remplir Me.LIEU, 34
'on remplit la liste REMUNERATION par les données de la colonne 35
Remplir Me.REMUNERATION, 35
'on remplit la liste EXTECANDIDATURE par les données de la colonne 41
Remplir Me.TEXTECANDIDATURE, 40
'on remplit la liste COMMENTAIRESCANDIDATURE par les données de la colonne 41
Remplir Me.COMMENTAIRESCANDIDATURE, 41
' Met en forme la LISTVIEW
Set f = Sheets("BASE EMPLOI")
Set d = CreateObject("Scripting.Dictionary")
Set bd = f.Range("a2:m" & f.[m65000].End(xlUp).Row)
aa = f.Range("C2:M" & f.[A65536].End(xlUp).Row)
For i = 1 To bd.Rows.Count
If bd.Cells(i, 1) <> "" Then d(bd.Cells(i, 1).Value) = ""
Next i
For i = 1 To UBound(aa)
aa(i, UBound(aa, 2)) = i + 1
Next i
temp = d.keys
Call Trin2(temp, LBound(temp), UBound(temp))
Me.ComboBox1.List = temp
ReDim bb(1 To UBound(aa), 1 To UBound(aa, 2)): n = 1
For i = 1 To UBound(aa)
If aa(i, 1) = ActiveSheet.Cells(ActiveCell.Row, 1) Then
For a = 1 To UBound(aa, 2)
bb(n, a) = aa(i, a)
Next a
n = n + 1
End If
Next i
With L1
With .ColumnHeaders
.Clear
.Add , , "Société", 60
.Add , , "Zone", 60, 2
.Add , , "Type", 100, 2
.Add , , "Coordo", 50, 2
.Add , , "Nom", 80, 2
.Add , , "Prénom", 90, 2
.Add , , "Fonction", 60, 2
.Add , , "Téléphone", 60, 2
.Add , , "Portable", 60, 2
.Add , , "Mail", 60, 2
End With
.ListItems.Clear
.View = lvwReport
.FullRowSelect = 0
.Gridlines = True
For i = 1 To UBound(bb)
If bb(i, 1) <> "" Then
.ListItems.Add , , bb(i, 1)
For a = 2 To UBound(bb, 2)
.ListItems(.ListItems.Count).ListSubItems.Add , , bb(i, a)
Next a
End If
Next i
End With
End Sub
Private Sub ComboBox1_Click()
Dim a()
n = Application.CountIf(Application.Index(bd, , 3), Me.ComboBox1)
ReDim a(1 To n, 1 To bd.Columns.Count)
ligne = 0
For i = 1 To bd.Rows.Count
If bd.Cells(i, 1) = Me.ComboBox1 Then
ligne = ligne + 1
For k = 1 To bd.Columns.Count: a(ligne, k) = bd.Cells(i, k): Next k
End If
Next i
Me.L1.List = a()
End Sub
'On remplit la listbox ou la combobox LST par les données de la colonne COL
Private Sub Remplir(ByVal LST As Object, ByVal Col As Integer)
Dim MonDico As Object
Dim f As Worksheet
Dim c As Range
Dim temp()
Set MonDico = CreateObject("Scripting.Dictionary")
Set f = Worksheets("BASE EMPLOI")
With f
For Each c In .Range(.Cells(2, Col), .Cells(.Rows.Count, Col).End(xlUp))
If c.Value <> "" Then MonDico.Item(c.Value) = c.Value
Next c
End With
Set f = Nothing
temp = MonDico.items
Set MonDico = Nothing
Call Tri(temp, LBound(temp), UBound(temp))
LST.List = temp
End Sub
Sub Tri(a(), ByVal gauc As Long, ByVal droi As Long) ' Quick sort
Dim G As Long, d As Long
Dim Ref, temp
Ref = a((gauc + droi) \ 2)
G = gauc: d = droi
Do
Do While a(G) < Ref: G = G + 1: Loop
Do While Ref < a(d): d = d - 1: Loop
If G <= d Then
temp = a(G): a(G) = a(d): a(d) = temp
G = G + 1: d = d - 1
End If
Loop While G <= d
If G < droi Then Call Tri(a, G, droi)
If gauc < d Then Call Tri(a, gauc, d)
End Sub
Private Sub ANNONCE_Click()
Dim c As Range
On Error Resume Next
With Sheets("BASE EMPLOI")
Set c = .Cells(Application.Match(CODEBASE, .[A:A], 0), "AN")
End With
c.Hyperlinks(1).Follow True
Application.Goto Range(c.Hyperlinks(1).SubAddress)
End Sub
Private Sub SORTIE_Click()
Dim L As Integer
Dim celluletrouvee As Range
Worksheets("BASE EMPLOI").Select
If MsgBox("Modifier la Base ? ", vbYesNo, " Demande de confirmation dajout ") = vbYes Then
Set celluletrouvee = Range("A2:A1000").Find(CODEBASE, LookAt:=xlWhole)
L = celluletrouvee.Row
Range("A" & L).Value = CODEBASE
Range("B" & L).Value = USER
Range("C" & L).Value = SOCIETE
Range("D" & L).Value = ZONE
Range("E" & L).Value = TYPESOCIETE
Range("G" & L).Value = NOMCONTACT
Range("H" & L).Value = PRENOMCONTACT
Range("I" & L).Value = FONCTIONCONTACT
Range("J" & L).Value = TELEPHONECONTACT
Range("K" & L).Value = PORTABLECONTACT
Range("L" & L).Value = MAILCONTACT
Range("N" & L).Value = ADRESSESCOCIETE
Range("P" & L).Value = CPSOCIETE
Range("Q" & L).Value = VILLESOCIETE
Range("R" & L).Value = SITESOCIETE
Range("T" & L).Value = DATEINSCRIPTION
Range("U" & L).Value = DATEMAJ
Range("V" & L).Value = LOGIN
Range("W" & L).Value = MDP
Range("X" & L).Value = ANNONCESBYMAIL
Range("Y" & L).Value = COMMENTAIRES
Range("AF" & L).Value = POSTE
Range("AG" & L).Value = CONTRAT
Range("AH" & L).Value = LIEU
Range("AI" & L).Value = REMUNERATION
Range("AJ" & L).Value = DATEANNONCE
Range("AK" & L).Value = DATEREPONSE
Range("AL" & L).Value = RELANCE
Range("AM" & L).Value = DATERETOUR
Range("AN" & L).Value = TEXTECANDIDATURE
Range("AO" & L).Value = COMMENTAIRESCANDIDATURE
Range("AT" & L).Value = NBENTRETIENS
Range("AZ" & L).Value = CRENTRETIENS
'Génére RDV GOOGLEAGENDA
If MODIFRDV.Value = True Then
Range("AQ" & L).Value = ""
End If
End If
Unload Me
'Evite le scintillement de l'écran
Worksheets("GESTION").Select
Application.ScreenUpdating = True
End Sub
Private Sub SUPPRIMER_Click()
'ici on va faire plus simple et plus rapide que ta boucle do/loop
If CODEBASE <> "" Then
With Sheets("BASE EMPLOI").Range("a1:a" & Sheets("BASE EMPLOI").Cells(Rows.Count, 1).End(xlUp).Row) ' avec la plage a1 jusqu'a la derniereligne rempli _
du sheets "BASE EMPLOI"
Set c = .Find(CODEBASE, LookIn:=xlValues) 'on va tester si le nom qui est dans le "CODE EMPLOI" existe
If Not c Is Nothing Then 'si il existe
Sheets("BASE EMPLOI").Rows(.Find(CODEBASE, LookIn:=xlValues).Row).Delete
'la ligne comportant ce nom sera supprimer
Else
' si il existe pas le message box te le signalant
MsgBox "ce nom n'existe pas" & vbCrLf & "entrez un nom a nouveau"
End If
End With
End If
'ici on vide les textboxs pour eviter de reloader le userform comme tu le fesait avant
For Each ctrl In Me.Controls
If TypeName(ctrl) = "TextBox" Then ctrl.Value = ""
Next
Unload Me
End Sub
Sub LISTING()
'Remplit la Listview avec les données d'Excel
L1.ListItems.Clear
Set f = Sheets("BASE EMPLOI")
Entetes = Array("b", "C", "G", "H", "I", "J", "K", "L")
Set plage = f.Range("b2:b" & f.Range("b65000").End(xlUp).Row)
For Each cel In plage
With L1
.ListItems.Add , , cel
For nbr = 1 To 7
.ListItems(.ListItems.Count).ListSubItems.Add , , f.Cells(cel.Row, Entetes(nbr)) 'Cel.Offset(0, 1)
Next
End With
Next
End Sub
Private Sub L1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
'Permet le classement par clic sur le titre de la colonne
L1.Sorted = False
L1.SortKey = ColumnHeader.Index - 1
If L1.SortOrder = lvwAscending Then
L1.SortOrder = lvwDescending
Else
L1.SortOrder = lvwAscending
End If
L1.Sorted = True
End Sub
Private Sub MODIFICATIONS_Click()
Dim i As Integer, j As Integer
'Boucle sur toutes les lignes
For i = 1 To L1.ListItems.Count
Cells(i, 1) = L1.ListItems(i).Text
'Boucle sur les colonnes
For j = 1 To L1.ColumnHeaders.Count - 1
Cells(i, j + 1) = L1.ListItems(i).ListSubItems(j).Text
Next j
Next i
End Sub |
Partager