Subroutine a chaque changement de valeur dune cellule

estimetm Messages postés 3 Date d'inscription mardi 22 mai 2012 Statut Membre Dernière intervention 23 mai 2012 - 22 mai 2012 à 21:08
estimetm Messages postés 3 Date d'inscription mardi 22 mai 2012 Statut Membre Dernière intervention 23 mai 2012 - 23 mai 2012 à 06:40
Bonjour,

J espère que vous pourrez m aider:

je cherche a faire que lorsqu on modifie la valeur d une cellule (par exemple 3), certaines lignes sont modifiées avec du texte et dans leur format.

J y suis presque, seulement mon problème est le suivant : je ne peux plus changer la valeur de la cellule une fois que la macro a deja été lancée... en gros je met B23 = 8 a la main et la ca me met 8 ligne remplie, seulement des que je selectionne a nouveau la cellule la macro se relance et me rempli mes 8 lignes comme elles letaient.

voici mon code:

Sub ajouterligne()

N = Val(Cells(23, 2))

Dim Ctr As Integer
For Ctr = 26 To (26 + N - 1)
Cells(Ctr, 1) = "surface" & (Ctr - 25)
Cells(Ctr, 1).Interior.ColorIndex = Cells(Ctr - 1, 1).Interior.ColorIndex
Cells(Ctr, 2).Interior.ColorIndex = Cells(Ctr - 1, 2).Interior.ColorIndex
Cells(Ctr, 3).Interior.ColorIndex = Cells(Ctr - 1, 3).Interior.ColorIndex
Cells(25, 3).Copy
Cells(Ctr, 3).PasteSpecial
Next

Dim Ctr2 As Integer
For Ctr2 = (26 + N) To 151
Cells(25, 10).Copy
Cells(Ctr2, 3).PasteSpecial
Cells(Ctr2, 1) = ""
Cells(Ctr2, 2) = ""
Cells(Ctr2, 3) = ""
Cells(Ctr2, 1).Interior.ColorIndex = Cells(19, 1).Interior.ColorIndex
Cells(Ctr2, 2).Interior.ColorIndex = Cells(19, 2).Interior.ColorIndex
Cells(Ctr2, 3).Interior.ColorIndex = Cells(19, 3).Interior.ColorIndex
Next

End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If ok = True Then Exit Sub
If Not Application.Intersect(Target, Range("B23")) Is Nothing Then
ok = True


N = Val(Cells(23, 2))

If Val(Cells(23, 2)) > 126 Then
MsgBox "Veuillez selectionner une donnée entre 1 et 126"
Else:

If Val(Cells(23, 2)) = 0 Then
MsgBox "Veuillez selectionner une donnée"
Else:

If Val(Cells(23, 2)) > 1 Then
Call ajouterligne


Cells(26, 2).Select


End If

End If
End If

ok = False
End If
end sub



voila j espere avoir ete compris et que vous pourrez m aider.

2 réponses

Utilisateur anonyme
23 mai 2012 à 02:41
Bonjour,

L'événement Worksheet_SelectionChange est activé dès que tu sélectionnes ta cellule. Sauf horreur de ma part, tu aurais plus de chance avec Worksheet_Change qui réagit, à la modification de la feuille.
0
estimetm Messages postés 3 Date d'inscription mardi 22 mai 2012 Statut Membre Dernière intervention 23 mai 2012
23 mai 2012 à 06:40
oui merci beaucoup j'ai eu la même reponse ailleurs.

merci!
0
Rejoignez-nous