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
|
Private Sub UserForm_Initialize()
Application.ScreenUpdating = False
Me.ComboBox1.AddItem "En Stock" 'Combobox permettant un affichage par défaut
Me.ComboBox1.AddItem "Prise"
ComboBox1.Style = fmStyleDropDownList
ComboBox1.ListIndex = 0
ComboBox2.Font.Size = 8 'Combobox des pathogenes, cette ligne sert à definir la taille de police
Me.ComboBox2.AddItem "ADV"
Me.ComboBox2.AddItem "Escherichia coli"
Me.ComboBox2.AddItem "HSV-1"
Me.ComboBox2.AddItem "HSV-2"
Me.ComboBox2.AddItem "Staphylococcus aureus"
Me.ComboBox2.AddItem "Staphylococcus epidermidis"
Me.ComboBox2.AddItem "Staphylococcus haemolyticus"
Me.ComboBox2.AddItem "VZV"
ComboBox3.Font.Size = 8 'Combobox des fournisseurs, cette ligne sert à definir la taille de police
Me.ComboBox3.AddItem "ATCC"
Me.ComboBox3.AddItem "WHO"
Me.ComboBox3.AddItem "Zeptometrix"
ComboBox4.Font.Size = 8 'Combobox des fournisseurs, cette ligne sert à definir la taille de police
Sheets("BD2").Visible = True 'Rendre visible BD2
Sheets("BD2").Range("D:D").Delete 'Supprimer la colonne D
Sheets("BD").Range("G2:G10000").Copy Sheets("BD2").Columns(2)
Sheets("BD2").Activate
Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
Dim NL As Integer 'déclare la variable NL (Nombre de Lignes)
Dim I As Integer 'déclare la variable I (Incrément)
Dim R As Range 'déclare la variable R (Recherche)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
TC = Range("A1:A10000") 'définit le tableau de cellules TC
NL = UBound(TC, 1) 'définit le nombre de lignes NL du tableau de cellules TC
For I = 1 To NL 'boucle sur toutes les lignes I du tableau de cellules TC
'condition si la recherche R (recherche entière de la valeur ligne I colonne 1 de TC dans la colonne 2) renvoie au moins une occurrence trouvée
If Columns(2).Find(TC(I, 1), , xlValues, xlWhole) Is Nothing Then
''definit la cellule de destination DEST (D1 si D1 est vide, sinon la première cellule vide de la colonne D)
Set DEST = IIf(Range("D1").Value = "", Range("D1"), Cells(Application.Rows.Count, 4).End(xlUp).Offset(1, 0))
DEST.Value = TC(I, 1) 'récupère dans DEST la valeur ligne I colonne 1 de TC
End If 'fin de la condition
Next I 'prochaine ligne de la boucle
Columns("D:D").Select 'Ce paragraphe sert à trier la
ActiveWorkbook.Worksheets("BD2").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("BD2").Sort.SortFields.Add2 Key:=Range("D1"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("BD2").Sort
.SetRange Range("D1:D10000")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveSheet.Range("$D$1:$D$10000").RemoveDuplicates Columns:=1, Header:=xlNo
ComboBox4.RowSource = "BD2!D1:D10000"
ComboBox4.Style = fmStyleDropDownList
Sheets("BD").Activate
Sheets("BD2").Visible = False
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 'Permet de désactiver la croix rouge en haut à droite des fenetres userform.
If CloseMode = vbFormControlMenu Then Cancel = True
End Sub
Sub CommandButton1_Click()
If ComboBox2 = "" Or TextBox2 = "" Or TextBox3 = "" Or ComboBox3 = "" Or TextBox5 = "" Or TextBox6 = "" Or ComboBox4 = "" Or ComboBox1 = "" Or TextBox7 = "" Then
MsgBox "Vous devez remplir tous les champs"
Exit Sub
End If
ligne = Sheets("BD").[A65000].End(xlUp).Row + 1
Sheets("BD").Cells(ligne, 1) = ComboBox2.Value ' Cela permet de mettre les valeurs textbox dans mes cellules
Sheets("BD").Cells(ligne, 2) = TextBox2.Value
Sheets("BD").Cells(ligne, 3) = ComboBox3.Value
Sheets("BD").Cells(ligne, 4) = TextBox3.Value
Sheets("BD").Cells(ligne, 5) = TextBox5.Value
Sheets("BD").Cells(ligne, 6) = TextBox6.Value
Sheets("BD").Cells(ligne, 7) = ComboBox4.Value
Sheets("BD").Cells(ligne, 8) = ComboBox1.Value
Sheets("BD").Cells(ligne, 9) = TextBox7.Value
ComboBox2.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
ComboBox3.Value = ""
TextBox5.Value = ""
TextBox6.Value = ""
ComboBox4.Value = ""
ComboBox1.Value = ""
TextBox7.Value = ""
Application.ScreenUpdating = False
Sheets("BD2").Visible = True
Sheets("BD2").Range("D:D").Delete
Sheets("BD").Range("G2:G10000").Copy Sheets("BD2").Columns(2)
Sheets("BD2").Activate
Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
Dim NL As Integer 'déclare la variable NL (Nombre de Lignes)
Dim I As Integer 'déclare la variable I (Incrément)
Dim R As Range 'déclare la variable R (Recherche)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
TC = Range("A1:A10000") 'définit le tableau de cellules TC
NL = UBound(TC, 1) 'définit le nombre de lignes NL du tableau de cellules TC
For I = 1 To NL 'boucle sur toutes les lignes I du tableau de cellules TC
'condition si la recherche R (recherche entière de la valeur ligne I colonne 1 de TC dans la colonne 2) renvoie au moins une occurrence trouvée
If Columns(2).Find(TC(I, 1), , xlValues, xlWhole) Is Nothing Then
''definit la cellule de destination DEST (D1 si D1 est vide, sinon la première cellule vide de la colonne D)
Set DEST = IIf(Range("D1").Value = "", Range("D1"), Cells(Application.Rows.Count, 4).End(xlUp).Offset(1, 0))
DEST.Value = TC(I, 1) 'récupère dans DEST la valeur ligne I colonne 1 de TC
End If 'fin de la condition
Next I 'prochaine ligne de la boucle
Range("D1:D10000").Sort Key1:=Range("D1"), Order1:=xlAscending
ActiveSheet.Range("$D$1:$D$10000").RemoveDuplicates Columns:=1, Header:=xlNo
Sheets("BD").Activate
Range("A2:M10000").Sort Key1:=Range("A2"), Order1:=xlAscending 'Permet de trier par ordre alphabetique les souches
Sheets("BD2").Visible = False
Application.ScreenUpdating = True
MsgBox "Votre souche a bien été encodée"
ComboBox1.ListIndex = 0 'permet de remettre une valeur par defaut à la combobox apres avoir ajouté un pathogene une premiere fois.
End Sub
Private Sub CommandButton2_Click()
Range("A2:M10000").Sort Key1:=Range("A2"), Order1:=xlAscending 'Permet de trier par ordre alphabetique les souches
Range("A1:A1").Select 'Selectionne la cellule, ajout de cette ligne suite à un bug et cette ligne règle le bug comme par magie...
ThisWorkbook.Save ' sauvegarde le classeur, empechant l'utilisateur de fermer le classeur sans sauvegarder. Empeche la perte d'information
Unload Me
End Sub |
Partager