Modification de plusieurs cellule en automatique

Fermé
Tony1664 - Modifié par crapoulou le 14/11/2016 à 20:33
 Tony1664 - 31 déc. 2016 à 09:19
Bonjour,
J'ai déjà appliqué la formule pour afficher la date dans une cellule lorsque la cellule d’à coté change dans la colonne K

Je voudrais associer ça avec l'écriture d'information lorsqu'une cellule d'une autre colonne change. (lorsque je rempli un champ dans une ligne, je veux qu'automatiquement certaines informations apparaissent sur la même ligne)

J'ai donc copier et modifier la formule d'une autre discussion

Private Sub Worksheet_Change(ByVal Target As Range)
Dim col As Byte

If Intersect(Target, Range("k1:k2000")) Is Nothing Or Target.Count > 1 Or Intersect(Target, Range("c1:c2000")) Is Nothing Then: Exit Sub
Row = Target.Column
Cells(Target.Row, 12) = Format(Date, "mm/dd/yy")

end sub

je voudrait ajouter l'action suivante mais je n'y arrive pas
If Intersect(Target, Range("c1:c2000")) Is Nothing Or Target.Count > 1 Then: Exit Sub
Row = Target.Column
Cells(Target.Row, 8) = Format(Date, "mm/dd/yy")
Cells(Target.Row, 10) = "Présent"
Cells(Target.Row, 11) = "Ouverture"


Surement à cause du exit sub de la première partie mais j'ai pas réussi à m'en affranchir malgré quelques tâtonnement.

J'espère avoir été clair mais j'en suis pas persuadé

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.


A voir également:

3 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
15 nov. 2016 à 09:22
Bonjour,

code modifie, mais, probleme pour ecriture: change en C ecrase en K
et que se passe-il si cellule passe a vide ??

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim col As Byte
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("K1:K2000")) Is Nothing Then
        'Row = Target.Column ??????? Mot reserve EXCEL ????????
        Cells(Target.Row, 12) = Format(Date, "mm/dd/yy")
    ElseIf Not Intersect(Target, Range("C1:C2000")) Is Nothing Then
        'Row = Target.Column ??????? Mot reserve EXCEL ????????????????
        Cells(Target.Row, 8) = Format(Date, "mm/dd/yy")
        Cells(Target.Row, 10) = "Présent"
        Cells(Target.Row, 11) = "Ouverture"
    End If

End Sub
0
En effet lors d'un changement en C il ne faut pas écraser les autres cellule, uniquement à la création, pas la modification.
Une solution ?
0
Bonjour
Super ça fonctionne.
Je vais tester sur plusieurs lignes pour voir si il n'y a pas d'effet de bord mais pour le moment c'est très bien.

Merci
0
Bonjour,
Finalement il me reste un problème.
Ça fonctionne bien lorsque j’écris dans la colonne C mais je voudrais que ce soit le cas uniquement lorsque cette cellule passe de vide à "X" pas lorsque je modifie la cellule.

pour le reste c'est bon ça fonctionne pour écriture et modification
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
30 déc. 2016 à 12:32
Bonjour,

uniquement lorsque cette cellule passe de vide à "X" pas lorsque je modifie la cellule.

Je regarde la chose tout a l'heure,
0
X étant un exemple, une valeurs non définie :-)
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > Tony1664
30 déc. 2016 à 18:56
Re,

Dim ValCel

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim col As Byte
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("K1:K2000")) Is Nothing Then
        'Row = Target.Column ??????? Mot reserve EXCEL ????????
        Cells(Target.Row, 12) = Format(Date, "mm/dd/yy")
    ElseIf Not Intersect(Target, Range("C1:C2000")) Is Nothing And ValCel = "" Then
        'Row = Target.Column ??????? Mot reserve EXCEL ????????????????
        Cells(Target.Row, 8) = Format(Date, "mm/dd/yy")
        Cells(Target.Row, 10) = "Présent"
        Cells(Target.Row, 11) = "Ouverture"
    End If

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("C1:C2000")) Is Nothing Then
        ValCel = Target.Value
    End If
End Sub
0
Bonjour
Merci, ça fonctionne très bien.
Ça va m'éviter bien des problèmes
.
0