1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim BM As Worksheet 'déclare la variable BM (Basse Mère)
Dim BR As Worksheet 'déclare la variable BR (Basse à Remplir)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim C As String 'déclare la variable C (Catégorie)
Dim TE As String 'déclare la variable TE (Type d'Espace)
Dim I As Long 'déclare la variable I (Incrément)
Set BM = Worksheets("BD_mere") 'définit l'onglet BM
Set BR = Worksheets("BD_aremplir") 'définit l'onglet BR
TV = BM.Range("a1").CurrentRegion 'définit le tableau des valeurs TV
'définit la catégorie C, si C est vide, sélectione la cellule en colonne A, message, sort de la procédure
C = Me.Cells(Target.Row, "A"): If C = "" Then Me.Cells(Target.Row, "A").Select: MsgBox "Renseigner la catégorie": Exit Sub
'définit le type d'espace TE, si TE est vide, sélectione la cellule en colonne B, message, sort de la procédure
TE = Me.Cells(Target.Row, 2): If TE = "" Then Me.Cells(Target.Row, 2).Select: MsgBox "Renseigner le type d'espace": Exit Sub
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
'condition : si la donnée ligne I colonne 1 de TV est égale à C et si la donnée ligne I colonne 2 de TV est égale à TE
If TV(I, 1) = C And TV(I, 2) = TE Then
'renvoie la ligne I du tableau TV dans la cellue redimensionnée ligne de la cellule double-cliquée colonne A
Me.Cells(Target.Row, "A").Resize(1, UBound(TV, 2)).Value = Application.Index(TV, I)
Exit For 'sort de la boucle
End If 'fin de la condition
Next I 'prochaine ;igne de la boucle
End Sub |
Partager