macro effacer colonne lors saisie

SARdynamite

XLDnaute Junior
Bonsoir,

Il me manque cette seule macro pour boucler mon fichier. Merci d'avance pour votre aide car je n'ai pas le talent.

Je souhaiterai qu'au moment de la saisie d'une valeur dans n'importe quelle cellule de la colonne L, cette colonne L se vide toute seule (toutes les cellules) avant de recevoir ma saisie (d'une seule cellule).

Merci d'avance. Bien à vous
 

Fred0o

XLDnaute Barbatruc
Re : macro effacer colonne lors saisie

Bonsoir SARdynamite,

Voici un code que tu peux coller dans le code de ta feuille en faisant Click-droit puis visualiser le code :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim vL
    vL = Target
    Application.EnableEvents = False
    If Not Intersect(Target, [L:L]) Is Nothing Then
        [L:L].ClearContents
        Target = vL
    End If
    Application.EnableEvents = True
End Sub
A+
 

SARdynamite

XLDnaute Junior
Re : macro effacer colonne lors saisie

Merci cela fonctionne parfaitement :cool:

J'avais déjà ce code pour la feuille. Comment "compiler" les 2 pour les rendre compatibles ?

En effet, en mettant les 2 à la suite j'obtiens un bug.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [C8:J15047]) Is Nothing Then Exit Sub
If Not IsEmpty(Target) And Target.Count = 1 Then
If IsNumeric(Target) Then
Application.EnableEvents = False
Target = Target / 100
Application.EnableEvents = True
End If
End If
End Sub

Merci encore..
 

kjin

XLDnaute Barbatruc
Re : macro effacer colonne lors saisie

Bonsoir,
Si l'on répond strictement...
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.MoveAfterReturnDirection = xlToRight
If Target.Column = 12 Then Columns(12).ClearContents
End Sub
...mais c'est sport
A+
kjin
 

Fred0o

XLDnaute Barbatruc
Re : macro effacer colonne lors saisie

Re-bonsoir SARdynamite, Klin,

Voici comment remanier ta macro :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim vL
    vL = Target
    Application.EnableEvents = False
    If Not Intersect(Target, [L:L]) Is Nothing Then
        [L:L].ClearContents
        Target = vL
    ElseIf Not Intersect(Target, [C8:J15047]) Is Nothing Then
        If Not IsEmpty(Target) And Target.Count = 1 Then
        If IsNumeric(Target) Then Target = Target / 100
    End If
    Application.EnableEvents = True
End Sub
Kjin : Je pense que tu as oublié le fait qu'il veuille garder la valeur saise en colonne L et uniquement cette dernière.

A+
 

Fred0o

XLDnaute Barbatruc
Re : macro effacer colonne lors saisie

Bonsoir à tous,

kjin : parce qu'avec ton code, si l'on valides la saisie en colonne L par la flèche vers le bas, la saisie faite précédemment disparaît et dans ce cas (et seulement dans ce cas), ta solution ne répond pas à la demande. :eek:

Mais peut-être suis-je un peu trop puriste et seul SARdynamite pourra dire si cette solution lui convient.

A+
 

Fred0o

XLDnaute Barbatruc
Re : macro effacer colonne lors saisie

re-bonsoir à tous,

Eh oui kjin, bravo pour cette astuce qui te permet de fournir un code concis si, si ! :D

J'ai dû bricoler un peu pour faire un code correct de 6 lignes. C'est moins élégant mais bon.. chez, moi, on peut valider avec la fèche vers le bas ah, ah ! :cool:

Bonne soirée
 

SARdynamite

XLDnaute Junior
Re : macro effacer colonne lors saisie

Re-bonsoir,

Apparemment il manquait un End If dans le code compilé pour que cela soit valide.

J'en ai rajouté un mais apparemment au mauvais endroit. Impossible d'ouvrir à nouveau mon classeur (depuis que je l'ai fermé). Le chargement bloque lors de l'ouverture et je ne vois pas comment le récupérer :(
 

Fred0o

XLDnaute Barbatruc
Re : macro effacer colonne lors saisie

Bonjour à tous,

En effet, j'avais oublé un End IF, j'étais allé un peu trop vite...

Voici le code corrigé :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim vL
    vL = Target
    Application.EnableEvents = False
    If Not Intersect(Target, [L:L]) Is Nothing Then
        [L:L].ClearContents
        Target = vL
    ElseIf Not Intersect(Target, [C8:J15047]) Is Nothing Then
        If Not IsEmpty(Target) And Target.Count = 1 Then
            If IsNumeric(Target) Then Target = Target / 100
        End If
    End If
    Application.EnableEvents = True
End Sub
A+
 

Discussions similaires

Réponses
18
Affichages
751
Réponses
9
Affichages
424

Membres actuellement en ligne

Statistiques des forums

Discussions
312 472
Messages
2 088 709
Membres
103 928
dernier inscrit
MIKETUAU