Modification d'instruction

bonsoir

je dispose du code suivant , qui est un code anti doublon pour la colonne B de ma feuille de calcul

'Private Sub Worksheet_Change(ByVal Target As Range)
Dim xcell As Range
    If Not Intersect(Range("B22:B20060"), Target) Is Nothing Then
        For Each xcell In Intersect(Range("B22:B20060"), Target).Cells
            If Application.CountIf(Range(Cells(21, xcell.Column), Cells(20060, xcell.Column)), xcell) > 1 Then
            MsgBox xcell.Value & "  CELLULE  DEJA SELECTIONNEE "

            xcell.ClearContents

            End If

        Next xcell

    End If

et je ce que souhaiterai faire , c'est modifier l'instruction "

 xcell.ClearContents

par ce que si je comprend bien le code , celui ci detecte le doublon , l'ecrit dans la colonne B puis l'efface avec justement l'instruction xcell.ClearContents , ce que je voudrai arriver à faire c'est qu'il n'y ait aucune ecriture dans la cellule si doublon il y a

par ce que le soucis , c'est que "xcell.ClearContents" applique une action de nettoyage sur la cellule visée , mais cela entraine une autre action ( celle ci etant voulue , mais pas dans ces conditions)

Auriez vous une idée , une facon de faire autrement ?

en vous remerciant

(voulue)

Salut le forum

rocket4 a écrit :

Parce que si je comprend bien le code , celui ci detecte le doublon , l'écrit dans la colonne B puis l'efface...

Le code n'écrit pas dans la colonne B, il donne un message (Msgbox) et efface le contenu de la cellule.

Si j'ai bien compris ta demande il suffit d'invalider le déclenchement de l'évenement

Application.EnableEvents = False
xcell.ClearContents
Application.EnableEvents = True

Mytå

merci pour ta proposition de changement , mais cela reste sans effet .....

lorsque tu dis "Le code n'écrit pas dans la colonne B, il donne un message (Msgbox) et efface le contenu de la cellule."

j'ai essayé de faire fonctionner le code en retirant l'instuction :

xcell.ClearContents

, le doublon est bien signalé par

message puis ecrit dans la colonne B! en ajoutant xcell.clear.contents et en ressayant le code là par contre le doublon ecrit est

effacé


... j'avoue que c'est pas evident comme probleme !

Re le forum

Si il est écrit dans la cellule c'est qu'il a été saisie manuellement au clavier ou par une autre macro.

Mytå

c'est fort possible.....,

je suis sur un piste interessante il me faudrait juste un coup de pouce pour transformer

xcell.clear.contents 

en

xcell.resize( la cellule de droite ).clear.contents

comme ca , ca reglera le probleme

et c'est la parenthèse de resize que je n'arrive pas à remplir de sorte que quelque soit la position de xcell dans B22:B22060

que la cellule de droite soit effacée

Merci

Re le forum

Pas besoin de Resize pour effacer la cellule à droite de la colonne B

xcell.offset(,1).ClearContents

Mytå

merci ca marche !! .... juste un nouveau probleme ; ma cellule de droite est coloriée en bleu , le souci et que meme la couleur s'en va en depis de ca , cela repond bien

je ne vois pas comment selectionner uniquement la police à effacer dans la cellule !


probleme résolu j'ai juste ecrit

xcell.offset(0,1).clear.contents

au lieu de

xcell.offset(,1).clear.contents

ente remerciant pour tes interventions

cordialement , Rocket

Re le forum

xcell.Offset(, 1) = ""

Mytå

Rechercher des sujets similaires à "modification instruction"