![]() |
|
Forum
|
|
|
#1 (permalink) |
|
XLDnaute Occasionel
Date d'inscription: avril 2007
Version Excel : Excel 2003 (PC)
Messages: 222
|
Bonjour,
Je dispose de ces instructions : Private Sub Worksheet_Change(ByVal Target As Range) If Target = Worksheets("Calendrier").Range("A1") Then
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. |
|
|
|
| ANNONCES | |||
|
|
|
|
#2 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2006
Localisation: Bois Guillaume (76)
Messages: 2 033
|
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.. |
|
|
|
|
|
#3 (permalink) |
|
XLDnaute Impliqué
Date d'inscription: octobre 2006
Localisation: Caen
Version Excel : Excel XP (PC)
Messages: 583
|
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. ![]() |
|
|
|
|
|
#4 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: novembre 2006
Localisation: Saint etienne
Version Excel : Excel XP (PC)
Messages: 3 969
|
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 |
|
|
|
|
|
#5 (permalink) |
|
XLDnaute Occasionel
Date d'inscription: avril 2007
Version Excel : Excel 2003 (PC)
Messages: 222
|
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 ... |
|
|
|
|
|
#6 (permalink) |
|
XLDnaute Occasionel
Date d'inscription: avril 2007
Version Excel : Excel 2003 (PC)
Messages: 222
|
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 ... |
|
|
|
|
|
#7 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2006
Localisation: Bois Guillaume (76)
Messages: 2 033
|
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.. |
|
|
|
|
|
#8 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: novembre 2006
Localisation: Saint etienne
Version Excel : Excel XP (PC)
Messages: 3 969
|
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 |
|
|
|
|
|
#9 (permalink) |
|
XLDnaute Occasionel
Date d'inscription: avril 2007
Version Excel : Excel 2003 (PC)
Messages: 222
|
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 ... |
|
|
|
|
|
#10 (permalink) |
|
XLDnaute Occasionel
Date d'inscription: avril 2007
Version Excel : Excel 2003 (PC)
Messages: 222
|
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 ... |
|
|
|
|
|
#11 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2006
Localisation: Bois Guillaume (76)
Messages: 2 033
|
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.. |
|
|
|
|
|
#12 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: novembre 2006
Localisation: Saint etienne
Version Excel : Excel XP (PC)
Messages: 3 969
|
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 |
|
|
|
|
|
#13 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2006
Localisation: Bois Guillaume (76)
Messages: 2 033
|
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.. |
|
|
|
|
|
#14 (permalink) |
|
XLDnaute Occasionel
Date d'inscription: avril 2007
Version Excel : Excel 2003 (PC)
Messages: 222
|
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 ... |
|
|
|
| ANNONCES | |
![]() |
| Liens sociaux |
| Outils de la discussion | |
|
|
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 |