Comment mettre une valeur par défaut sur une colonne sous condition

8valeur-defaut.xlsm (15.49 Ko)

bonjour, je recherche désespérément un code pour remplir une cellule (ex C6) avec une valeur par défaut en l'occurrence 1 (qui pourra être changé le cas échéant)

sous condition que la cellule du dessus (C4) soit renseignée par un nombre (120, 140, ...). j'ai bien un code mais il ne fonctionne avec C4 est remplie, 1 en D1

Ça ne doit pas être grand chose mais impossible de paramétrer comme je veux

Merci, je mets un fichier en exemple

Bonjour,

Essayez ceci

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Sortie
    Application.EnableEvents = False
    If Target.Column = 3 And Target <> "" Then
        Cells(Target.Row + 2, 3).Value = "1"
    End If
Sortie:
    Application.EnableEvents = True
End Sub

Cdlt

Bonjour, super merci, c'est ce que je cherchais.

Juste une question si je veux la même chose sur les autres colonnes il faut à chaque fois réécrire la commande?

Bonjour,

Non, il suffit de modifier la ligne traitant des colonnes à tester, exemple ci-dessous, on veut tester toutes les colonnes de C à E:

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Sortie
    Application.EnableEvents = False
    If Not Intersect(Target, Columns("C:E")) Is Nothing And Target <> "" Then
        Cells(Target.Row + 2, Target.Column).Value = "1"
    End If
Sortie:
    Application.EnableEvents = True
End Sub

Cdlt

Merci encore, serait il possible de mettre ligne par ligne les commentaires de la commande pour mon apprentissage

Bonne journée

Je reviens sur le sujet petit soucis il faudrait que quand je rentre sur la ligne 4 (début du tableau) par exemple le 1 se mette sur la ligne 6 mais il ne faut pas que quand je rentre sur la ligne 5 le 1 se mette sur la ligne 7, cela doit sauter de 3 en 3. Ligne 4 - 7 - 10 ect .... avec le 1 sur 6-9-12

Pas très clair,

si valeur en ligne 4 ---> alors mettre 1 en ligne 6

si valeur en ligne 7 ---> alors mettre 1 en ligne 10 (on décale de 3)

si valeur en ligne 10 ---> alors mettre 1 en ligne 13 (on décale de 3)

alors pourquoi: Ligne 4 - 7 - 10 etc .... avec le 1 sur 6-9-12 ?

edit: les commentaires sur la macro

Private Sub Worksheet_Change(ByVal Target As Range) 'agit lorsqu'une valeur est saisie dans la feuille
    On Error GoTo Sortie 'si une erreur est détectée, on est dirigé vers l'étiquette "Sortie"
    Application.EnableEvents = False 'empêche de relancer la macro lorsque une cellule va se remplir avec 1
    If Not Intersect(Target, Columns("C:E")) Is Nothing And Target <> "" Then 'si la cellule rempli est comprise dans les colonnes C, D ou E
        Cells(Target.Row + 2, Target.Column).Value = "1" 'On met 1 dans la 2ème cellule en dessous
    End If
Sortie:
    Application.EnableEvents = True 'permet de relancer la macro si une valeur est à nouveau saisie
End Sub

Merci pour le retour mais je rencontre toujours le même problème si je rempli la ligne 4 par exemple le "1" se met effectivement en ligne 6 jusque la pas de soucis

et effectivement cela va de 3 en 3 mais il ne faut pas que quand je rentre une valeur en ligne 5 que le "1" apparaisse en ligne 7

A partir que je commence en ligne 4 cela va de 3 en 3 (ligne 4, ligne 7, ligne 10, ect.. avec les "1" en lignes 6,9,12, est...) j'ai d'autre valeur à rentrer sur les lignes 5,8,11,ect... qui ne doivent pas, elles, interagir

En espérant avoir était plus clair, merci

Bonjour,

Ok j'ai compris, alors ceci:

Private Sub Worksheet_Change(ByVal Target As Range) 'agit lorsqu'une valeur est saisie dans la feuille
    On Error GoTo Sortie 'si une erreur est détectée, on est dirigé vers l'étiquette "Sortie"
    Application.EnableEvents = False 'empêche de relancer la macro lorsque une cellule va se remplir avec 1
    If Not Intersect(Target, Columns("C:E")) Is Nothing And Target <> "" Then 'si la cellule rempli est comprise dans les colonnes C, D ou E
        If Target.Row > 3 And (Target.Row - 1) Mod 3 = 0 Then 'si le résultat de la division N° de (ligne-1)/3 = 0 alors on peut écrire dans la cellule
            Cells(Target.Row + 2, Target.Column).Value = "1" 'On met 1 dans la 2ème cellule en dessous
        End If
    End If
Sortie:
    Application.EnableEvents = True 'permet de relancer la macro si une valeur est à nouveau saisie
End Sub

Cdlt

Merci cela fonctionne parfaitement

Merci encore Arturo83 bonne journée

Je reviens sur le sujet la formule fonctionne parfaitement si le tableau commence à la ligne 4, mais si je rajoute une ligne et que celui ci doit commencer à la ligne 5 cela ne fonctionne plus, j'ai essayé de bidouiller, mais rien a faire, je ne vois pas ce qui bloque

Bonjour,

Dans la ligne suivante, il suffit de remplacer "= 0" par "< 3":

        If Target.Row > 3 And (Target.Row - 1) Mod 3 = 0 Then 'si le résultat de la division N° de (ligne-1)/3 = 0 alors on peut écrire dans la cellule

de qui donne:

        If Target.Row > 3 And (Target.Row - 1) Mod 3 < 3 Then 'si le résultat de la division N° de (ligne-1)/3 <3 alors on peut écrire dans la cellule

Cdlt

Ok merci j'était parti pour changer" If Target.Row > 3 en If Target.Row > 4" mais cela ne fonctionnait pas

Bonne journée

Rechercher des sujets similaires à "comment mettre valeur defaut colonne condition"