Bonsoir le forum,
voila j'ai un onglet devis avec des menus déroulants dans une colonne
ces intitulés vont déclencher dans une autre colonne un choix de matériaux ou de main d'oeuvre.
apres avoir choisi un matériaux j'aimerais que les valeurs des cellules correspondantes au matériaux se mettent dans les cellules adjacentes comme sur le code ci dessous.
mon soucis :
après le choix du matériau c est lent .... et si je rajoute une deuxieme ligne de valeur a ajouter ca beugue encore plus voire aucuns résultats.
Dois je mettre le code find pour éviter les if = valeur ?
merci pour votre aide.
voila j'ai un onglet devis avec des menus déroulants dans une colonne
ces intitulés vont déclencher dans une autre colonne un choix de matériaux ou de main d'oeuvre.
apres avoir choisi un matériaux j'aimerais que les valeurs des cellules correspondantes au matériaux se mettent dans les cellules adjacentes comme sur le code ci dessous.
mon soucis :
après le choix du matériau c est lent .... et si je rajoute une deuxieme ligne de valeur a ajouter ca beugue encore plus voire aucuns résultats.
Dois je mettre le code find pour éviter les if = valeur ?
merci pour votre aide.
VB:
Private Sub Worksheet_change(ByVal Target As Range)
Dim i As Integer
For i = 16 To 45
If Target.Address = Cells(i, 3) Then
Else
If Cells(i, 3).Value = "Materiaux" Then
Range(Cells(i, 4), Cells(i, 9)).Interior.ColorIndex = 34
Cells(i + 1, 4).Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="='ressources materiaux'!$C$2:$C$100"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
If Cells(i + 1, 4).Value = "Parquet flottant 1" Then
Cells(i + 1, 6).Value = Worksheets("Ressources materiaux").Cells(2, 2).Value
Else
If Cells(i + 1, 4).Value = "Parquet flottant 2" Then
Cells(i + 1, 6).Value = Worksheets("Ressources materiaux").Cells(3, 2).Value
Else
End If
End If
If Cells(i, 4).Value <> "" Then
End If
If Cells(i, 3).Value = "Main d'oeuvre" Then
Range(Cells(i, 4), Cells(i, 9)).Interior.ColorIndex = 24
Cells(i + 1, 4).Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="='Main d''oeuvre'!$B$2:$B$100"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
Else
If Cells(i, 3).Value = "Sous-Total" Then
Range(Cells(i, 4), Cells(i, 8)).Interior.ColorIndex = 18
Cells(i, 9).Interior.ColorIndex = "0"
Else
If Cells(i, 3).Value = "Total" Then
Range(Cells(i, 4), Cells(i, 8)).Interior.ColorIndex = 24
Cells(i, 9).Interior.ColorIndex = "0"
Else
If Cells(i, 3).Value = "Déplacement" Then
Range(Cells(i, 4), Cells(i, 9)).Interior.ColorIndex = 44
Else
If Cells(i, 3).Value = "" Then
Range(Cells(i, 2), Cells(i, 9)).Interior.ColorIndex = 2
Else
End If
End If
End If
End If
End If
End If
End If
Next i
End Sub