Bonjour tout le monde,

D'après le FAQ de Skyroad, il est possible d'utiliser le code ci dessous en utilisant une seule variable :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim i As Long
If Sh.Name <> "Feuil1" Or Target.Address(0, 0) <> "G26" Then Exit Sub
While Sh.Range("G26") > Worksheets("Fusible").Range("A" & i + 3)
    i = i + 1
Wend
Sh.Range("G27") = Worksheets("Fusible").Range("A" & i + 3)
If Sh.Range("G26") = "" Then
     Sh.Range("G27") = ""
End If
End Sub

Donc je m'étais dit que je pouvais extrapoler ce système avec un nombre indéfini de variable (par la suite, je me suis rendu compte que ce que j'avais supposé était faux)

J'ai voulu appliquer le code suivant (pour une application differente de la première) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
 
Dim m As Integer, n As Integer, p As Integer
 
If Sh.Name <> "Feuil1" Or Target.Address(0, 0) <> "G14" Then Exit Sub
If Sh.Name <> "Feuil1" Or Target.Address(0, 0) <> "K10" Then Exit Sub
 
 
For p = 1 To 5
    If Worksheets("Feuil1").Range("G14") = Worksheets("Feuil2").Cells(27, 1 + p) Then
        Exit For
    End If
Next
 
If ComboBox1.Value = Worksheets("Feuil3").Range("A2") Then
 
    For m = 1 To 5
        If Dispo.Value = Worksheets("Feuil2").Cells(12, m + 1) Then
            Exit For
        End If
    Next
    For n = 1 To 12
        If Worksheets("Feuil1").Range("G14") = Worksheets("Feuil2").Range("A" & 12 + n) Then
            Exit For
        End If
    Next
 
    Worksheets("Feuil2").Range("B2") = Worksheets("Feuil2").Cells(12 + n, m + 1) * Worksheets("Feuil2").Cells(28, 1 + p)
 
ElseIf ComboBox1.Value = Worksheets("Feuil3").Range("A1") Then
 
    For n = 1 To 12
        If Worksheets("Feuil1").Range("G14") = Worksheets("Feuil2").Range("K" & 12 + n) Then
            Exit For
        End If
    Next
 
    Worksheets("Feuil2").Range("B2") = Worksheets("Feuil2").Range("L" & n + 12) * Worksheets("Feuil2").Cells(28, 1 + p)
 
End If
 
End Sub

Problème : quand je touche soit à la cellule "G14" en "Feuil1", soit à la cellule "K10" de la "Feuil1", le code affiche un message d'erreur comme étant une "forme ambiguë".

je voudrais savoir quelle(s) modification(s) apporter afin de gérer un résultat (ici, en "B2" de la "Feuil2") en fonction de plusieurs variables (ici, 2)

Merci de votre attention.

PS : si vous avez des pistes au niveau du tutoriel et/ou du FAQ, je suis preneur car j'ai cherché toute l'après midi, et je dois admettre que je sèche un peu