bobbob83
Messages postés32Date d'inscriptionvendredi 27 juillet 2007StatutMembreDernière intervention22 novembre 2007
-
16 août 2007 à 14:05
bobbob83
Messages postés32Date d'inscriptionvendredi 27 juillet 2007StatutMembreDernière intervention22 novembre 2007
-
20 août 2007 à 20:57
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
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 17 août 2007 à 18:56
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)
bobbob83
Messages postés32Date d'inscriptionvendredi 27 juillet 2007StatutMembreDernière intervention22 novembre 2007 18 août 2007 à 02:29
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