Re : Insertion de formule si contenu d'une autre cellule non-vide par code VBA.....
Bonjour à tous,
J'ai trouvé probablement la solution mais j'ai une erreur d'exécution 1004 et il est écrit Impossible de lire la propriété VLookup de la classe WorsheetFunction
Je comprend bien qu'il n'arrive pas à lire la fonction VLookup pour une raison. J'ai même changé le .Cells(I, 5) par Range("G" & I) et j'ai une autre erreur. Comme vous pouvez le constatez 5e colonne devrait être un Emais j'ai G ce qui en vient qu'à vous dire que j'ai des cellules fusionné, peut être la source du Pb mais j'en doute.
Private Sub Worksheet_Change(ByVal Target As Range)
If Application.Intersect(Target, Range("R35:R74")) 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 = 35 To 74
If Sheets("Détail projet").Cells(I, 18) < Application.WorksheetFunction.VLookup(Sheets("Détail projet").Cells(I, 5), Sheets("Prévisions listées").Range("A2:V101"), 9, False) - (0.1 * (Application.WorksheetFunction.VLookup(Sheets("Détail projet").Cells(I, 5), Sheets("Prévisions listées").Range("A2:V101"), 9, False))) Then
Sheets("Détail projet").Cells(I, 21) = Application.WorksheetFunction.VLookup(Sheets("Détail projet").Cells(I, 5), Sheets("Prévisions listées").Range("A2:V101"), 19, False)
Else
If Sheets("Détail projet").Cells(I, 18) > Application.WorksheetFunction.VLookup(Sheets("Détail projet").Cells(I, 5), Sheets("Prévisions listées").Range("A2:V101"), 9, False) + (0.1 * (Application.WorksheetFunction.VLookup(Sheets("Détail projet").Cells(I, 5), Sheets("Prévisions listées").Range("A2:V101"), 9, False))) Then
Sheets("Détail projet").Cells(I, 21) = Application.WorksheetFunction.VLookup(Sheets("Détail projet").Cells(I, 5), Sheets("Prévisions listées").Range("A2:V101"), 20, False)
Else
Sheets("Détail projet").Cells(I, 21) = Application.WorksheetFunction.VLookup(Sheets("Détail projet").Cells(I, 5), Sheets("Prévisions listées").Range("A2:V101"), 18, False)
End If
End If
Next
End If
End sub
Je joint un fichier où tout fonctionne à merveille. Si vous effacer les donner de la feuille dans la colonne A et que vous remettez les mêmes valeurs vous verrez que les résultat des colonnes D et G sont les mêmes ce que je voulais. J'ai pris le même code et j'ai une erreur de compilation de code VBA.
Si qqu connaît la source du Pb ça serait très apprécier.
Grand Merci à l'avance
Neo