Function Selection range et range

Fermé
Pseudoquires Messages postés 5 Date d'inscription dimanche 30 juin 2013 Statut Membre Dernière intervention 2 juillet 2013 - Modifié par Pseudoquires le 1/07/2013 à 04:04
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 2 juil. 2013 à 09:19
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 ?

Tous sa car trop long de calcul mon ordi ralenti avec le prmier calcul

3 réponses

eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 257
Modifié par eriiic le 1/07/2013 à 08:11
Bonjour,

Target est une variable qui t'est passée en paramètre.
Tu n'as pas à l'utiliser pour y stocker tes valeurs. Mais juste pour récupérer la cellule ayant provoqué l'évènement.

Déclare ta propre variable au début.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c as Range
For Each c In Range("D13:D262")
If c .Value = "" Or c.Value = 0 Then
...

Par contre l'évènement Change est appelé à chaque fois qu'une saisie change le contenu d'une cellule.
C'est peut-être inutile de balayer toute la plage, et tester quel est cette cellule et n'agir qu'à partir de celle-ci est peut-être suffisant.
Si c'est le cas :
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False
    If Not Intersect(Target, Range("D13:D262")) Is Nothing Then
        ' si target appartient à cette plage
        If Target.Value = "" Or Target.Value = 0 Then
            Target.Offset(0, -1) = 0
        End If
    ElseIf Not Intersect(Target, Range("J12:j262")) Is Nothing Then
        ' sinon si target appartient à cette plage
        If Target.Value = "" Or Target.Value = 0 Then
            Target = Target.Offset(0, 26)
        End If
    End If
    Application.ScreenUpdating = True
End Sub


Un des défaut des débutants est d'enchainer les questions.
Si celle-ci est résolue tu le marques en le cochant (en haut vers ton titre).
Et si tu en as une nouvelle (n'hésite pas à te servir de la touche F1 avant) tu démarres un nouveau fil.
Et lorsque tu mets du code met-le en forme avec l'icone <>

eric

Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
0
Pseudoquires Messages postés 5 Date d'inscription dimanche 30 juin 2013 Statut Membre Dernière intervention 2 juillet 2013
Modifié par Pseudoquires le 2/07/2013 à 06:14
Numéro Merci Bcp SE qui me bloquait Sé ou t'as écrit se commentaire
' si target appartient à cette plage
Je comprend pas pourquoi si y'a rien D'écrit après Then que ma cellule conserve l'insertion de l'utilisateur y'a un code a rentrer la ? Pour moi sa marche numéro 1 T'as formule Mais tent que je ne comprend pas pourquoi j'ai rien a insérer la je me sentirait pas bien ! ya pas un text qui vas la du genre keepuser entry? Ou

Target = Target.Value ?
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 257
2 juil. 2013 à 09:19
Bonjour,

désolé mais entre les fautes et le mauvais français, c'est incompréhensible.

eric
0
Pseudoquires Messages postés 5 Date d'inscription dimanche 30 juin 2013 Statut Membre Dernière intervention 2 juillet 2013
2 juil. 2013 à 06:22
ET autre petit problème qui survient aussi avec se code est que si l'utilisateur sélection plusieur cellule de cette même plage il me donne une erreur
0

Discussions similaires