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
| Private Sub CommandButton1_Click()
Dim elemrech As String, texte As String, debut As String, fin As String, element As String, test As String, unite As String
Dim nbelem As Integer, nbcol As Integer, nblig As Integer, dl As Integer, dcol As Integer, i As Integer, col As Integer
Dim x As Byte
'macro enregistrée le 08/03/2012 par MC
'macro permettant la création de tableau unique pour chaque éléments sur la feuille Résultats
With Sheets("Sheet1") 'on travaille sur la feuille Sheet1
nbcol = .Range("IV2").End(xlToLeft).Column 'récupèration du numéro de la dernière colonne utilisé sur la feuille Sheet1
nblig = .Range("A" & .Rows.Count).End(xlUp).Row 'récupèration du numéro de la dernière ligne utilisé sur la feuille Sheet1
nbelem = TextBox2.Value 'définition de la variable nbelem
For i = 1 To nbelem Step 1 'boucle sur la variable i
If Me.Controls("ComboBox" & i).Visible = True Then 'condition sur les ComboBox visibles
elemrech = Me.Controls("ComboBox" & i).Value 'définition de la variable elemrech
Sheets("Sheet1").Copy after:=Sheets(Sheets.Count)
ActiveSheet.Name = elemrech
With Sheets(elemrech) 'on travaille sur la feuille Résultats
For col = nbcol To 4 Step -1 'boucle sur la variable col
texte = .Cells(1, col).Text 'définition de la variable texte
If texte = "" Then 'condition sur la variable texte
.Range(.Cells(1, col), .Cells(nblig, col)).Delete Shift:=xlToLeft 'suppression de la colonne entière si la condition sur la première cellule de la colonne est vérifiée
Else
debut = InStr(1, texte, " ") + 2 'définition de la variable debut
fin = InStrRev(texte, " ") - 7 'définition de la variable fin
element = Mid(texte, debut, fin - debut) 'définition de la variable element
test = Mid(element, 1, 1) 'définition de la variable test
If test = "(" Then 'condition sur la variable test
element = Mid(texte, debut + 1, fin - debut - 2) 'définition de la nouvelle variable element si la condition précédente est vérifiée
End If 'fin de la condition
If element <> elemrech Then 'condition sur la variable element
.Range(.Cells(1, col), .Cells(nblig, col)).Delete Shift:=xlToLeft 'suppression de la colonne entière si la condition sur la première cellule de la colonne est vérifiée
End If 'fin de la condition
End If 'fin de la condition
Next col 'valeur suivante de la variable col
dcol = .Range("IV1").End(xlToLeft).Column 'récupèration du numéro de la deuxièmre colonne vide sur la feuille elemrech
.Range(Cells(1, dcol + 2), Cells(nblig, dcol + 2)).Select
texte = .Cells(2, dcol).Text 'définition de la variable texte
debut = InStr(1, texte, " ") + 3 'définition de la variable debut
fin = InStrRev(texte, " ") 'définition de la variable fin
unite = Mid(texte, debut, fin - debut) 'définition de la variable unite
.Cells(1, dcol + 2).Value = elemrech 'définition du texte de la cellule définie
.Cells(2, dcol + 2).Value = unite 'définition du texte de la cellule définie
For x = 3 To nblig
.Cells(x, dcol + 2).Value = WorksheetFunction.Average(.Range(Cells(x, 4), Cells(x, dcol)))
Next x
End With 'on quitte la feuille Résultats
End If 'fin de la condition sur les comBoBox visibles
Next i 'valeur suivante de la variable i
End With 'on quitte la feuille Sheet1
UserForm1.Hide 'fermeture de la UserForm1
End Sub 'sortie de la macro |
Partager