Excel Downloads
Forum

Précédent   Excel Downloads Forums > Excel > Forum Excel


Réponse
 
LinkBack Outils de la discussion
Vieux 10/04/2007, 16h20   #1 (permalink)
XLDnaute Occasionel
 
Avatar de marmotte18
 
Date d'inscription: avril 2007
Version Excel : Excel 2003 (PC)
Messages: 222
Par défaut Bug sur macro Sub Worksheet_Change(ByVal Target As Range)

Bonjour,

Je dispose de ces instructions :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Worksheets("Calendrier").Range("A1") Then
  • Si je modifie la cellule A1, le traitement qui suit "then" se poursuit normalement.
  • Si je modifie une autre cellule qu'A1, je ne demande rien à la macro.
Donc, tout se passe bien si je modifie n'importe quelle cellule.

Problème :

Si le gestionnaire vient à tirer une donnée ou une formule vers le bas, j'ai l'anomalie (Erreur d'exécution '13' : incompabilité de type")

Je demande donc le débogage.

=> Le curseur s'arrête sur l'instruction "
If Target = Worksheets("Calendrier").Range("A1") Then"

Que faut-il faire pour que la macro ne beugue pas dans cette situation ?

Le copier-coller produit le même effet.
L'effaçage par la touche Suppr de plusieurs cellules non protégées produit également le même effet.

Merci par avance
__________________
Marmotte18



Dites le avec des fleurs, c'est tellement plus gentil ...

Dernière modification par marmotte18 ; 10/04/2007 à 16h36.
marmotte18 est déconnecté   Réponse avec citation
ANNONCES
Vieux 10/04/2007, 16h52   #2 (permalink)
XLDnaute Barbatruc
 
Avatar de ERIC S
 
Date d'inscription: février 2006
Localisation: Bois Guillaume (76)
Messages: 2 033
Par défaut Re : Bug sur macro Sub Worksheet_Change(ByVal Target As Range)

Bonjour

if target.count>1 then exit sub

te permettra de ne rien faire en cas de sélection multiple
__________________
A+

Pas à pas se fait notre chemin. Pas à pas..
ERIC S est déconnecté   Réponse avec citation
Vieux 10/04/2007, 17h14   #3 (permalink)
XLDnaute Impliqué
 
Avatar de papapaul
 
Date d'inscription: octobre 2006
Localisation: Caen
Version Excel : Excel XP (PC)
Messages: 583
Arrow Re : Bug sur macro Sub Worksheet_Change(ByVal Target As Range)

Je vais peut-être dire une bêtise.
J'ai déja eu ce problème, je devais vraiment tirer
une formule vers le bas, ca plantait.
J'ai résolu de facon surement pas orthodoxe
en ajoutant avant la ligne qui buggait
On error resume Next.
Je te dis ca de mémoire en espérant que ca t'aidera.
papapaul est déconnecté   Réponse avec citation
Vieux 10/04/2007, 17h20   #4 (permalink)
XLDnaute Barbatruc
 
Avatar de wilfried_42
 
Date d'inscription: novembre 2006
Localisation: Saint etienne
Version Excel : Excel XP (PC)
Messages: 3 969
Par défaut Re : Bug sur macro Sub Worksheet_Change(ByVal Target As Range)

bonjour à tous

si tu veux que ta macro se lance uniquement en cas de modif de la case A1, il te faut tester l'adresse et non la valeur

if target.address<>"$A$1" exit sub

si tu as une selection multiple, Address sera egale à $A$1:$B$3, donc sera different de $A$1
__________________
salutations

Wilfried

Plus j'apprends, plus je sais....... plus je sais que je ne sais rien.

Venez visiter mon zoo : Cliquez ici il est si petit, un petit click quotidien merci
wilfried_42 est déconnecté   Réponse avec citation
Vieux 10/04/2007, 17h23   #5 (permalink)
XLDnaute Occasionel
 
Avatar de marmotte18
 
Date d'inscription: avril 2007
Version Excel : Excel 2003 (PC)
Messages: 222
Par défaut Re : Bug sur macro Sub Worksheet_Change(ByVal Target As Range)

Bonjour ERIC S,

Cette instruction est intéressante, cela ne fait plus planter ma macro quand je cherche à effacer par code, toutes les cellules correspondant aux données entrées.

Toutefois, je ne comprends pas pourquoi ce traitement se fait puisque :
if target.count>1 then exit sub
est la 1ère instruction après le Sub. J'aurais dû sortir de la macro tout de suite sans effectuer le moindre traitement (selon tes explications dont au passage, je te remercie)
__________________
Marmotte18



Dites le avec des fleurs, c'est tellement plus gentil ...
marmotte18 est déconnecté   Réponse avec citation
Vieux 10/04/2007, 17h26   #6 (permalink)
XLDnaute Occasionel
 
Avatar de marmotte18
 
Date d'inscription: avril 2007
Version Excel : Excel 2003 (PC)
Messages: 222
Par défaut Re : Bug sur macro Sub Worksheet_Change(ByVal Target As Range)

Bonjour papapaul,

Je garde en réserve ta suggestion. Elle me sera sûrement bien utile !

Merci pour ta réponse !
__________________
Marmotte18



Dites le avec des fleurs, c'est tellement plus gentil ...
marmotte18 est déconnecté   Réponse avec citation
Vieux 10/04/2007, 17h27   #7 (permalink)
XLDnaute Barbatruc
 
Avatar de ERIC S
 
Date d'inscription: février 2006
Localisation: Bois Guillaume (76)
Messages: 2 033
Par défaut Re : Bug sur macro Sub Worksheet_Change(ByVal Target As Range)

re

a priori tu n'avais pas ce test à l'origine et en cas de sélection multiple, la propriété value n'est pas valide.

La proposition de WILFRIED doit fonctionner aussi, choisir l'une plus que l'autre dépend des macros

Le défaut de la solution de papapaul reste le fait de ne pas traiter l'erreur et si une autre apparaît en cours de macro, tu ne le verras pas
__________________
A+

Pas à pas se fait notre chemin. Pas à pas..
ERIC S est déconnecté   Réponse avec citation
Vieux 10/04/2007, 17h32   #8 (permalink)
XLDnaute Barbatruc
 
Avatar de wilfried_42
 
Date d'inscription: novembre 2006
Localisation: Saint etienne
Version Excel : Excel XP (PC)
Messages: 3 969
Par défaut Re : Bug sur macro Sub Worksheet_Change(ByVal Target As Range)

re:

if target.count ? je ne sais pas ce que cela donne

if target.cells.count permet de connaitre le nombre de cellule dans target
__________________
salutations

Wilfried

Plus j'apprends, plus je sais....... plus je sais que je ne sais rien.

Venez visiter mon zoo : Cliquez ici il est si petit, un petit click quotidien merci
wilfried_42 est déconnecté   Réponse avec citation
Vieux 10/04/2007, 17h44   #9 (permalink)
XLDnaute Occasionel
 
Avatar de marmotte18
 
Date d'inscription: avril 2007
Version Excel : Excel 2003 (PC)
Messages: 222
Par défaut Re : Bug sur macro Sub Worksheet_Change(ByVal Target As Range)

Bonjour wilfried_42,

Effectivement ta méthode est excellente "if target.address<>"$A$1" exit sub" !

=> ma macro ne beugue plus et elle fait ce que je lui demande de faire.

BRAVO et merci beaucoup !
__________________
Marmotte18



Dites le avec des fleurs, c'est tellement plus gentil ...
marmotte18 est déconnecté   Réponse avec citation
Vieux 10/04/2007, 17h54   #10 (permalink)
XLDnaute Occasionel
 
Avatar de marmotte18
 
Date d'inscription: avril 2007
Version Excel : Excel 2003 (PC)
Messages: 222
Par défaut Re : Bug sur macro Sub Worksheet_Change(ByVal Target As Range)

Pour ERIC S,

Au risque de te contredire, voire de te décevoir, l'instruction :
if target.count>1 then exit sub
était bien la 1ère de la macro après Sub.
__________________
Marmotte18



Dites le avec des fleurs, c'est tellement plus gentil ...
marmotte18 est déconnecté   Réponse avec citation
Vieux 10/04/2007, 18h08   #11 (permalink)
XLDnaute Barbatruc
 
Avatar de ERIC S
 
Date d'inscription: février 2006
Localisation: Bois Guillaume (76)
Messages: 2 033
Par défaut Re : Bug sur macro Sub Worksheet_Change(ByVal Target As Range)

re

c'est sans doute moi qui n'ai pas compris ta remarque (je parlais de ton premier message

Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Worksheets("Calendrier").Range("A1") Then

ou il n'y avait pas le count)

Par contre, je ne sais pas ce que tu fais dans ta macro et donc il est possible que tu passes plusieurs fois en imbriqué si tu changes des valeurs de cellules

exemple

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
MsgBox passe
Range("A1").Value = 1
End Sub

on imagine que je change A2, la macro se lance et quand elle arrive sur Range("A1")..., elle boucle car une valeur change......
__________________
A+

Pas à pas se fait notre chemin. Pas à pas..
ERIC S est déconnecté   Réponse avec citation
Vieux 10/04/2007, 18h37   #12 (permalink)
XLDnaute Barbatruc
 
Avatar de wilfried_42
 
Date d'inscription: novembre 2006
Localisation: Saint etienne
Version Excel : Excel XP (PC)
Messages: 3 969
Par défaut Re : Bug sur macro Sub Worksheet_Change(ByVal Target As Range)

re:

target.count, est sensé donner quoi ?, je n'ai jamais utilisé ceci

j'utilise Target.cells.count pour avoir le nombre de cellule dans target
__________________
salutations

Wilfried

Plus j'apprends, plus je sais....... plus je sais que je ne sais rien.

Venez visiter mon zoo : Cliquez ici il est si petit, un petit click quotidien merci
wilfried_42 est déconnecté   Réponse avec citation
Vieux 10/04/2007, 19h02   #13 (permalink)
XLDnaute Barbatruc
 
Avatar de ERIC S
 
Date d'inscription: février 2006
Localisation: Bois Guillaume (76)
Messages: 2 033
Par défaut Re : Bug sur macro Sub Worksheet_Change(ByVal Target As Range)

Bonjour wilfried

Pour moi target.count donne la même chose que target.cells.count

peut-être est-ce un abus d'écriture, target étant dans la feuille une zone de cellules?
__________________
A+

Pas à pas se fait notre chemin. Pas à pas..
ERIC S est déconnecté   Réponse avec citation
Vieux 10/04/2007, 19h19   #14 (permalink)
XLDnaute Occasionel
 
Avatar de marmotte18
 
Date d'inscription: avril 2007
Version Excel : Excel 2003 (PC)
Messages: 222
Par défaut Re : Bug sur macro Sub Worksheet_Change(ByVal Target As Range)

Pour ERIC S,

Effectivement ma macro change des valeurs. En fait, j'ai nommé "données" l'ensemble des cellules non protégées et ma macro est sensée supprimer toutes les données saisissables d'un coup :

Application.Goto Reference:="Données"
Selection.ClearContents

Ainsi, la procédure détecte une sélection multiple.
__________________
Marmotte18



Dites le avec des fleurs, c'est tellement plus gentil ...
marmotte18 est déconnecté   Réponse avec citation
ANNONCES
Réponse

Liens sociaux

Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui

Discussions similaires
Discussion Auteur Forum Réponses Dernier message
Private Sub Worksheet_Change(ByVal Target As Range) Evelynetfrancois Forum Excel 2 08/04/2007 16h50
macro worksheet_change en boucle dodineau Forum Excel 8 24/04/2006 14h05
Worksheet_SelectionChange(ByVal Target As Range) PAD Forum Excel 2 18/04/2006 19h14
Worksheet_Change(ByVal fifi Forum Excel 8 04/10/2005 22h18
Private Sub Worksheet_Change(ByVal Target As Range) Xtian (du Québec) Forum Excel Downloads - Archives 3 25/01/2005 23h12


Fuseau horaire GMT +2. Il est actuellement 20h16.


(C) 2006 Excel Downloads