OVH Cloud OVH Cloud

Désactiver une macro avant copie

3 réponses
Avatar
Laurent
Bonjour,
J'ai un soucis sur des automatismes.
Avec le worksheet_change, si une saisie est faite dans une colonne précise,
une macro se lance pour saisir des formules dans deux autres colonnes. Mais
je donne la possibilité à l'utilisateur de récrire par dessus ces données.
Le problème est que si l'utilisateur fait un copier coller d'un bloc, ma
macro se lance quand même.
Comment je pourrais désactiver ma macro avant que l'utilisateur fasse une
copie.
J'ai réussi à contourner le problème pour le bouton droit avec un
before_rightclic. Mais pour les autres copie je ne voie pas comment faire

Merci d'avance de votre réponse.
Cdlmt
Laurent

3 réponses

Avatar
Pounet95
Bonjour,
Peut-être tester le nombre de cellules de la cible, du genre :

If Target.Cells.Count>1 then Exit sub


--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"Laurent" a écrit dans le message de
news:
Bonjour,
J'ai un soucis sur des automatismes.
Avec le worksheet_change, si une saisie est faite dans une colonne
précise,
une macro se lance pour saisir des formules dans deux autres colonnes.
Mais
je donne la possibilité à l'utilisateur de récrire par dessus ces données.
Le problème est que si l'utilisateur fait un copier coller d'un bloc, ma
macro se lance quand même.
Comment je pourrais désactiver ma macro avant que l'utilisateur fasse une
copie.
J'ai réussi à contourner le problème pour le bouton droit avec un
before_rightclic. Mais pour les autres copie je ne voie pas comment faire

Merci d'avance de votre réponse.
Cdlmt
Laurent


Avatar
PMO
Bonjour,

Une piste avec le code suivant à copier dans le code
d'une feuille vierge afin de tester.

IL FAIT
1) Si l'utilisateur saisit une donnée dans la colonne "C" alors
"toto" s'affiche en colonne "E" sur la même ligne que la saisie.
2) La condition
If Target.Rows.Count > 1 Or _
Target.Columns.Count > 1 Then Exit Sub
empêche la macro de se poursuivre si la zone de saisie
comporte plus d'une ligne OU plus d'une colonne.

'*******************
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Rows.Count > 1 Or _
Target.Columns.Count > 1 Then Exit Sub
If Target.Column = 3 Then
Range(Cells(Target.Row, Target.Column + 2), _
Cells(Target.Row, Target.Column + 2)) = "toto"
End If
End Sub
'*******************

Cordialement.

--
PMO
Patrick Morange



Bonjour,
J'ai un soucis sur des automatismes.
Avec le worksheet_change, si une saisie est faite dans une colonne précise,
une macro se lance pour saisir des formules dans deux autres colonnes. Mais
je donne la possibilité à l'utilisateur de récrire par dessus ces données.
Le problème est que si l'utilisateur fait un copier coller d'un bloc, ma
macro se lance quand même.
Comment je pourrais désactiver ma macro avant que l'utilisateur fasse une
copie.
J'ai réussi à contourner le problème pour le bouton droit avec un
before_rightclic. Mais pour les autres copie je ne voie pas comment faire

Merci d'avance de votre réponse.
Cdlmt
Laurent


Avatar
Laurent
Merci beaucoup, c'est exactement ce que je voulais.
Je vais même me servir du comptage pour aller plus loin (j'avais un problème
de saisie multiple que j'avais contourné mais pas résolu)

Cdlmt
Laurent


Bonjour,

Une piste avec le code suivant à copier dans le code
d'une feuille vierge afin de tester.

IL FAIT
1) Si l'utilisateur saisit une donnée dans la colonne "C" alors
"toto" s'affiche en colonne "E" sur la même ligne que la saisie.
2) La condition
If Target.Rows.Count > 1 Or _
Target.Columns.Count > 1 Then Exit Sub
empêche la macro de se poursuivre si la zone de saisie
comporte plus d'une ligne OU plus d'une colonne.

'*******************
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Rows.Count > 1 Or _
Target.Columns.Count > 1 Then Exit Sub
If Target.Column = 3 Then
Range(Cells(Target.Row, Target.Column + 2), _
Cells(Target.Row, Target.Column + 2)) = "toto"
End If
End Sub
'*******************

Cordialement.

--
PMO
Patrick Morange



Bonjour,
J'ai un soucis sur des automatismes.
Avec le worksheet_change, si une saisie est faite dans une colonne précise,
une macro se lance pour saisir des formules dans deux autres colonnes. Mais
je donne la possibilité à l'utilisateur de récrire par dessus ces données.
Le problème est que si l'utilisateur fait un copier coller d'un bloc, ma
macro se lance quand même.
Comment je pourrais désactiver ma macro avant que l'utilisateur fasse une
copie.
J'ai réussi à contourner le problème pour le bouton droit avec un
before_rightclic. Mais pour les autres copie je ne voie pas comment faire

Merci d'avance de votre réponse.
Cdlmt
Laurent