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
| Sub Macro1()
Dim Ro As Worksheet 'déclare la variable RO (onglet RO)
Dim BE As Variant 'déclare la variable BE (Boîte d'Entrée)
Dim OD As Worksheet 'déclare la variable OD (Onglet de Destination)
Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
Dim K As Integer 'déclare la variable K (incrément)
Dim I As Integer 'déclare la variable I (Incrément)
Dim TL() As Variant 'déclare la variable TL (Tableau de Lignes)
Dim J As Integer 'déclare la variable J (incrément)
Set Ro = Sheets("RO") 'définit l'onglet RO
BE = Application.InputBox("Tapez le nom du robot !", "NOM DU ROBOT", Type:=2) 'définit la boîte d'entrée BE
If BE = False Or BE = "" Then Exit Sub 'si bouton [Annuler] ou [OK} avec BE non renseignée, sort de la procédure
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
Set OD = Sheets(BE) 'définit l'onglet de destination OD (si c'est onglet n'existe pas génère une erreur)
If Err <> 0 Then 'condition : si une erreur a été générée
Err.Clear 'supprime l'erreur
Sheets.Add after:=Ro 'ajoute un onglet apres l'onglet RO
ActiveSheet.Name = BE
Set OD = ActiveSheet 'définit l'onglet de destination OD
End If 'fin de la condition
On Error GoTo 0 'annule la gestion des erreurs
OD.Cells.ClearContents 'efface d'enventuelles ancienne données de l'onglet OD
Ro.Range("A1:K8").Copy OD.Range("A1") 'copie le haut du tableau et le colle dans l'onglet OD
TC = Ro.Range("A8").CurrentRegion 'définit le tableau de cellules TC
K = 1 'initialise la variabel K
For I = 2 To UBound(TC, 1) 'boucle 1 : sur toutes les lignes I du tableau de cellules TC
'condition : si la valuer ligne I colonne 10 (=> colonne J) de TC contient BE (sans tenir compte de la casse)
If UCase(TC(I, 10)) Like "*" & UCase(BE) & "*" Then
'redimensionne le tableau TL (autant de lignes de TC a de colonnes, K colonnes)
ReDim Preserve TL(1 To UBound(TC, 2), 1 To K)
For J = 1 To UBound(TC, 2) 'boucle 2 : sur toutes les colonnes de TC
TL(J, K) = TC(I, J) 'récupère dans la ligne de TL la valeur de la colonne de TC (Transposition)
Next J 'prochaine colonne de la boucle 2
K = K + 1 'incrément K (ajoute une colonne à TC
End If 'fin de la condition
Next I 'prochaine ligne de la boucle 1
'si K est égale à un (=> aucune occurrence trouvée), message, sort de la procédure
If K = 1 Then MsgBox "Aucune occurrence trouvée !": Exit Sub
'renvoie dans la cellule A9 (redimensionnées) de l'onglet OD le tableau TL transposé
OD.Range("A9").Resize(UBound(TL, 2), UBound(TL, 1)).Value = Application.Transpose(TL)
'tri décroissant sur le nombre d'événements
OD.Sort.SortFields.Clear
OD.Sort.SortFields.Add Key:=OD.Range("G8"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With OD.Sort
.SetRange OD.Range("A8").CurrentRegion
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub |
Partager