SelectionChange

Bonjour.

J'ai un problème avec la fonction SelectionChange:

Je souhaite que la macro se mette en marche dès lors que la cellule est E2 est modifiée.

J'ai donc mis ce code qui ne fonctionne pas comme je le voudrais:

If Not Application.Intersect(Target, Range("E2")) Is Nothing Then

Pour l'heure, voilà ce que fais la macro:

Je modifie la cellule E2..........=> Rien ne se passe

Je clique sur une autre cellule ...=> Rien ne se passe

Je Re-clique sur la cellule E2......=> La macro se met en marche

Sauriez vous m'expliquer pourquoi il faut que je sorte de la cellule E2, puis que ce ne soit que quand je retourne dessus que la macro se mette en route?

L'objectif étant bien sur que la macro commence dès la modification de ma cellule.

Je vous joints le fichier pour que vous puissiez voir tout le code et ce que je cherche à faire.

Merci.

Bonjour,

Mets plutôt un change au lieu de selection

Private Sub Worksheet_Change(ByVal Target As Range)

Amicalement

Claude

Bonjour Claude.

C'est en effet ce que j'ai mis pour commencer le code.

Seulement, lorsque cette "formule" est mise, ce sont toutes les cellules qui sont affectées par le code (non?)

C'est pour cela que j'ai mis ensuite la "formule" ...... If Not Application.Intersect(Target, Range("E2")) Is Nothing Then........ pour lancer la macro que pour la modification de la cellule E2.

Voici le code en entier:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("E2")) Is Nothing Then
Dim rch%
rch = Application.Match(Range("E2"), Range("a:a"), 0)
Range("G2").Insert shift:=xlDown
Range("A" & rch).Copy Range("G2")
Range("A" & rch).Delete shift:=xlUp
Range("E2").ClearContents
End If
End Sub

On m'avait donné cette partie de code sur l'un de mes premier post et ça fonctionnait très bien. Je ne comprends pas ce qu'il faut que je rajoute.

Cordialement.

tu change simplement la ligne que je t'ai indiquer

Claude

Oups. désolé, une nouvelle fois je n'avais pas les yeux en face des trous.

J'obtiens un nouveau problème:

"Erreur d'exécution 13 Incompatibilité de type"

Le débogage est sur la ligne

rch = Application.Match(Range("E2"), Range("a:a"), 0)

Si je fais "FIN" la macro a quand même fait ce que je souhaitais.

Y a-t-il autre chose à enlever ou à rajouter?

D'avance merci.

-- 26 Sep 2010, 12:08 --

C'est bon. J'ai supprimer la dernière ligne qui était

Range("E2).clearcontents

Tout fonctionne. Merci

re,

ajoute le nom de feuille devant les Range

je n'ai pas tester

Claude

Bonjour,

Ce message est tout à fait normal, tu déroules 2 fois ton code....

Ton code déroule une 1ère fois, lorsque tu modifies la valeur de ta cellule E2

Il cherche la correspondance, modifie la cellule G...., supprime la cellule A... et EFFACE E2

donc E2 est modifiée de nouveau, donc le code se déroule à nouveau...

Mais cette fois-ci, on ne trouve plus la valeur, et pour cause....

soit tu mets une ligne telle que :

If Not IsError(Application.Match(Range("E2"), Range("a:a"), 0)) Then

Soit tu mets en début de procédure :

Dim rch%
Application.EnableEvents = False
rch = Application.Match(Range("E2"), Range("a:a"), 0)

Mais surtout, tu n'oublies pas de rajouter en fin de code :

    End If
Application.EnableEvents = True
    End Sub

Bon Dimanche

Bonjour Cousinhub

Heureux de voir ta réponse

Comme je l'ai marqué, j'ai vu ensuite que je cherchais deux fois la même valeur. J'ai donc supprimé la ligne

Range("E2).clearcontents

Je comprends la première ligne de code que tu m'a donnée. Pour les deux autres, je vais chercher avec l'aide excel.

Merci à vous deux.

Rechercher des sujets similaires à "selectionchange"