Bonjour
Je voudrais faire cette action quand je supprime une donnée de la colonne B:B ex. B2 ça efface sur la même ligne la celllule H2 ou B10 supprime H10 etc.
Merci
Bonjour
Je voudrais faire cette action quand je supprime une donnée de la colonne B:B ex. B2 ça efface sur la même ligne la celllule H2 ou B10 supprime H10 etc.
Merci
Bonjour
mets ceci dans ta feuille
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Application.Intersect(Target, [B:B]) Is Nothing Then If Target = "" Then Target.Offset(0, 6).ClearContents End If End Sub
Bonjour
Un exemple sur le module de la feuille :
Philippe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Private Sub Worksheet_Change(ByVal Target As Range) ' déclaration Dim objWks As Worksheet Dim strSheet As String ' affectation strSheet = ActiveSheet.Name Set objWks = ActiveWorkbook.Worksheets(strSheet) ' suppression If Target.Column = 2 Then If Target.Value = "" Then objWks.Range("H" & Target.Row).Clear End If End If End Sub
Bonjour,
Même s'il ne va entrer qu'une seule fois dans cette procédure du fait de l"ecriture sur une autre colonne, ne pas oublier de neutraliser la détection de l'événement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False With Target If .Column = 2 Then .Offset(0, 6).ClearContents End With Application.EnableEvents = True End Sub
Philippe Tulliez
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer suret si celle-ci est pertinente pensez à voter
Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier
Merci pour le code
mais comment ajouter à ce code l'action de supprimer la colonne 6, 7 , 8?
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False With Target If .Column = 2 Then .Offset(0, 6).ClearContents End With Application.EnableEvents = True End Sub
Bonjour,
Pourquoi tu ne poses pas la bonne question directement ?
Tu remplaces la ligne
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part If .Column = 2 Then .Offset(0, 6).ClearContents
Offset(ligne, colonne) est le déplacement par rapport à la colonne 2 et Resize(ligne, colonne) redimensionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part If .Column = 2 Then .Offset(0, 4).Resize(1, 3).ClearContents
Attention : Soit tout de même prudent avec ce type de procédure où l'on fige les adresses, parce-que si on insère des colonnes entre B et H ton code doit être retravaillé et si cette insertion se déroule dans 6 mois ou 1 an, tu va chercher des heures pour savoir d'où cela vient.
Philippe Tulliez
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer suret si celle-ci est pertinente pensez à voter
Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier
Ok merci
Mais maintenant dans ce code j'ai un problème quand j'écris dans la colonne 2 une date s'écrit dans la colonne 5 (jusque la c'est bon), mais quand je supprime se que je viens d'écrire cela supprime bien les cellule colonne 3,4,5 mais cela me réecrit la date se que je ne veux pas
Comment l'adapter ?
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 2 And Target.Count = 1 Then Target.Offset(0, 3).Value = Now End If With Target If .Column = 2 Then .Offset(0, 1).Resize(1, 2).ClearContents End With End Sub
Bonjour,
Qu'ai je mis en première ligne et en dernière du code que j'ai affiché dans ma première réponse ?
Place les et tu verras, à mon avis il n'y aura plus de problème
[EDIT] J'ai parlé trop vite.
Tu écris la date dans la cellule de la 5ème colonne (E) or tu effaces la 3ème et la quatrième
Pour la ligne 4, Date en E4 et efface C$4:$D$4
Bonjour,
J'ai pas bien compris ce que tu veux faire.
La procédure événementielle dans ce cas précis, ne réagit que si tu change une valeur en colonne B.
Tu sembles vouloir à la fois effacer et écrire une date ???
Philippe Tulliez
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer suret si celle-ci est pertinente pensez à voter
Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier
Excuse moi
Oui j'écris en colonne B cela doit me mettre la date en colonne E
par contre je me suis trompé en entrant la donnée de la colonne B je la supprime il faudrait aussi que ça me supprime la date.
Merci
Je relance ma demande
est il possible dans les évenements de dire si j'écris dans la colonne 2 je mais une date si il n'y a rien ne rien mettre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 2 Then Target.Offset(0, 3).Value = Now 'ecrit la date en colonne 5 If Target.Column = "" Then Target.Offset(0, 3).Value = "" 'n'écrit rien en colonne 5 End If End Sub
Bonjour,
En vba comme en informatique en général tout est possible. C'est une question de temps et de budget.
Encore faut-il savoir ce que l'on cherche à faire.
Bonjour,
J'ai mis Date et pas Now parce-que Now, c'ets la date et l'heure.
Autre possibilité, plus courte mais plus lent parce-que le IIF évalue les deux arguments.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False With Target If .Column = 2 And .Count = 1 Then Select Case Len(.Value) Case Is > 0 .Offset(0, 9) = Date ' Ecrit la date en colonne 5 Case Else .Offset(0, 9).ClearContents End Select End If End With Application.EnableEvents = True End Sub
Mais cela ne se sentira pas dans cette procédure.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False With Target If .Column = 2 And .Count = 1 Then .Offset(0, 9) = IIf(Len(.Value), Date, vbNullString) End If End With Application.EnableEvents = True End Sub
Philippe Tulliez
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer suret si celle-ci est pertinente pensez à voter
Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier
Partager