Re : Faire exécute un code VBA si une donnée à changer de valeur dans une plage...
Bonjour à tous,
J'ai trouvé la solution à ma problématique. Je joint le fichier.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B2:B10")) Is Nothing Then
If Selection.Cells.Count > 1 Then Exit Sub 'limite l'action a une seule cellule
If Target.Value = "" Then 'condition : si la cellule est effacée
Target.Offset(0, 2).Value = "" 'efface la cellule de la colonne D
Else 'sinon
For I = 2 To 10
On Error Resume Next
If Sheets("Feuil1").Cells(I, 2) < Application.WorksheetFunction.VLookup(Sheets("Feuil1").Cells(I, 1), Sheets("Tableau").Range("A2:G11"), 4, False) - (0.1 * (Application.WorksheetFunction.VLookup(Sheets("Feuil1").Cells(I, 1), Sheets("Tableau").Range("A2:G11"), 4, False))) Then
Sheets("Feuil1").Cells(I, 4) = Application.WorksheetFunction.VLookup(Sheets("Feuil1").Cells(I, 1), Sheets("Tableau").Range("A2:G11"), 6, False)
Else
If Sheets("Feuil1").Cells(I, 2) > Application.WorksheetFunction.VLookup(Sheets("Feuil1").Cells(I, 1), Sheets("Tableau").Range("A2:G11"), 4, False) + (0.1 * (Application.WorksheetFunction.VLookup(Sheets("Feuil1").Cells(I, 1), Sheets("Tableau").Range("A2:G11"), 4, False))) Then
Sheets("Feuil1").Cells(I, 4) = Application.WorksheetFunction.VLookup(Sheets("Feuil1").Cells(I, 1), Sheets("Tableau").Range("A2:G11"), 7, False)
Else
Sheets("Feuil1").Cells(I, 4) = Application.WorksheetFunction.VLookup(Sheets("Feuil1").Cells(I, 1), Sheets("Tableau").Range("A2:G11"), 5, False)
End If
End If
Next
End If
End If
If Application.Intersect(Target, Range("A2:A10")) Is Nothing Then Exit Sub 'limite l'action a la plage A2:A10
If Selection.Cells.Count > 1 Then Exit Sub 'limite l'action a une seule cellule
If Target.Value = "" Then 'condition : si la cellule est effacée
Target.Offset(0, 3).Value = "" 'efface la cellule de la colonne D
Else 'sinon
For I = 2 To 10
On Error Resume Next
If Sheets("Feuil1").Cells(I, 2) < Application.WorksheetFunction.VLookup(Sheets("Feuil1").Cells(I, 1), Sheets("Tableau").Range("A2:G11"), 4, False) - (0.1 * (Application.WorksheetFunction.VLookup(Sheets("Feuil1").Cells(I, 1), Sheets("Tableau").Range("A2:G11"), 4, False))) Then
Sheets("Feuil1").Cells(I, 4) = Application.WorksheetFunction.VLookup(Sheets("Feuil1").Cells(I, 1), Sheets("Tableau").Range("A2:G11"), 6, False)
Else
If Sheets("Feuil1").Cells(I, 2) > Application.WorksheetFunction.VLookup(Sheets("Feuil1").Cells(I, 1), Sheets("Tableau").Range("A2:G11"), 4, False) + (0.1 * (Application.WorksheetFunction.VLookup(Sheets("Feuil1").Cells(I, 1), Sheets("Tableau").Range("A2:G11"), 4, False))) Then
Sheets("Feuil1").Cells(I, 4) = Application.WorksheetFunction.VLookup(Sheets("Feuil1").Cells(I, 1), Sheets("Tableau").Range("A2:G11"), 7, False)
Else
Sheets("Feuil1").Cells(I, 4) = Application.WorksheetFunction.VLookup(Sheets("Feuil1").Cells(I, 1), Sheets("Tableau").Range("A2:G11"), 5, False)
End If
End If
Next
End If
End Sub
Le code en rouge est l'ajout que j'ai fait pour ainsi arriver à faire en colonne B ce qu'il se faisait en colonne A. Il suffisait de savoir où mettre le code car c'était le même principe....
Je suis plutôt content d'avoir trouver ça seul car je ne suis pas programmeur et tout le code je l'ai créer à taton en quelque sorte, j'avais une bonne idée mais comme je ne connais pas la synthaxe et le reste alros j'ai pris des bouts de code que j'ai mis ensemble et avec ma logique Math le tout c'est bien ficelé.
Je joint le fichier si cela peut aider quelqu'un qui veut arriver à faire quelque chose de semblable...
Merci encore
Neo