Probleme avec un evenement private sub

Signaler
Messages postés
32
Date d'inscription
vendredi 27 juillet 2007
Statut
Membre
Dernière intervention
22 novembre 2007
-
Messages postés
32
Date d'inscription
vendredi 27 juillet 2007
Statut
Membre
Dernière intervention
22 novembre 2007
-
bonjour

j'ai une macro qui se lance avec le private sub si dessous qand je modifis la valeur de D2
la macro se lance si je tape directement le nombre dans la cellule D2 , mais si je mes une formule dans la cellule (exemple = A1-1) ça ne marche pas
pouriez vous me dire pourqoui ça ne fonctione pas avec une formule et comment faire pour régler le probleme

Merci

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim I As Integer
   
    If Target.Address(False, False) = "D2" Then
        For I = 0 To Target.Value - 1
            Range("D2").Offset(I, 0).Application.Run "Classeur1!Macro1"
        Next
    End If
   
End Sub

4 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
73
Salut
(Déjà corrigé dans ta question de 12:55 : Tu codes dans du Excel, c'est donc du VBA, pas du .Net ni du VB6)

Si "D2" contient "A1-1", c'est du texte pour lui.
Il faut donc lui demander de calculer cette valeur avant.Il faut donc envoyer le contenu dans une cellule intermédiaire et la précéder du signe    Range("W400").Value "=" & Target.Value
puis utiliser le résultat calculé dans W400 pour le reste

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
32
Date d'inscription
vendredi 27 juillet 2007
Statut
Membre
Dernière intervention
22 novembre 2007

Bonsoir, Jack merci pour ta réponse et désolé pour l erreur de post

MPI a ecrit se code dans mon post de 12:55

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim I As Integer
       If Target.Address(False, False) = "D2" Then
        For I = 1 To Target.Value - 1
      Macro1 I
      Next
     
    End If
End Sub

Sub Macro1(Décalage As Integer)

    Range("B8").Copy
   
    Range("B8").Offset(Décalage, 0).PasteSpecial Paste:=xlValues
End Sub

ça me donne le resultat que je shouaite , mais  je n'arrive pas a integrer ton code

Range("E2").Value = "=" & Target.Value

dans la celulle D2 la formule = B2-1
et E2 doit etre egale à D2 (avec ton code)

si je mes ton code dans le private sub ça me fait une erreur 13 "incompatibilité de type"

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim I As Integer
Range("E2").Value = "=" & Target.Value
       If Target.Address(False, False) = "E2" Then
        For I = 1 To Target.Value 
      Macro1 I
      Next
     
    End If
End Sub

deuxieme probleme E2 se calcule avec toutes les cellules alors quelle devrai prendre en compte la cellule D2 uniquement , si je saisie 5 en A1   D2 = 5, en A2 6 D2 recalcule = 6 ect...

comment faire pour lier la cellule E2 a la Cellule D2 pour eviter le recalcul avec la saisie d'une cellule tiers 

as tu une idée sur la question ??
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Regarde l'autre question et essaie de ne conserver qu'un seul post si tu ne veux pas qu'on se perde...

Dans un tu parles des cellules B2 et B8 plus celles d'en-dessous.
Dans celui-ci tu parles de E2, D2, A1,...

Si tu expliquais clairement ce que tu cherches à faire ?

MPi
Messages postés
32
Date d'inscription
vendredi 27 juillet 2007
Statut
Membre
Dernière intervention
22 novembre 2007

ok je continue sur l'autre post :



http://www.vbfrance.com/infomsg_PROBLEME-AVEC-PRIVATE-SUB-SUR-EXCEL-2000_998371.aspx



et j'explique

bobbob83