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 Sub

Re

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 est constituée d'une boucle "for". Lorsque je coche la cellule E5, l'ensemble des cellules est alors cocher mais aucune cellule est copier coller dans la colonne P (uniquement lorsque je place des "X" manuellement grâce a ta macro).

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 Sub

Bon courage

Je te connais pas mais tu es génial, ça fonctionne merci à toi et bonne journée !

Rechercher des sujets similaires à "valider formulaire"