Sous excel Function Change et selectchange

Fermé
Pseudoquires Messages postés 5 Date d'inscription dimanche 30 juin 2013 Statut Membre Dernière intervention 2 juillet 2013 - 1 juil. 2013 à 03:09
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 1 juil. 2013 à 11:44
Tout d'abord merci a tous super le site sé une première pour moi du coup ma essayer d'être facile a comprendre Voici mon code sous excel il marche super bien parcontre je suis complètement noob en programmation et j'aimerait savoir pourquoi tout plante lorseque je l'écrit comme la deuxieme version selon l'évènement change et non selection change même excel plante et m'envoie une erreur de la function Range qui marche plus erreur -2......

Version 1

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

For Each Target In Range("D13:D262")
If Target.Value = "" Or Target.Value = 0 Then
Target.Offset(0, -1) = 0
End If
Next Target

For Each Target In Range("J12:j262")
If Target.Value = "" Or Target.Value = 0 Then
Target = Target.Offset(0, 26)

End If
Next Target

End Sub

'se code marche bien et me permetlorseque l'utilisateur suprime une cellule ou
'encore écrit 0 de remetre la formule original a l'intérieur que je stock dans la plage enoffset
'si vous aver d'autre idée par contre ?

Version 2

Private Sub Worksheet_Change(ByVal Target As Range)
For Each Target In Range("D13:D262")
If Target.Value = "" Or Target.Value = 0 Then
Target.Offset(0, -1) = 0
End If
Next Target

For Each Target In Range("J12:j262")
If Target.Value = "" Or Target.Value = 0 Then
Target = Target.Offset(0, 26)

End If
Next Target

End Sub

'ici par-contre je ne fait que changer l'évènement du moin Je croit ?
A voir également:

3 réponses

Pseudoquires Messages postés 5 Date d'inscription dimanche 30 juin 2013 Statut Membre Dernière intervention 2 juillet 2013
1 juil. 2013 à 03:11
J'oubliait de dire je veut changer d'événement déclencheur car comme la plage de cellule et les formule d'écrite dans la plage est asser intense sa commence a ralentir mon ordi a chaque selection allor que si je peut avoir le déclencheure qui démarre uniquement lors du changement de la cellule....
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
1 juil. 2013 à 08:50
Bpnjour,

Exposé illisible: aucune ponctuation, orthographe désastreuse....

Merci de faire un minimum d'effort
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
Modifié par Patrice33740 le 1/07/2013 à 11:46
Bonjour,

Bien que ton code version 1 fonctionne, la réutilisation de Target comme variable n'est pas très académique !!!
Il serait plus correct d'écrire :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Cel As Range
For Each Cel In Range("D13:D262").Cells
  If Cel.Value = "" Or Cel.Value = 0 Then
    Cel.Offset(0, -1).Value = 0
  End If
Next Cel
For Each Cel In Range("J12:j262").Cells
  If Cel.Value = "" Or Cel.Value = 0 Then
    Cel.Value = Cel.Offset(0, 26).Value
  End If
Next Cel
End Sub

Pour la version 2, « je ne fait que changer l'évènement » :
Effectivement, mais lorsqu'on travaille avec les évènements il faut toujours se poser la question : Mon code ne provoque-t-il pas cet évènement de façon récursive ?

Question subsidiaire : Quelles sont les cellules dont la modification doit provoquer l'évènement ? Toutes ?
Cordialement
Patrice
0