Valider un formulaire
Bonjour à tous,
J'ai un formulaire qui est renseigné par des calculs réalisés en amont et j'aimerais pouvoir valider c'est valeur en saisissant un "X" sur la même ligne à droite pour chaque cellule. "Valider" pour moi consiste à copier (la valeur uniquement) la cellule dans un autre tableau identique sur la même feuille. Je précise que les résultats de calculs sont verrouillés par la protection de la feuille ce qui n'est pas le cas du tableau final (est ce un probleme ?). Prenons un exemple, j'ouvre ma feuille j ai un résultat dans la cellule A1, il est valide donc j’écris "X" (sinon la cellule est vide) dans la colonne à sa droite et je souhaiterais qu'instantanément la valeur de cette cellule soit coller dans la cellule A14. Et ainsi de suite.
Pour info les valeurs à valider sont dans la colonne : C6 jusqu'à C33 (excepté C14-C21-C28 qui contiennent du vide)
la colonne où peuvent être marquées les X : E6 jusqu'à E33 (excepté E14-E21-E28 qui contiennent du vide)
la colonne où seront marqués les résultats : P6 jusqu'à P33 (excepté P14-P21-P28 qui contiennent du vide)
J'ai ca mais ca ne marche pas
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("E6:E33")) Is Nothing _
And Range("E6") <> "" And Range("E7") <> "" And Range("E8") <> "" And Range("E9") <> "" And Range("E10") <> "" And Range("E11") <> "" And Range("E12") <> "" And Range("E13") <> "" And Range("E14") <> "" And Range("E15") <> "" And Range("E16") <> "" And Range("E17") <> "" And Range("E18") <> "" And Range("E19") <> "" And Range("E20") <> "" And Range("E21") <> "" And Range("E22") <> "" And Range("E23") <> "" And Range("E24") <> "" And Range("E25") <> "" And Range("E26") <> "" And Range("E27") <> "" And Range("E28") <> "" And Range("E29") <> "" And Range("E30") <> "" And Range("E31") <> "" And Range("E32") <> "" And Range("E33") <> "" Then
Application.EnableEvents = False
Application.ScreenUpdating = False
For k = 1 To 28
If Cells(5 + k, 5) = "X" Then
Cells(5 + k, 14) = Cells(5 + k, 5)
End If
Next
End If
Application.EnableEvents = True
End sub
Merci d'avance
Bonsoir
Perso, je pense que rien n'est mieux qu'un exemple de fichier pour aider.
Cela permet plus facilement aux membres de comprendre les problèmes.
Bonne soirée
Bonsoir,
Si j'ai bien compris, quand tu met un "X" en colonne E, tu veux copier la valeur de C en P.
Moi je ferai comme ça. Par contre, attention au cas inverse, si tu enlèves le "X" en E, la valeur restera affichée en P.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("E6:E33")) Is Nothing And Target = "X" Then
Range("P" & Target.Row).Value = Range("C" & Target.Row).Value
End If
End SubRe
Merci pour votre macro elle est fonctionnelle et ca me va, cependant j'ai encore une question. J'ai ajouté dans la même colonne au sommet, une case qui permet de tout cocher (mets des "X" dans toutes les cases directement) si l'on place un X dans cette cellule (cellule E5). La macro qui permet cette prouesse technique
Pour information la macro est sous :
"Private Sub Worksheet_Change(ByVal Target As Range)"
et cette macro est en amont de celle que tu viens de me donner
Que dois-je ajouter ou modifier pour que cette configuration soit prise en compte ?
Encore merci d'avance pour voter aide
Bonjour,
Dans ce cas, j'intégrerai tout cela dans le code ci-dessous. En gros, si vous mettez un X dans E5, ça copie tout.
Cela vous convient ?
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("E5:E33")) Is Nothing And Target = "X" Then
If Target.Address = "$E$5" Then
For i = 6 To 33
Range("P" & i).Value = Range("C" & i).Value
Next i
Else
Range("P" & Target.Row).Value = Range("C" & Target.Row).Value
End If
End If
End SubBon courage
Je te connais pas mais tu es génial, ça fonctionne merci à toi et bonne journée !